|
Ошибки в работе ddr3 памяти |
|
|
|
Dec 24 2013, 11:03
|
Участник

Группа: Участник
Сообщений: 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 МГц ошибки не исчезли. Может ли быть ошибка в топологии и от чего оттолкнуться в данном случае?
|
|
|
|
|
Dec 24 2013, 12:45
|
Участник

Группа: Участник
Сообщений: 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). Поделитесь пожалуйста мыслями на этот счет?
|
|
|
|
|
Dec 24 2013, 14:03
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
просто интересно, а как по каше на 2 картинке вы определили что вылетает каждый 4 отсчет?
у вас клоки что идут на ДДР генерятся отдельным PLL, в спартане 6 можно память запустить от любого клок генератора на кристале, но стабильно работать будет только от определенного, того что находит в банке который с контроллером памяти, и того что к контроллеру максимально близки. И кроме клоков памяти на этот блок ничего вешать нельзя. Потому что в этом режиме он включается по специальной схеме мего синхронной выдачи прямого и обратного клоков.
Поглядите на этот счет в вашей ПЛИСине, архитектура другая, но симптомы схожи. У меня проходили тесты памяти пока кристал не нагревался, после все начинало сбоить, добавил регистры на шину, стало чуть стабильнее работать, но больший нагрев и все опять упало, долго с охлаждением возились, потом решил еще раз пересобрать все глядя в инструкцию, и нашел приписку про генератор клоков, поправил, и без регистров все сразу заработало, и грей хоть до зависания проца (микроблайз)...
|
|
|
|
|
Dec 24 2013, 21:32
|
Профессионал
    
Группа: Свой
Сообщений: 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'ами бросаться врукопашную на осциллограф тоже никакого смысла нет.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Dec 25 2013, 10:20
|
Участник

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

|
Для Krux: Типовых ошибок на мой взгляд нет, но файл с топологией разводки памяти и принципиальная схема, ucf прикреплены.
DDR3.rar ( 380.48 килобайт )
Кол-во скачиваний: 114DCI 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. Пытается экстраполировать картинку. Логика у меня была такая)
|
|
|
|
|
Dec 31 2013, 18:46
|
Знающий
   
Группа: Свой
Сообщений: 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 Ом последовательно добавляете - сигнал совсем затухнуть может. К тому же шина данных двунаправленная, а вы последовательные резисторы сдвинули к памяти.
|
|
|
|
|
Jan 10 2014, 20:44
|
Участник

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

|
Здравствуйте, форумчане. Убрал по замечанию VladimirB резисторные матрицы 15 Ом с линий dq, dqs. Заменил их перемычками. К сожалению результат тот же. Данные на частоте 400 МГц бьются. Выравнивание линий выполнено с учетом разброса шариков BGA. Линии выравнены до 0.5мм. тест сигналов осциллографом пока ничем не помог. Всем спасибо за советы. Продолжаю поиск ошибок.
|
|
|
|
|
Jan 12 2014, 07:02
|
Знающий
   
Группа: Свой
Сообщений: 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 Ом быть. По методе вычисления проблемы ещё неплохо бы локализовать где данные бьются - на записи или на чтении. Для этого можно один раз записыать, а потом много раз считать, при чём неплохо бы считаывать по-разному, т.е. к примеру поиграть адресами. Если результаты будут отличаться - то скорее всего сбоит чтение, если нет - то с большой вероятностью запись.
|
|
|
|
|
Jan 12 2014, 18:43
|
Профессионал
    
Группа: Свой
Сообщений: 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 за последней микросхемой - то это неправильно. Если уж выбрали конкретную топологию, то надо придерживаться её до конца.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Jan 12 2014, 19:09
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
если я делаю разводку на две микросхемы, допустим 8-битных, делая 16-битную шину (т.е. не объединяя данные), и все дорожки меньше дюйма по длине, то я сделаю разводку ВООБЩЕ без внешних терминаторов, ибо они не нужны, так как длина дорожек мала для того, чтобы в ней возникли значительные отражения. Адрес/управление будет разведет Т-разводкой, данные точка-точка, последовательные резисторы по всем клокам (CLK, DQS) - и на этом ВСЕ. И будет отлично работать без VTT, что можно даже подтвердить осцилограммками... Кстати DDR2 от DDR3 в этом не отличаются.
Об этом в микроновских pdf не пишут, однако это решение имеет полное право на жизнь, и неплохо живет, и температурные и EMI тесты все индустриальные проходит, просто для этого не надо себя ограничивать рамками документации в части рекомендаций проектирования схемы.
|
|
|
|
|
Jan 13 2014, 02:25
|
Знающий
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Jan 13 2014, 08:28
|
Гуру
     
Группа: Свой
Сообщений: 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 дюйма в плече, то на выравнивание следует забить, сделав его, конечно, максимально возможным, но без пристрастия.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|