Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с local_init_done в контроллере DDR2 (Altera)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
vikS
Проект разработан в Quartus II 13.1, ПЛИС - Cyclone IV GX, контроллер DDR2 (altmemphy) работает на 165 МГц, микросхема памяти MT47H64M16.
После включения питания калибровка контроллера DDR2 выполняется и сигнал local_init_done устанавливается в 1.
Но затем может в любой момент времени local_init_done стать 0. Иногда после этого работа контроллера восстанавливается, а иногда
сигнал валидности данных не возвращается - и система повисает.
Не могли бы подсказать причины такого поведения local_init_done??
И еще, в ПЛИС таких контроллеров два, с идентичными настройками - и один работает корректно, а второй падает. Работающий контроллер в 8 банке ПЛИС,
неработающий расположен в 3-м

DuHast
Цитата(vikS @ Nov 27 2015, 10:48) *
После включения питания калибровка контроллера DDR2 выполняется и сигнал local_init_done устанавливается в 1.
Но затем может в любой момент времени local_init_done стать 0.

Была похожая проблема, правда с QDR.
Просто опишу свою ситуацию, может Вам поможет.
После включения пита local_init_done иногда устанавливался в 0. Причем, как и у Вас только на одной из двух микросхем.
Выяснил, что контроллер при включении питания пишет по нулевому адресу 0x55 и потом пытается вычитать его от туда, меняя при этом задержки толи шины данных, клока (калибрует). Если удачно, то local_init_done <= 1 иначе local_init_done <= 0. При дальнейшей работе калибровка не проводится ( у Вас не так, может потому что DDR2).
Внимательно почитав доки на altmemphy, понял, что на плате перепутана полярность дифференциального клока, и не потому что разводчик платы "редиска", а потому, что в альтеровских доках мелким шрифтом на 100 какой-то странице написано " если ваша память работает по циклу 2.5 или 3.5, то заводите сигнал положительной полярности на вход с отрицательной полярностью и наоборот". Поскольку плату переделать я не мог, то пришлось констрейнами уговорить Quartus , задержать входной клок на пол периода, что получилось.
Далее с local_init_done проблем не было, но были проблемы с тем, что из памяти не всегда читалось то, что туда писалось, особенно если ПЛИС была хорошо закружена. На этот раз проблема была в нехватке питания, и плату пришлось дорабатывать напильником.
Может, я написал немного сумбурно на из моего опыта работы с различными высокоскоростными интерфейсами могу сделать следующие выводы:
1. Зачастую это проблема печатной платы
2. Плисовод в состоянии либо исправить эту проблему, либо четко указать на неё разработчику платы.
krux
оба контроллера подключены от одного тактового?
vikS
Контроллеры подключены каждый со своей референсной (40 МГц), с внешних выводов. И судя по пдф - с тех что подходят для контроллеров ddr2
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.