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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Помогите запустить MCB, Spartan6 + ddr3
Nosss
сообщение Mar 2 2011, 08:47
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 57
Регистрация: 11-07-06
Пользователь №: 18 747



Здравствуйте! Есть ПЛИС Spartan-6 xc6slx150-3fgg484 и внешняя память DDR3 MT41J64M16LA-187E. Память подключена к третьему банку ПЛИС. Частота работы с памятью 300 МГц.

В ISE12.4 сделал проект контроллера памяти с помощью MIG. В проекте оставил один двунаправленный порт х32. Взял example_design. Отмоделировал - все в порядке. А вот при тестировании в железе начались проблемы, которые никак не удается победить. Проблемы двух типов:

1) При чтении пачки данных одно из данных застревает на выходе FIFO на несколько тактов. При этом часть данных теряется. Эта ситуация показана на картинке error1. Ошибка повторяется время от времени в процессе тестирования. Данная ошибка, как выяснилось, зависит от частоты работы. На 250 МГц ее вероятность намного меньше, а на 200 МГц она вообще пропадает. Также ситуация стала лучше после того, как поменял настройку Unused IOB Pins = Float на Pull Down в свойствах генерации программного файла.

2) Начиная с какого-то момента, контроллер просто перестает выполнять новые запросы. В результате переполняется командное FIFO и тест останавливается. Вероятность этой ошибки зависит от диапазона тестируемых адресов. Если значение параметра C3_HW_TESTING = "FALSE", то встречается она очень редко. Если же поставить "TRUE" - ошибка происходит тут же при начале тестирования. Такая ситуация повторяется на любой частоте от 200 до 300 МГц.

В чем тут может быть дело?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 2 2011, 09:27
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Что за плата?
Go to the top of the page
 
+Quote Post
Nosss
сообщение Mar 2 2011, 10:34
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 57
Регистрация: 11-07-06
Пользователь №: 18 747



Плата dini-group DNBFC_S12_PCIe. Можно здесь посмотреть на этого зверя http://www.dinigroup.com/new/DNBFC_S12_PCIe.html
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 2 2011, 11:06
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



С такими платами обычно поставляется reference design и тест.
Вообще-то, они пишут про 400 MHz.
Go to the top of the page
 
+Quote Post
Nosss
сообщение Mar 2 2011, 11:31
Сообщение #5


Участник
*

Группа: Свой
Сообщений: 57
Регистрация: 11-07-06
Пользователь №: 18 747



Цитата(Shtirlits @ Mar 2 2011, 14:06) *
С такими платами обычно поставляется reference design и тест.

Да, действительно, есть и reference design и тест. Их тест тоже выдает ошибку, но понять что она значит довольно трудно. Документация у них, мягко говоря, очень скудная. А удовольствие ковыряться в чужом коде я оставил себе напоследок, решив, что проще будет самому сделать. Ведь на первый взгляд ничего сложного... rolleyes.gif
Цитата(Shtirlits @ Mar 2 2011, 14:06) *
Вообще-то, они пишут про 400 MHz.

Если можно работать с памятью на 400, то и на 300 можно. Ограничений здесь ни со стороны памяти, ни со стороны ПЛИС я не вижу. Кстати, reference design у них как раз на 300 работает.
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 2 2011, 11:36
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Так он работает или выдает ошибку?
Запросто может быть что-то физически негодным и плату надо менять.
Она у вас одна? Другой экземпляр не пробовали?
Я не уверен, что контроллер в спартане поддерживает 400MHz - надо взглянуть в документацию.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Mar 2 2011, 11:44
Сообщение #7


Знающий
****

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



Цитата(Nosss @ Mar 2 2011, 14:47) *
Здравствуйте! Есть ПЛИС Spartan-6 xc6slx150-3fgg484 и внешняя память DDR3 MT41J64M16LA-187E. Память подключена к третьему банку ПЛИС. Частота работы с памятью 300 МГц.

