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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Ошибки в работе ddr3 памяти
ArtoM
сообщение Dec 24 2013, 11:03
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 10-06-11
Из: Ростов-на-Дону
Пользователь №: 65 614



Здравствуйте!
Была изготовлена плата на virtex6 xcvlx240t с подключенными чипами памяти Micron MT41J128M16-15E.
Далее для проверки памяти я использовал MIG 3.7 example design. Тактовая памяти 400Мгц.

Калибровка памяти проходит успешно, что подтвердил chipscope. Но в модуле traffic gen при чтении выставляется флаг data_error.
То есть, насколько я понимаю, возникают ошибки при чтении данных из памяти.

Интересен факт, что traffic gen на тактовой памяти 200 МГЦ работет корректно, то есть калибровка проходит успешно и флаги data_error, data_error_set не активны. Но при этом минимальная частота работы ddr3 303 МГц следуя ds186 или я не прав?

Пробовал в два раза участить REFRESH на память. На 400 МГц ошибки не исчезли.
Может ли быть ошибка в топологии и от чего оттолкнуться в данном случае? wacko.gif
Go to the top of the page
 
+Quote Post
ArtoM
сообщение Dec 24 2013, 12:45
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 10-06-11
Из: Ростов-на-Дону
Пользователь №: 65 614



Помимо стандартного теста MIG 3.7 была создана модель интерфейса пользователя.
Моделировал в Aldec 8.3.

Записал гигабайт памяти 16 разрядным счетчиком (пилой) затем считал из памяти 4 Мб. Сохранил результат в файл. Отрисовал в Matlabe и убедился что пила без разрывов и выбросов.

Затем зашил проект в железо. Плата с памятью ddr3 соединена оптикой с платой подключеной по pciex8 к ЭВМ.
Сомнений в работе оптичекого канала связи, ядра pcie нет.

Проделал те же действия:
1) Записал 1 Гбайт счетчика в память.
2) Считал 1Гбайт блоками по 256 кбайт.
3) Сохранил результат в файл.

Общий вид файла с пилой:
Прикрепленное изображение

Увеличим
Прикрепленное изображение


То есть "вылетает" каждый четвертый отчет.
А к ПЛИС подключено 4 16-ти разрядных чипа. То есть шина DQ в этом варианте 64 бита. Режим работы с памятью поточный (BL=8).

Поделитесь пожалуйста мыслями на этот счет?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Dec 24 2013, 14:03
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



просто интересно, а как по каше на 2 картинке вы определили что вылетает каждый 4 отсчет?

у вас клоки что идут на ДДР генерятся отдельным PLL, в спартане 6 можно память запустить от любого клок генератора на кристале, но стабильно работать будет только от определенного, того что находит в банке который с контроллером памяти, и того что к контроллеру максимально близки. И кроме клоков памяти на этот блок ничего вешать нельзя. Потому что в этом режиме он включается по специальной схеме мего синхронной выдачи прямого и обратного клоков.

Поглядите на этот счет в вашей ПЛИСине, архитектура другая, но симптомы схожи.
У меня проходили тесты памяти пока кристал не нагревался, после все начинало сбоить, добавил регистры на шину, стало чуть стабильнее работать, но больший нагрев и все опять упало, долго с охлаждением возились, потом решил еще раз пересобрать все глядя в инструкцию, и нашел приписку про генератор клоков, поправил, и без регистров все сразу заработало, и грей хоть до зависания проца (микроблайз)...
Go to the top of the page
 
+Quote Post
krux
сообщение Dec 24 2013, 21:32
Сообщение #4


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

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



информации явно мало.
всё ли было выполнено по ug406? включая разводку платы с учетом задержек на чипе? (aka "partgen -v xc6vlx240tff1156")
нет ли типовых ошибок при разводке, типа split plane или выравнивания длины "тромбонами"?
использовался ли DCI Cascading или в каждом банке он свой, честный?
всюду ли заведен VREF?
проверьте качество тактового 200 МГц, который подключен к IDELAYCTRL. про него почему-то часто забывают.

если есть phy_init_done значит инициализация чтение-запись по каждому DQ в каждую м/с памяти (по отдельности) прошла калибровку PRBS-последовательностью, при этом
если после этой процедуры вся шина рассыпается - это очень плохой знак, и без соответствующего оборудования для отладки можно сразу сдаваться. Это к тому, что на втором рисунке - абсолютно неинформативная каша.
если пытаться плясать от физики, и пытаться что-то сделать осциллографом, то прочтите хоть это: http://www.fidus.com/downloads/signal_inte..._Whitepaper.pdf там хоть есть примеры того, что надо смотреть осциллом.
Однако без правильного проекта с ucf с правильной распиновкой, констрейнами и RLOC'ами бросаться врукопашную на осциллограф тоже никакого смысла нет.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Dec 25 2013, 05:44
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Проверяйте констрейны и рекомендации по размещению/разводке.
У Альтеры есть хорошая программка - "External memory interface toolkit", позволяет смотреть работу памяти. У Xilinx может быть то же самое.
Go to the top of the page
 
