Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MicroBlaze. Ошибки в работе с DDR3 памятью
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Чиповод
Здравствуйте,

в проекте с MicroBlaze использую контроллер DDR3 памяти - axi_s6_ddrx. Все работает хорошо, но время от времени при переразводке проекта возникает такой симптом: начинаю дебажить программу в SDK, программа грузится, иду по шагам, после нескольких шагов получаю сообщение вида

Код
Error: MicroBlaze Pipeline Stalled on a Blocking Instruction or Invalid Bus Access
    Stalled PC: 0xc0000030
Try Resetting the Processor to Continue..


Код грузится во внешнюю DDR3 память. Причем, если не повезло с разводкой ошибка возникает всегда, только на разных адресах. Бывает что программа вообще не загружается, не проходит проверка elf файла.

Насколько я понимаю происходит неправильное чтение инструкции из DDR3 памяти и MicroBlaze дает клина. Т.е проблема в DDR3 контроллере. Частота DDR3 памяти 300МГц.

Кристалл забит на 80% и я понимаю, что это не очень хорошо. Из констрейнов относящихся к теме, имеется по сути один - на тактовую частоту входного клока, который идет на корку clock_generator. Он выполняется.

Нужны ли какие-нибудь констрейны для правильной работы DDR3 контроллера или за всем этим следит генератор корок?
DmitryR
Генератор корок генерирует констрейны (в отдельный UCF файл), а вы разумеется должны этот файл включить в свой проект и добиться выполнения всех констрейнов в нем.
Чиповод
Ага, он генерирует и сам подключает, но там только констрейны касающиеся размещения пинов, несколько TIG, а констрейнов на клоки или данные нет.
DmitryR
Плату сами делали или на ките гоняете?
Чиповод
Использую доску SP-605, по схематику на ней стоит MT41J64M16LA-187E. На самом деле, кажется что-то другое, по крайней мере логотипа микрона не видно. Кристалл на ней со спидгрейдом -3, НЕ инженерный сэмпл, слава Богу.
Kuzmi4
2 Чиповод
у меня SP-605 с ES чипом, память микроновская. DDR3 пробовал давно и без Blaze-а, но бегало без ошибок laughing.gif
Чиповод
Цитата(Kuzmi4 @ Sep 26 2011, 10:02) *
2 Чиповод
у меня SP-605 с ES чипом, память микроновская. DDR3 пробовал давно и без Blaze-а, но бегало без ошибок laughing.gif
Это хорошо, а то народ жалуется, что в инженерных сэмплах MCB сырой был. А как вы кстати тестировали на ошибки?

Я тут разбираюсь со своими зверушками. Clock для памяти среда XPS предложила мне сделать без глобальных клоковых буферов. Я, в таком случае, решил зажать его констрейном MAX_SKEW. Это помогло, из 8 разводок - 7 оказалось удачных (раньше было примерно 50 на 50). Но нужно, конечно, окончательно разобраться.
Kuzmi4
Цитата(Чиповод @ Sep 26 2011, 09:37) *
..А как вы кстати тестировали на ошибки?....

Та вот начитался я как и вы про "сырой MCB", ну и наваял специально проектиГ - там внутри всё проверялось, генерились тестовые паттерны по разному. После проверки отправлялся результат (+ подсветка леда если ошибка хоть одна была ), и всё запускалось по кругу. "Беспредела" не было замечено wink.gif
DmitryR
Цитата(Чиповод @ Sep 26 2011, 08:36) *
На сааметрами памчмом деле, кажется что-то другое

В этом может быть проблема, если у той микрухи например CAS Latency другая.
Koluchiy
Гонял немножко DDR3 на SP605 с ES.
Особо хитрых тестов не генерил, но в тех, которые генерил, проблем не было.
Sergey_Bekrenyov
Помнится раньше у Xilinx были софтовые тесты для памяти. Может попробовать маленький софтик в BRAM, а DDR3 затестировать насмерть?
Чиповод
Цитата
Помнится раньше у Xilinx были софтовые тесты для памяти. Может попробовать маленький софтик в BRAM, а DDR3 затестировать насмерть?
Проблема в том, что ошибки я вижу так сказать не вооруженным глазом, но бывает так, что целый день работаю без ошибок. Все зависит от везения в разводке.

Вообщем подозрение с самой микросхемы DDR3 памяти и сырости MCB Спартана я решил пока снять. Плата SP-605 Rev.D, микросхема оказалась все-таки Micron, та самая что на схематике.

Пока лечил свой проект тем, что лочил в PlanAhead кусок с axi_ddr коркой, это работало, но при каждом серьезном изменении проекта эту работу приходилось делать заново, иначе Router не мог развести проект.

Сейчас я временно облегчил проект до 60% - проблема исчезла.

Koluchiy
Уже не очень хорошо помню, но вообще там было достаточно много требований к тому, как генерить различные частоты для MCB.
Соблюдены ли эти требования?

P.S. Была такая корка, уже не помню, то ли на S3, то ли на V5, то ли на S6.
Пошли ошибки при выполнении из SDRAM (не помню, какая конкретно память).
Оказалось, что в начале программы был маленький тестик этой самой SDRAM, который писал всякое поверх кода sm.gif.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.