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

 
 
> Работа с DDR3, Неправильные данные при чтении
AlphaMil
сообщение Jan 5 2012, 05:37
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Блок MCB Spartan6 выдает при чтении всегда 32'hFFFF. Все сделал по руководству пользователя. Данные читаются из внутреннего для MCB FIFO на 64 слова. Информация в память пишется по другому каналу.
При функциональном моделировании все работает на ура....
Подскажите, где копать. Спасибо.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 27)
imperman
сообщение Jan 5 2012, 11:58
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 14-08-11
Из: Андорра
Пользователь №: 66 720



Цитата(AlphaMil @ Jan 5 2012, 07:37) *
Блок MCB Spartan6 выдает при чтении всегда 32'hFFFF. Все сделал по руководству пользователя. Данные читаются из внутреннего для MCB FIFO на 64 слова. Информация в память пишется по другому каналу.
При функциональном моделировании все работает на ура....
Подскажите, где копать. Спасибо.


Без кода (как минимум, детального описания алгоритма или ссылки на руководство по которому делаете) будет сложно помочь.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 5 2012, 12:40
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Ориентируюсь на ug388.
Код скорее всего ни при чем - при моделировании все работает, все констрейны выполняются.
Использую отладочную плату Avnet Spartan-6 LX150T Development Board. Проекты для нее есть только для EDK.
Может там сопротивления какие надо указывать. Вообще, что может привести к такому результату???
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 5 2012, 14:25
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(AlphaMil @ Jan 5 2012, 19:40) *
Ориентируюсь на ug388.
Код скорее всего ни при чем - при моделировании все работает, все констрейны выполняются.
Использую отладочную плату Avnet Spartan-6 LX150T Development Board. Проекты для нее есть только для EDK.
Может там сопротивления какие надо указывать. Вообще, что может привести к такому результату???

Из корки торчит сигнальчик calib_done. В каком он у вас положении? Вскочил в 1 или нет? Замечу, что любые транзакции к памяти возможны лишь после того,
как этот сигнал вскочит в 1.
Кроме того, проверьте UCF файл. Лучше взять "родной" от производителей дев борды. Распиновка UCF файла, сгенрённого MIGом должна соответствовать вашему железу.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 5 2012, 15:06
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Сигнал калибровки в 1. Все транзакции происходят после этого. Интересно, что внутреннее фифо заполняется чем-то. Т.е. этими 16hFFFF наверное. Файл ucf уже кучу раз перебирал...
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 5 2012, 17:10
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(AlphaMil @ Jan 5 2012, 22:06) *
Сигнал калибровки в 1. Все транзакции происходят после этого. Интересно, что внутреннее фифо заполняется чем-то. Т.е. этими 16hFFFF наверное. Файл ucf уже кучу раз перебирал...

Не совсем понял откуда взялось 16 бит - вроде у контроллера минимальная ширина шины данных 32 бита. С какого адреса читается 16hFFFF ? Неплохо бы прочитать ВСЮ память. Если даже преположить, что у вас не работает запись (WE забыли, или ещё что-то) то всё равно в каких-то адресах должны остаться следы работы калибровочной машины - паттерны типа 32hAAAAAAAA , 32h55555555 и т.п.
Example design, который генерится автоматом при генерации MIG работает на вашем железе?
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 5 2012, 17:34
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Виноват, конечно 32'hFFFFFFFF. Примерне проверял. Понадеялся на симуляцию.
Завтра обязательно проверю. Сигнал We не забыл - при симуляции все работает отлично.

Сообщение отредактировал AlphaMil - Jan 5 2012, 17:35
Go to the top of the page
 
+Quote Post
alexr22b
сообщение Jan 6 2012, 02:22
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 102
Регистрация: 11-10-04
Пользователь №: 849



Цитата(AlphaMil @ Jan 5 2012, 21:34) *
Виноват, конечно 32'hFFFFFFFF. Примерне проверял. Понадеялся на симуляцию.
Завтра обязательно проверю. Сигнал We не забыл - при симуляции все работает отлично.


Xilinx memory controller - полная лажа. Приходится делать полное выключение питаня чтоб он заработал. Иначе при перезаливке прошивки результаты такие же как и у вас.
Про то что сделанная с нуля по инструкциям Xilinx система вообше не работает я уже молчу - пришлось начинать с работаюшего Xilinx примера.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 6 2012, 05:15
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Т.е, alexr22b, надо заливать во флешку и тогда при включении питания должно работать???
А что хилые по этому поводу говорят? Информации нет??
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 6 2012, 06:47
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Попробовал залить во влешку и перезапустить с выключением питания, не спасло.
Вообще плата рабочая - дефолтный проект идет, а память там используется.
Go to the top of the page
 
+Quote Post
wolfman
сообщение Jan 6 2012, 11:46
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032



Цитата(AlphaMil @ Jan 6 2012, 17:17) *
Попробовал залить во влешку и перезапустить с выключением питания, не спасло.
Вообще плата рабочая - дефолтный проект идет, а память там используется.


Гм, а ресет у вас правильный?


--------------------
Россия это даже не страна.
Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 6 2012, 12:21
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Извините, но что значит правильный?
Контроллер сбросить надо после включения? У меня сразу сброс контроллера на 0 подключен.

Сообщение отредактировал AlphaMil - Jan 6 2012, 12:26
Go to the top of the page
 
+Quote Post
wolfman
сообщение Jan 6 2012, 15:55
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032



Цитата(AlphaMil @ Jan 6 2012, 21:51) *
Извините, но что значит правильный?
Контроллер сбросить надо после включения? У меня сразу сброс контроллера на 0 подключен.


Вы пишите, что проект хилых работает, а ваш нет. Как вариант вы используете не тот логический уровень сигнала ресет.


--------------------
Россия это даже не страна.
Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 6 2012, 17:58
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Проверил, все сигналы такие, какие должны быть. Проблема в сигнале сброса всего ядра. Читаю AR#35976, там эта проблема описывается. Если в проекте хилых сброс тоже сразу на 0 замкнуть - не работает.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 6 2012, 20:34
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Проблема решена. Все дело оказалось именно в том, что сигнал сброса нельзя кидать на 0. Через счетчик сделал сброс и все заработало.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 7 2012, 04:41
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(alexr22b @ Jan 6 2012, 09:22) *
Xilinx memory controller - полная лажа. Приходится делать полное выключение питаня чтоб он заработал. Иначе при перезаливке прошивки результаты такие же как и у вас.
Про то что сделанная с нуля по инструкциям Xilinx система вообше не работает я уже молчу - пришлось начинать с работаюшего Xilinx примера.

Значит референсный пример от Xilinx всё таки работает? Тогда у кого лажа-то? Или вам просто религия не позволяет вдумчиво читать документацию?

Go to the top of the page
 
+Quote Post
Wic
сообщение Jan 7 2012, 07:26
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 183
Регистрация: 16-03-08
Из: Новосибирск
Пользователь №: 35 954



Скорей лажа в недостатке пошаговых примеров, где всё понятно и доступно объясняются основные принципы работы с soc, а так же даются ссылки на соответствующие разделы документации. Ибо найти такой тонкий момент в огромной документации для новичков непосильная задача.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 7 2012, 07:29
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Полностью согласен с Wic.
Мне что бы разобраться в ошибке именно ХИЛЫХ, а не моей пришлось потратить кучу времени и перерыть много литературы. Почему информации по этой проблеме нет в ug388????
Go to the top of the page
 
+Quote Post
wolfman
сообщение Jan 7 2012, 08:08
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032



Ну в обще-то вполне логично предположить, что если ваш проект не работает, то какого-то сигнала не хватает. Следовательно необходимо читать информацию про сигналы, которые используете и/или по какой-то причине не стали использовать.


--------------------
Россия это даже не страна.
Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 7 2012, 08:30
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Почему не хватает??? Он мирно находится в неактивном состоянии, а я считаю что после включения питания контроллер памяти находится в состоянии как после сброса (т.е. исходном)... И дело там не в том что сигнал сброшен, просто они ошиблись в схемотехнике и требуют дополнительного сброса для правильного запуска тактирующих цепей.
Go to the top of the page
 
+Quote Post
Wic
сообщение Jan 7 2012, 10:58
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 183
Регистрация: 16-03-08
Из: Новосибирск
Пользователь №: 35 954



wolfman, логично для тех, кто уже прошел начальную стадию =) Когда сам начинал копать альтеровскую документацию, наматерился. Итог работы был печален почти 8 дней ковыряния для постижения основ, а сейчас основы soc для циклона могу объяснить за час полтора. Это можно считать таким тестом для доступа в разработчики на FPGA =)
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 7 2012, 16:50
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(AlphaMil @ Jan 7 2012, 15:30) *
Почему не хватает??? Он мирно находится в неактивном состоянии, а я считаю что после включения питания контроллер памяти находится в состоянии как после сброса (т.е. исходном)... И дело там не в том что сигнал сброшен, просто они ошиблись в схемотехнике и требуют дополнительного сброса для правильного запуска тактирующих цепей.

Ни в чём они не ошиблись. Большинство более-менее серьёзных корок от Xilinx всегда требуют наличия внешнего ресета. Потому что только так можно установить сложную систему в известное состояние. По-другому это сделать просто невозможно. Надеяться на то, что после загрузки всё само собой встанет так как надо нельзя в сложных системах, хотя бы потому, что момент перехода из неактивного состояния в активное может превышать период клока системы, соответственно возможны самые причудливые эффекты при неодновременном выходе (всилу банальных задержек на распространение сигнала) системы из состояние сброса. Вообще-то это - прописные истины. Можно например про это прочитать у Кена Чапмена или других гуру. Странно что вы этого не знаете, и не думаю что вина Xilinx в том, что эти банальности они не разжёвывают в каждом UG.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 7 2012, 17:47
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



А зачем тогда секция initial???
Получается сброс нужно назначать на один из пинов и делать внешним. Или как я делать - корректировать файлы ядра что бы добавить туда код для сброса. Т.к. вход ядра сразу подключается на клоковый пин ПЛИС и выход хоть какого клока есть только после сбрасываемого PLL!!!! Так как делать в этом случае, если хилые сами этого не сделали? И даже в UG об этом не написали????
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 8 2012, 08:59
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(AlphaMil @ Jan 8 2012, 00:47) *
А зачем тогда секция initial???
Получается сброс нужно назначать на один из пинов и делать внешним. Или как я делать - корректировать файлы ядра что бы добавить туда код для сброса. Т.к. вход ядра сразу подключается на клоковый пин ПЛИС и выход хоть какого клока есть только после сбрасываемого PLL!!!! Так как делать в этом случае, если хилые сами этого не сделали? И даже в UG об этом не написали????

Вообще-то initial - несинтезируемая конструкция. Используется только для симуляции.Правда хилые зачем-то использовали это (грязный хак по-моему) для начальной установки триггеров. Клоковые пины выведены наружу только в примере, а не в самой корке. Как вы будете получать эти клоки - ваше личное дело.Корка тут ни при чём.Исходные клоки вам нужны в любом случае, при чём частота этих клоков в общем случае может быть не кратна, и даже несинхронаа частоте работы контроллера. Теоретически вы можете запихивать данные в фифошки с одной частотой, а контроллер будет работать на другой частоте.В большинстве члучаев так и происходит - контроллер работает на частоте большей, чем каждый из портов чтобы успевать обслуживать несколько портов. В общем то, что вам нужны как минимум свои клоки, не связанные с контроллером - это понятно? Хилые рекомендуют чтобы эти клоки были кратны частоте контроллера, однако это необязательно. Ну а как сделать сброс имея свои клоки по включению питания - это совсем просто.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Jan 8 2012, 10:36
Сообщение #25


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



У меня в проекте, да и на отладочной плате один клок 100МГц. И этого достаточно... Из него можно получить все частоты, которые мне нужны. Возможно Вы меня не поняли - клоковый вход корки ДОЛЖЕН быть подключен к клоковому пину, там даже IBUFG сразу стоит... По этому пришлось менять код ядра, т.е. добавлять внутрь цепи сброса.
Go to the top of the page
 
+Quote Post
alexr22b
сообщение Jan 8 2012, 19:03
Сообщение #26


Частый гость
**

Группа: Свой
Сообщений: 102
Регистрация: 11-10-04
Пользователь №: 849



Цитата(Bad0512 @ Jan 7 2012, 08:41) *
Значит референсный пример от Xilinx всё таки работает? Тогда у кого лажа-то? Или вам просто религия не позволяет вдумчиво читать документацию?

Xilinx пример не работает при перезаливке на работающем чипе. Это происходит не всегда. Какие-то вероятностные штуки. Документация у Xilinx почти никогда не рассматривает corner-cases. Вдумчиво читать её непомогает. У них происходить индунизация разработки и support, в примерах все работает а шаг в сторону - дрова. На вопрос - почему ? support отвечает "незнаем, делайте как у нас, у нас все работает".
Причина редактирования: убрал резкие выражения (с) модератор
Go to the top of the page
 
+Quote Post
svedach
сообщение Jan 9 2012, 04:37
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Да и что читать-то, в упомянутом UG про проблему эту ни слова нет...
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 9 2012, 06:09
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(AlphaMil @ Jan 8 2012, 17:36) *
У меня в проекте, да и на отладочной плате один клок 100МГц. И этого достаточно... Из него можно получить все частоты, которые мне нужны. Возможно Вы меня не поняли - клоковый вход корки ДОЛЖЕН быть подключен к клоковому пину, там даже IBUFG сразу стоит... По этому пришлось менять код ядра, т.е. добавлять внутрь цепи сброса.

Весь связанный с клоками код вынесен в отдельный модуль infrastructure.v специально для того, чтобы была некоторая свобода в выборе и способе генерации клоков. Этот модуль не входит в состав корки враппера, но он входит в состав example_design, так как без него пример работать не будет. Вам никто не запрещает сделать так, что весь дизайн будет работать от 100МГц - возможно даже удастся обойтись всего одной PLL для этого. Но составители примеров Xilinx не знают об этом вашем уникальном пожелании, поэтому они делают так чтобы всё работало на большинстве демоплаточек с минимальными имзменнениями в коде (в данном случае под каждый конкретный дизайн надо только лишь UCF поправить). И наконец для того, чтобы была некоторая свобода в том,как и где генерировать нужные клоки, они выносят из состава враппера наружу, в отдельный модуль, все клоковые дела для того, чтобы вам не пришлось лезть глубоко внутрь коры с целью что-то поменять в клоках.Доступно объясняю?
Сброс, повторяю, этому дизайну необходим отдельный, и (желательно) никак не завязанный на выходные клоки с ПЛЛки, потому что если пллка перестанет генерить клок (такое бывает, напрмер, когда на входе у неё клок умирает), то и сброс работать не сможет - получается deadlock.
Кроме того, по сбросу автоматически происходит перекалибровка задержек, его можно использовать для принудительной перекалибровки если к примеру темепература сильно ушла в соторону от номинала.
Go to the top of the page
 
+Quote Post

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

 


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


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