+Quote Post
ArtoM
сообщение Dec 25 2013, 10:20
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 10-06-11
Из: Ростов-на-Дону
Пользователь №: 65 614



Для Krux:
Типовых ошибок на мой взгляд нет, но файл с топологией разводки памяти и принципиальная схема, ucf прикреплены.
Прикрепленный файл  DDR3.rar ( 380.48 килобайт ) Кол-во скачиваний: 114

DCI Cascading используется. В качестве «Master» используется 26 банк с подключенными линиями dq. В ucf указано, что использованы банки:
DQ,DM,DQS 26, 27, 36.
ADDR/CTRL – 37 банк.
Объявлено CONFIG DCI_CASCADE = "26 27";
Пробовал разводить CONFIG DCI_CASCADE = "26 27 36"; MAP не выполнился. Сообщение «invalid constraint». С этим еще не разобрался.
Что касается тактовой, то используется схема с двумя MMCM.
На первую заходит сигнал с внешнего генератора 200 МГц. Этот сигнал используется как clk_ref для IDELAYCTRL. MMCM на выходе формирует 400 МГц, которые через bufg подключены на вход второй MMCM.
Вторая ММСМ используется для формирования тактовых контроллера 400МГц, 200 МГц, 400 МГц.



Для Golikov A.
"просто интересно, а как по каше на 2 картинке вы определили что вылетает каждый 4 отсчет?"
При увеличении картинки видно, что когда начинаются выбросы 3 отсчета пилы явно прослеживаются. 4 отсчет - "скачет". Зеленые линиии между отсчетами дорисовывает Cool edit. Пытается экстраполировать картинку. Логика у меня была такая)
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Dec 31 2013, 18:46
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(ArtoM @ Dec 25 2013, 14:20) *
...
Типовых ошибок на мой взгляд нет, но файл с топологией разводки памяти и принципиальная схема, ucf прикреплены
...

1)
И всё таки, (как уже вас спрашивали) было ли выполнено выравнивание длин с учётом длины дорожек от шариков BGA корпуса ПЛИС до кристалла ПЛИС? Если вы сделаете в ISE "partgen -v xc6vlx240tff1156" - то увидите что разброс дорожек внутри BGA в пределах одного банка составляет порядка 20-30мм и даже внутри диффпары между линиями бывает по 1.5мм. Обычно любители выравнивать дорожки до 0.1мм про это забывают.

2) Там же вроде ODT - зачем дополнительные последовательные терминаторы на шине данных. У вас и так на 50 Ом всё нагружено а вы ещё 15 Ом последовательно добавляете - сигнал совсем затухнуть может. К тому же шина данных двунаправленная, а вы последовательные резисторы сдвинули к памяти.
Go to the top of the page
 
+Quote Post
ArtoM
сообщение Jan 10 2014, 20:44
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 10-06-11
Из: Ростов-на-Дону
Пользователь №: 65 614



Здравствуйте, форумчане.
Убрал по замечанию VladimirB резисторные матрицы 15 Ом с линий dq, dqs. Заменил их перемычками. К сожалению результат тот же. Данные на частоте 400 МГц бьются. Выравнивание линий выполнено с учетом разброса шариков BGA. Линии выравнены до 0.5мм. тест сигналов осциллографом пока ничем не помог. Всем спасибо за советы. Продолжаю поиск ошибок.
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 11 2014, 12:56
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Обратите внимание на качество VREF - у меня тут вот недавно не хватило каких-то 10 мкф емкости по VREF (он генерировался резистивным делителем 2х270 Ом), глючило. Диагностика была простой - кол-во глюков возрастало с уменьшением импеданса терминирования по ODT (который по EMRS задается) - признак этого был таков, что ошибки были в том числе битовые, то есть в одном слове порченные отдельные биты (если глюки по DQS, то обычно происходит сдвижка на одно слово целиком).

Еще - чистоту VCCAUX, оно должно быть отдельно отфильтровано, оно тоже дает такие сбои, так как питает SSTL-компараторы.

Резисторы последовательные по клокам полезны.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 12 2014, 07:02
Сообщение #10


Знающий
****

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



Цитата(SM @ Jan 11 2014, 19:56) *
Обратите внимание на качество VREF - у меня тут вот недавно не хватило каких-то 10 мкф емкости по VREF (он генерировался резистивным делителем 2х270 Ом), глючило. Диагностика была простой - кол-во глюков возрастало с уменьшением импеданса терминирования по ODT (который по EMRS задается) - признак этого был таков, что ошибки были в том числе битовые, то есть в одном слове порченные отдельные биты (если глюки по DQS, то обычно происходит сдвижка на дно слово целиком).

Еще - чистоту VCCAUX, оно должно быть отдельно отфильтровано, оно тоже дает такие сбои, так как питает SSTL-компараторы.

Резисторы последовательные по клокам полезны.

Ещё неплохо бы поглядеть как ведёт себя VTT. Только смотрите этот сигнал не на выходе микросхемы, которая его генерит, а на резисторных сборках.
По краям сборок неплохо бы повесить парочку кондёров из low ESR 10-47 uF + 0402 100 pF. Это всё нужно для борьбы с провалами на VTT - там токи приличные текут.

Ещё интересно включен ли у вас ODT в управляющем регистре - это обычно при генерации коры указывается.
Кроме того интересно какой у вас в данной топологии слоёв рассчётный импеданс дорожек. Судя по терминаторам должно около 40 Ом быть.

По методе вычисления проблемы ещё неплохо бы локализовать где данные бьются - на записи или на чтении.
Для этого можно один раз записыать, а потом много раз считать, при чём неплохо бы считаывать по-разному, т.е. к примеру поиграть адресами.
Если результаты будут отличаться - то скорее всего сбоит чтение, если нет - то с большой вероятностью запись.
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 12 2014, 08:01
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Bad0512 @ Jan 12 2014, 11:02) *
Ещё неплохо бы поглядеть как ведёт себя VTT.

Это да, естественно, но если он есть (при коротких дорожках и 1-2 ИМС памяти он не особо нужен).
Go to the top of the page
 
+Quote Post
krux
сообщение Jan 12 2014, 18:43
Сообщение #12


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

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



Цитата(SM @ Jan 12 2014, 12:01) *
Это да, естественно, но если он есть (при коротких дорожках и 1-2 ИМС памяти он не особо нужен).

"не особо нужны" - это не инженерный подход ;-)
бывает всего 4 варианта топологии для шины адреса/команды у ddr3
- Tree with VTT R
- Tree without series R
- Tree with series R
- Fly-by
www.micron.com/~/media/Documents/Products/Technical%20Note/DRAM/tn4113_ddr3_point_to_point_design.pdf
т.е. если например, вы делаете fly-by на 2 микросхемы но не ставите терминирующие резисторы на VTT за последней микросхемой - то это неправильно. Если уж выбрали конкретную топологию, то надо придерживаться её до конца.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 12 2014, 19:09
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



если я делаю разводку на две микросхемы, допустим 8-битных, делая 16-битную шину (т.е. не объединяя данные), и все дорожки меньше дюйма по длине, то я сделаю разводку ВООБЩЕ без внешних терминаторов, ибо они не нужны, так как длина дорожек мала для того, чтобы в ней возникли значительные отражения. Адрес/управление будет разведет Т-разводкой, данные точка-точка, последовательные резисторы по всем клокам (CLK, DQS) - и на этом ВСЕ. И будет отлично работать без VTT, что можно даже подтвердить осцилограммками... Кстати DDR2 от DDR3 в этом не отличаются.

Об этом в микроновских pdf не пишут, однако это решение имеет полное право на жизнь, и неплохо живет, и температурные и EMI тесты все индустриальные проходит, просто для этого не надо себя ограничивать рамками документации в части рекомендаций проектирования схемы.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jan 13 2014, 02:25
Сообщение #14


Знающий
****

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



Цитата(SM @ Jan 13 2014, 02:09) *
если я делаю разводку на две микросхемы, допустим 8-битных, делая 16-битную шину (т.е. не объединяя данные), и все дорожки меньше дюйма по длине, то я сделаю разводку ВООБЩЕ без внешних терминаторов, ибо они не нужны, так как длина дорожек мала для того, чтобы в ней возникли значительные отражения. Адрес/управление будет разведет Т-разводкой, данные точка-точка, последовательные резисторы по всем клокам (CLK, DQS) - и на этом ВСЕ. И будет отлично работать без VTT, что можно даже подтвердить осцилограммками... Кстати DDR2 от DDR3 в этом не отличаются.

Об этом в микроновских pdf не пишут, однако это решение имеет полное право на жизнь, и неплохо живет, и температурные и EMI тесты все индустриальные проходит, просто для этого не надо себя ограничивать рамками документации в части рекомендаций проектирования схемы.

То, что вы только что описали как раз и называется "Tree without series R".
Забыли правда упомянуть о том, что длины дорожек надо выравнивать в плечах Т-образного соединения, а это - тот ещё геморрой.
У ТС 4 чипа, каждый по 16 бит (если кто не смотрел приаттаченные ПДФки). Там используется fly by.
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 13 2014, 08:28
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Bad0512 @ Jan 13 2014, 06:25) *
То, что вы только что описали как раз и называется "Tree without series R".

Я описал не только без последовательных терминирующих резисторов, а еще и без параллельных терминаторов тоже. ВООБЩЕ БЕЗ каких либо [внешних] терминаторов. Правда, честно говоря, я в англоязычной терминологии в части DDR не сильно силен, может так оно и называется.

Выравнивать плечи в T на 2 чипа или в звезде на 4 чипа проблем нет, если дорожки меньше примерно 3/4 дюйма в плече, то на выравнивание следует забить, сделав его, конечно, максимально возможным, но без пристрастия.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 08:33
Рейтинг@Mail.ru


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