В ISE12.4 сделал проект контроллера памяти с помощью MIG. В проекте оставил один двунаправленный порт х32. Взял example_design. Отмоделировал - все в порядке. А вот при тестировании в железе начались проблемы, которые никак не удается победить. Проблемы двух типов:

1) При чтении пачки данных одно из данных застревает на выходе FIFO на несколько тактов. При этом часть данных теряется. Эта ситуация показана на картинке error1. Ошибка повторяется время от времени в процессе тестирования. Данная ошибка, как выяснилось, зависит от частоты работы. На 250 МГц ее вероятность намного меньше, а на 200 МГц она вообще пропадает. Также ситуация стала лучше после того, как поменял настройку Unused IOB Pins = Float на Pull Down в свойствах генерации программного файла.

2) Начиная с какого-то момента, контроллер просто перестает выполнять новые запросы. В результате переполняется командное FIFO и тест останавливается. Вероятность этой ошибки зависит от диапазона тестируемых адресов. Если значение параметра C3_HW_TESTING = "FALSE", то встречается она очень редко. Если же поставить "TRUE" - ошибка происходит тут же при начале тестирования. Такая ситуация повторяется на любой частоте от 200 до 300 МГц.

В чем тут может быть дело?

Судя по картинкам - диаграммы вроде правильные у вас. Сигнал контроллера init_done вскакивает в 1 после сброса? А то может ваш контроллер калибровку пройти не смог, а вы его командами записи - чтения насилуете?

P.S. Оффтопик : когда я смотрю на подобные "лыжи" ( так называют платы монстроидальных размеров) - мне становится страшно... Неужели существуют задачи, которые можно решить только с помощью таких монстров? И при этом нагрузить все 12 спартанов с их памятью? Что-то я сомневаюсь...
Go to the top of the page
 
+Quote Post
Nosss
сообщение Mar 2 2011, 11:50
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 57
Регистрация: 11-07-06
Пользователь №: 18 747



Тест, который поставляется вместе с платой выдает ошибку, которую мы понять не можем, так как нет нормального описания к этому тесту. Плата у нас одна, к сожалению. Но там 12 ПЛИС и все ведут себя примерно одинаково. Хотя можно среди них выделить те, которые работают чуть лучше остальных. Контроллер в спартане 400 поддерживает при выполнении определенных условий (MIG об этом говорит).

Просто я думал, может у кого было что-нибудь подобное...

Цитата(Bad0512 @ Mar 2 2011, 14:44) *
Судя по картинкам - диаграммы вроде правильные у вас. Сигнал контроллера init_done вскакивает в 1 после сброса? А то может ваш контроллер калибровку пройти не смог, а вы его командами записи - чтения насилуете?


Что за сигнал init_done? Там есть сигнал calib_done. Он в 1, таким образом, я понимаю, что калибровка завершилась удачно.
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 2 2011, 11:59
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Покажите, если не лень, какие данные пишутся и читаются на минимальной частоте, на которой сбои еще происходят и на максимальной. По данным можно попытаться угадать, что за глюк.
Еще можно послать письмо об ошибке производителю платы - чего стесняться-то?
Go to the top of the page
 
+Quote Post
Nosss
сообщение Mar 2 2011, 12:17
Сообщение #10


Участник
*

Группа: Свой
Сообщений: 57
Регистрация: 11-07-06
Пользователь №: 18 747



Цитата(Shtirlits @ Mar 2 2011, 14:59) *
Покажите, если не лень, какие данные пишутся и читаются на минимальной частоте, на которой сбои еще происходят и на максимальной. По данным можно попытаться угадать, что за глюк.

