1891ВМ12Я 0 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Есть такая SK-AT91SAM9G45-XC6SLX платка, на ней верчу MicroBlaze и встроенной в ПЛИС памяти уже не хватает, решил использовать DDR. К платке поставляется демка, на ней есть процессор и DDR2 память работает. Хотелось бы поинтересоваться, есть ли какое-либо особое специальное руководство по тому как подключать DDR память к MicroBlaze? Ведь это не такой простой процесс, но поиски не увенчались хорошими результатами. Второй возможный путь - использовать существующий проект как основу, но вопрос - какие файлы отвечают за параметры контроллера DDR? Чтобы можно было подсмотреть их и просто применить у себя. Пока что попытки не увенчались успехом. Сделать самому (не брать готовое, но подсмотреть) желательно, т.к. хочется производить настройки всяких кэшей памятей и прочее... Сам же исходный рабочий проект не открывается т.к. жалуется на "ERROR:EDK - IPNAME: microblaze, INSTANCE: microblaze_0 - cannot find MPD for the pcore 'microblaze_v8_00_a' in any of the repositories -", видимо в тестовом проекте всё очень старое, потому и есть острая необходимость понять что именно надо смотреть в нем чтобы правильно подключить DDR... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Corvus 1 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Так в XPS же понятный и подробный мастер на этот случай есть. Вплоть до того, что кучи чипов памяти готовые настройки, надо только название своей в списке найти. Для примера можно взять какую-нить отладку от Avnet и скачать пример к ней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Есть два пути, первый - попытаться изменить версии IP-ядер в проекте и открыть его в новом ISE/XPS. Возможны осложнения, но 8.00 не такое уж старое ядро. Второй, более правильный - создать проект с нуля и следовать подсказкам мастеров. У MPMC (MIG) свой большой мастер, где самое скучное - задание распиновки (для Sparten-6 это проще). Таким образом можно самостоятельно воссоздать тестовый проект. Кроме того, можно создать не PLB-проект с MPMC, а AXI-проект с AXI-контроллером памяти, он вроде поддерживается для S6. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Так в XPS же понятный и подробный мастер на этот случай есть. Вплоть до того, что кучи чипов памяти готовые настройки, надо только название своей в списке найти. Для примера можно взять какую-нить отладку от Avnet и скачать пример к ней.как раз смотрю на ютубе сейчас " Xilinx EDK Tutorial - Adding MPMC to an EDK Project" в самом деле там всё из под вывиха, судя по всему запускается coregen отдельный для MIG, а вот как его связывать с проектом - не сильно ясно постараюсь найти PDF... помнится что у Nios2 этот процесс был "всё в одном окне", никаких специальных скриптов и прочего лишнего, видимо тут сложнее... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Второй, более правильный - создать проект с нуля и следовать подсказкам мастеров. У MPMC (MIG) свой большой мастер, где самое скучное - задание распиновки (для Sparten-6 это проще). Таким образом можно самостоятельно воссоздать тестовый проект.Мне не понятны азы... 1) я создал microblaze, доабвил туда I2C UART и заодно MPMC (указал MCB_DDR2) 2) далее, внутри настроек MPMC я указал свой тип памяти (у меня полный аналог MT47H32M16) 3) следуя туториалу от Avnet я отдельно запустил coregen и выбрал там MIG, накликал под свой тип памяти - но что делать с ним дальше? зачем я выполнил пункт 3? Возможно 3) был лишним? Зачем в туториале показали всё это? Пока что не вижу логики во всём этом процессе... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Возможно, п.3. был лишним. Чтобы он был нужен, можно создать процессор без контроллера памяти в п.1. Но лучше просто выбросить шаг 3. Разночтения возникают только из-за использования разных туториалов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 6 ноября, 2012 Опубликовано 6 ноября, 2012 · Жалоба Возможно, п.3. был лишним. Чтобы он был нужен, можно создать процессор без контроллера памяти в п.1. Но лучше просто выбросить шаг 3.Спасибо! Заработало! На скорую руку написал тест, правда медленно работает если и код и данные и стек и heap всё в DDR2 (жаль что heap отдельно от стека не получается установить, ругается) - запись 100000 байт с инкрементным числом и чтение затем (и сверка) занимает одну секунду, медленно... Но я и этому рад, в самом деле пришлось применять бубен и магические заклинания чтобы всё срослось. Если можно, несколько вопросов: 1) Как повысить скорость? Очевидно надо добавить как минимум I и D кэши (почему-то при создании процессора с контроллером возникала какая-то ошибка при генерации netlist-а, поэтому решил временно отключить). Можно ли их добавить уже после визарда создания microblaze? 2) Как же инициализировать DDR кодом программы (если использую не только для хранения временных данных а именно кода)? ELF файл в котором ссылается на DDR память (и вообще вне BRAM-ную память) получается залить только через XMD console - тут подробнее кому надо, просто не через GUI делается. В дальнейшем мне потребуется для этих же целей подключать SRAM на платке, на которой ПЛИСина грузится из SPI - bit файл понятно будет там, но как же инициализировать SRAM или DDR своей программой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 6 ноября, 2012 Опубликовано 6 ноября, 2012 · Жалоба Насчет кешей не подскажу, т.к. использую только AXI-вариант процессора, там основная шина подключается через кэш (порты IC, DC) и все понятно само собой. Загрузку программы во внешнюю память должен делать бутлоадер, стартующий из внутренней памяти (BRAM). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 6 ноября, 2012 Опубликовано 6 ноября, 2012 · Жалоба Присоединяюсь у предыдущему ответу. SPI бутлоадер нашел из примеров Xilinx, занимает около 10 килобайт, встраивается в BRAM, при старте грузит srec из SPI flash в DDR. Все работает шустро и надежно. Что касается DDR2 - в варианте AXI надо было в визарде выбрать банк, тип (или переписать из datasheet параметры custom), частоту - и все заработало сразу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 7 ноября, 2012 Опубликовано 7 ноября, 2012 · Жалоба А мануал по подключению внешней памяти к MCB Вы прочитали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 12 ноября, 2012 Опубликовано 12 ноября, 2012 · Жалоба Присоединяюсь у предыдущему ответу. SPI бутлоадер нашел из примеров Xilinx, занимает около 10 килобайт, встраивается в BRAM, при старте грузит srec из SPI flash в DDR. Все работает шустро и надежно. Что касается DDR2 - в варианте AXI надо было в визарде выбрать банк, тип (или переписать из datasheet параметры custom), частоту - и все заработало сразу. Спасибо за подсказку, буду смотреть этот бутлоадер - как раз из SPI-ной флэшки надо. Сделал систему на базе AXI с кэшами и т.д. - теперь и из BRAM и из DDR2 одинаково быстро работает, замерял. Почему-то первый раз были какие-то ошибки которые я побоялся исправить, а сейчас понял что при создании проекта в XPS некоторые порты имеют неправильную ширину, но если их вручную поправить - всё работает корректно. Кроме того, еще одна проблема, решение которой я нашел тут ввиде ручного редактирования *.xmp файла: How can I make a single-ended clock for microblaze, а если не сделать как там написано вручную то на этапе translate можно получить ошибку которую совершенно не ясно было как решать и чем она вызвана. Большое всем спасибо за участие! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimidrol 0 27 ноября, 2012 Опубликовано 27 ноября, 2012 · Жалоба А может кто-нибудь сделать скриншоты настроек кэша Микроблейза в случае системы на AXI и скриншот конфигурации системы. А то я что-то этот кэш включил, а скорость вообще не изменилась. Получилось что-то около 10 МБ/c на запись и 20 МБ/c на чтение, вроде бы мало. Память DDR2 400/800 128МБ шина 16 бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 30 ноября, 2012 Опубликовано 30 ноября, 2012 · Жалоба А может кто-нибудь сделать скриншоты настроек кэша Микроблейза в случае системы на AXI и скриншот конфигурации системы. А то я что-то этот кэш включил, а скорость вообще не изменилась. Получилось что-то около 10 МБ/c на запись и 20 МБ/c на чтение, вроде бы мало. Память DDR2 400/800 128МБ шина 16 бит. Вот скриншот нашей системы. Доступ до DDR через кэш такой же быстрый как и до локальной памяти по шине LMB. Без кэша тормозит жутко. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimidrol 0 5 декабря, 2012 Опубликовано 5 декабря, 2012 · Жалоба Да, я конечно не правильно делал. Сейчас все подключил как надо, поигрался с настройками, получил скорость на последовательном чтении-записи. На запись 477 МБ/с, на чтение 151 МБ/с. От настроек при таком раскладе не сильно зависит скорость. Может быть при случайном доступе будут другие цифры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 15 декабря, 2012 Опубликовано 15 декабря, 2012 · Жалоба Может быть при случайном доступе будут другие цифры.от типа кэша зависит, вот в Mircorblaze даже из версий 14.3 I/D кэши "Direct mapped (1-way associative)" - так что при случайном доступе больше чем на размер кэша - обломайзинг (если я правильно впитал содержимое статей объясняющих принцип и строение кэша как такового...) хотя если совсем случайный доступ, то в любом случае будет черепашка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться