реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблема с local_init_done в контроллере DDR2 (Altera)
vikS
сообщение Nov 27 2015, 07:48
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 14-09-05
Пользователь №: 8 562



Проект разработан в 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-м

Go to the top of the page
 
+Quote Post
DuHast
сообщение Nov 29 2015, 16:57
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(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. Плисовод в состоянии либо исправить эту проблему, либо четко указать на неё разработчику платы.
Go to the top of the page
 
+Quote Post
krux
сообщение Nov 29 2015, 19:23
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



оба контроллера подключены от одного тактового?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
vikS
сообщение Dec 4 2015, 14:20
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 14-09-05
Пользователь №: 8 562



Контроллеры подключены каждый со своей референсной (40 МГц), с внешних выводов. И судя по пдф - с тех что подходят для контроллеров ddr2
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 17:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01707 секунд с 7
ELECTRONIX ©2004-2016