Сбой заключается в том, что одно из данных в потоке "залипает" на выходе FIFO. Вследствие этого часть данных теряется. И на максимальной, и на минимальной частоте это выглядит одинаково. Побитовых сбоев нет - то что пишу, то и читаю обратно. Если не лень, можете глянуть wlf файл. Я его получил из vcd файла, который вытащил из ChipScopa. Ошибка происходит в 343 нс и в 382 нс.
Цитата(Shtirlits @ Mar 2 2011, 14:59) *
Еще можно послать письмо об ошибке производителю платы - чего стесняться-то?

Письмо отправили - отвечать не торопятся.
Прикрепленные файлы
Прикрепленный файл  VCD_WLF.rar ( 16.01 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post
Victor®
сообщение Mar 2 2011, 13:35
Сообщение #11


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(Nosss @ Mar 2 2011, 12:47) *
Здравствуйте! Есть ПЛИС Spartan-6 xc6slx150-3fgg484 и внешняя память DDR3 MT41J64M16LA-187E. Память подключена к третьему банку ПЛИС. Частота работы с памятью 300 МГц.

В ISE12.4 сделал проект контроллера памяти с помощью MIG. В проекте оставил один двунаправленный порт х32. Взял example_design. Отмоделировал - все в порядке. А вот при тестировании в железе начались проблемы, которые никак не удается победить. Проблемы двух типов:

1) При чтении пачки данных одно из данных застревает на выходе FIFO на несколько тактов. При этом часть данных теряется. Эта ситуация показана на картинке error1. Ошибка повторяется время от времени в процессе тестирования. Данная ошибка, как выяснилось, зависит от частоты работы. На 250 МГц ее вероятность намного меньше, а на 200 МГц она вообще пропадает. Также ситуация стала лучше после того, как поменял настройку Unused IOB Pins = Float на Pull Down в свойствах генерации программного файла.

2) Начиная с какого-то момента, контроллер просто перестает выполнять новые запросы. В результате переполняется командное FIFO и тест останавливается. Вероятность этой ошибки зависит от диапазона тестируемых адресов. Если значение параметра C3_HW_TESTING = "FALSE", то встречается она очень редко. Если же поставить "TRUE" - ошибка происходит тут же при начале тестирования. Такая ситуация повторяется на любой частоте от 200 до 300 МГц.

В чем тут может быть дело?



Не из этой оперы?
http://www.xilinx.com/support/answers/35978.htm

P.S.
и еще
http://www.xilinx.com/support/answers/33566.htm


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
Nosss
сообщение Mar 2 2011, 14:17
Сообщение #12


Участник
*

Группа: Свой
Сообщений: 57
Регистрация: 11-07-06
Пользователь №: 18 747



Цитата(Victor® @ Mar 2 2011, 16:35) *

У меня ISE 12.4. В нем как бы обещали поправить уже этот глюк.
Цитата(Victor® @ Mar 2 2011, 16:35) *

И это не про меня. После загрузки конфигураций сброс подавал несколько раз - ситуация не меняется.


Хочу заодно спросить. Есть ли у кого-нибудь положительный опыт работы со связкой spartan6 + ddr3 ?
Go to the top of the page
 
+Quote Post
billidean
сообщение Mar 2 2011, 14:53
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



может дело не при чтении вовсе, а, например, когда идет режим записи данных, они снаружи переключаются на следующие, а уже в железо не записываются, какие-нибудь коллизии или задержки или недоустановка адресов например
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Mar 2 2011, 15:18
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Да, данные перестают меняться, посмотрел первое из мест.
Может быть и проблема записи.
Go to the top of the page
 
+Quote Post
Nosss
сообщение Mar 2 2011, 18:18
Сообщение #15


Участник
*

Группа: Свой
Сообщений: 57
Регистрация: 11-07-06
Пользователь №: 18 747



А мне кажется что проблема там с чтением. Данные всегда теряются пакетами, насколько я заметил (1 пакет = 4 слова х32 = 8 слов х16). То есть память почему-то не понимает команду чтения, на шине стоит старая информация, которую контроллер всасывает и отдает мне.
Go to the top of the page
 
+Quote Post

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

 


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


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