Полная версия этой страницы:
DDR2 + Cyclon V
UltraLord
Sep 14 2016, 07:43
Здравствуйте!
Прошу помощи, в первые столкнулся с работой DDR2. У нас есть своя кастомная плата с DDR2 MT47H64M16HR-3IT (есть в контроллере UniPHY) и Cyclon V. Компиляция проекта проходит успешно, но возникает следующая проблема, при добавлении контроллера DDR2 в Qsys, ниоc прекращает работать. Проект в eclips с ниосом при дебаге запускается, но тупо зависает и ничего не происходит. Даже не знаю, где копать, понятно что где-то в DDR, но что именно может вызывать подобный эффект?
alexadmin
Sep 14 2016, 09:27
Цитата(UltraLord @ Sep 14 2016, 10:43)

при добавлении контроллера DDR2 в Qsys, ниоc прекращает работать. Проект в eclips с ниосом при дебаге запускается, но тупо зависает и ничего не происходит. Даже не знаю, где копать, понятно что где-то в DDR, но что именно может вызывать подобный эффект?
Вероятнее всего зависает транзакция на шине при обращении к области памяти DDR, а значит контроллер не может корректно взаимодействовать с памятью. Причин может быть миллион - неправильные подключения управляющих сигналов, неправильные настройки параметров памяти, проблемы с времянками.
Koluchiy
Sep 14 2016, 15:00
На 81% уверен, что дело в том, что при появлении в системе DDR, компилятор начинает пихать в нее программу для Ниоса.
А поскольку, вероятно, DDR не работает (по одной или нескольким из миллиона причинам), то весь Ниос не работает.
Лечится редактированием файла "linker script".
Inanity
Sep 15 2016, 12:32
Как верно приметили выше, причин почему может не работать слишком много. Делайте всё последовательно. Сначала просто подключите DDR к процу и сделайте memtest памяти DDR. Код при этом должен выполняться из BRAM. Потом можно все вектора и код поместить в DDR.
P.S. для начала, почему у вас instruction_master проца не подключен к DDR?
Sergey_Bekrenyov
Sep 28 2016, 15:32
проверьте сбросы - по-моему jtag_debug_reset должен заходить на сброс ddr
SamuraY
Sep 28 2016, 22:14
Как раз недавно столкнулся с подобнной ситуацией. Как правильно указали выше, все ломалось на попытке загрузить через JTAG прогу на выполнение из DDR SDRAM, при неправильно работающем контроллере памяти. Если добавить в SoC внутреннюю блочную память и в настройках linker script BSP указать эту самую блочную память для всех сегментов, программа запустится из блочной памяти. Но проблема с неработающей DDR SDRAM останется. Причин тому может быть миллион (но скорее всего неправильные настройки контроллера памяти).
UltraLord
Oct 11 2016, 08:08
Разбираясь дальше с DDR2, переделал проект в 14 квартусе. Программу запускаю из под блочной памяти (указываю в настройках BSP). Так же настроил тайминги, для памяти и для платы, проблема от части решилась. Отладка запускается, память DDR2 видна, но не проходит тест записи данных, вернее может пройти, а может и нет (считанные данные не соответствуют записанным), а может и вовсе зависнуть. Ниже скриншот глазковых диаграмм и по нему видно, что есть проблемы, с линиями DQ11, DQ4, DM1, DM0, DQS0, DQS1. Кстати раньше были проблемы со всеми линиями, после включения ODT, остались проблемы только с этими. В чем причина и как с этим бороться, я пока не понимаю. Бывает, так что все диаграммы в норме, тогда и проходит тест, но во время полного теста памяти, диаграммы меняются. Для выше перечисленных линий, до нуля, для всех остальных незначительно.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.