Jump to content

    

DDR3 - можно ли оживить?

Имеется плата с DDR3 (проц от TI семейства SITARA, DDR - 2 шт 256Mx16 от Micron, версия на 1866 МГц, реальная удвоенная целевая частота 1600 МГц). Память разведена по последовательной (не T-образной) топологии БЕЗ ТЕРМИНАТОРОВ. Вообще нет, даже на CLK.

Аргументы разработчика - автор прототипа данной платы (другой человек) все так делает, и как-то работает. Конечно, разработчик озадачен и уже делает следующую версию как надо. Но "на пока" очень хочется запустить и эту плату.

Сделал:

- Поставил тайминги в соответствии с даташитом на память.

- Поиграл временами нарастания сигналов (контроллер в проце позволяет). Оптимальный вариант - для CLK максимально короткие,

для адреса/управления - несколько сглаженные.

- Нагрузил CLK (не как положено, а дифференциально одним резистором 75 Ом).

В итоге при оптимальных настройках наблюдается следующее:

- При некоторых тактовых частотах (400 МГц) контроллер DDR вообще завешивает проц. На 700 МГц вроде не завешивает.

- Младший байт старшей микросхемы (по разводке - последняя от проца) читается нечетко.

- Последние 2 32-битных слова каждого 8-словного пакета не читаются в обоих половинках (а может, и не пишутся - хз).

- А в остальном все OK

Вопросы:

- Насколько вообще реально завести DDR3 с такой разводкой?

- Может, кто-то сталкивался с аналогичными глюками?

Заранее благодарен всем ответившим.

Share this post


Link to post
Share on other sites
Аргументы разработчика - автор прототипа данной платы (другой человек) все так делает, и как-то работает.

Расстрелять.

Насколько вообще реально завести DDR3 с такой разводкой?

На целевой частоте(и что-либо близкое) не заведете, на медленной тоже не очень вероятно. Имеется в виду стабильная работа с хорошей формой сигнала.

А в остальном все OK

Покажите разводку послойно и таблицу с длинами проводников.

 

Share this post


Link to post
Share on other sites
Расстрелять.

 

На целевой частоте(и что-либо близкое) не заведете, на медленной тоже не очень вероятно. Имеется в виду стабильная работа с хорошей формой сигнала.

 

Покажите разводку послойно и таблицу с длинами проводников.

1.Жалко. А вот насчет автора прототипа у многих руки чешутся...

2.Да хоть как-нить - на пока. И ведь прототип же впрямь работает, причем в серии (!!!). Правда, в нем стоит память DDR3-1600.

3.Сейчас не могу разводку взять, но я ее видел - все линии 35-40 мм от проца до дальней DDR-ки, разработчик их даже выравнивал. Что положено дифференциальной парой разводить, то так и разведено. Т.е. все хорошо, только терминаторов нет...

 

Share this post


Link to post
Share on other sites
Да хоть как-нить - на пока. И ведь прототип же впрямь работает, причем в серии (!!!). Правда, в нем стоит память DDR3-1600.

Очень слабо верится что ддр3 1600 работает на полной скорости при кривой топологии - люди не достигают максимальной скорости при гораздо менее серьезных проездах. Вероятнее всего частота много ниже а контроллер пашет на излете возможностей.

Сейчас не могу разводку взять, но я ее видел - все линии 35-40 мм от проца до дальней DDR-ки, разработчик их даже выравнивал. Что положено дифференциальной парой разводить, то так и разведено. Т.е. все хорошо, только терминаторов нет.

На словах оно может быть вполне ничего, но я лично ожидаю увидеть весомый довесок к уже озвученной кривизне :laughing:.

Share this post


Link to post
Share on other sites
3.Сейчас не могу разводку взять, но я ее видел - все линии 35-40 мм от проца до дальней DDR-ки, разработчик их даже выравнивал. Что положено дифференциальной парой разводить, то так и разведено. Т.е. все хорошо, только терминаторов нет...

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

В DDR3 контроллерах штатно применяется Dynamic On Die Termination (ODT), внешних резисторов не надо.

Это можно узнать по первой же ссылке в гугле.

Если прототип работает значит вам изготовили плату их плохого материала.

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

Share this post


Link to post
Share on other sites
В DDR3 контроллерах штатно применяется Dynamic On Die Termination (ODT), внешних резисторов не надо

:biggrin: :biggrin: :biggrin: Это безусловно победа, да. А позвольте спросить, почему если открыть любой вменяемый дизайн с ддр3(или того хуже планку памяти), они(терминаторы) там есть? И что они терминируют? :biggrin: Сугубо академический интерес назрел.

Если прототип работает значит вам изготовили плату их плохого материала.

Минут 10 думал, но мне ума не хватило понять- какая связь? Взываю к помощи гур :biggrin:

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

Вообще страшное дело) А что это означает?)

 

ПС.Так а сколько вы развели ддр3 в своих мейкерских девайсах?

Share this post


Link to post
Share on other sites
В DDR3 контроллерах штатно применяется Dynamic On Die Termination (ODT), внешних резисторов не надо.

Может, я чего-то не понял, но ODT - это вроде как только для линий данных, не?

Все рефдизайны и даташиты в один голос твердят о необходимости нагружать линии адреса, управления и CLK. Одно исключение - техасовцы в описании одной из своих маленьких отладочных платок хвалятся, что таки развели без нагрузок. Но там у них DDR3-800 и топология T (по типу DDR2). Еще гипотетическое исключение - разводка единственной 16-битной микросхемы. Для нее последовательного согласования, обеспечиваемого выходными резисторами контроллера, по идее может хватить.

А диэлектрик не покатит, увы - разводка во внутренних слоях, снаружи земли. Но все равно, спасибо за идею на будущее.

 

На словах оно может быть вполне ничего, но я лично ожидаю увидеть весомый довесок к уже озвученной кривизне :laughing:.

В понедельник обязательно - заранее благодарен за замечания.

Share this post


Link to post
Share on other sites

Здесь очень хорошо показано зачем нужно ODT и что именно оно терминирует. Конкретно режим работы можно посмотреть у микрона, там вполне четко все расписано :laughing:

 

 

 

 

Share this post


Link to post
Share on other sites
- Насколько вообще реально завести DDR3 с такой разводкой?

Если только часть данных при чтении пакетами не читается (если писалась так же, без пословного дергания адресами) делайте нормальный клок, возможно сигнал ODT и проверяйте как с ней работаете.

 

Если уверены, что конфиг в Озушку впихивается правильно, то можно потестить и узнать что происходит поточнее. Если неправильно, попробуйте терминировать на 1/2 питания ресет.

 

Например, записывайте последовательность пословно/побайно (в каждый байт его номер в последовательности) и считывайте (в два прохода прямо и инверсно). Можно посмотреть откуда считывается, откуда нет. (найдите работает-ли в каких-либо адресах).

Если данные пашут, то проведите такой тест последовательности по разным адресам, узнаете на каких адресах не пашет, сможете навеской эти линии пассивно затерминировать на 1/2 питания, может заработают.

 

Если нигде данные пахать не будут, то тут сложнее. Можно частоты снижать, тайминги менять.

 

На истину не претендую. Не было подобного опыта с SDRAM.

 

PS можно например с резистором ZQ поиграться, поставить чуток отличающиеся побольше и поменьше, кондёры на Vref проверить и попробовать добавить/убрать)

PPS и вообще кондёры по питанию проверить. Если Y5V - выкинуть и поставить нормальные.

Share this post


Link to post
Share on other sites
....

Спасибо - в понедельник сделаю подход к снаряду, попробую что-нить из предложенного.

А то я плотно копался с DRAM последний раз в конце 80-х... Радио-86РК, 565РУ5...ностальгия.

После этого как-то все работало, даже DDR3 - бо разводка была правильной.

Share this post


Link to post
Share on other sites
Если неправильно, попробуйте терминировать на 1/2 питания ресет.

Боюсь выдать ядовитый комментарий, но поясните пожалуйста что это значит и зачем нужно? А то мне кажется я не понял идею :laughing:

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Боюсь выдать ядовитый комментарий, но поясните пожалуйста что это значит и зачем нужно? А то мне кажется я не понял идею :laughing:

Я не помню бюджеты на запись конфига, но мысль простая, сдвигая момент отсчёта - подвигать окно, или убрать звон.

И мне попадались примеры, где ресет тоже затаскивают на терминацию. (он там свой, для озушек, не системный)

Share this post


Link to post
Share on other sites

Так а как терминация ресета должна повлиять на

сдвигая момент отсчёта - подвигать окно, или убрать звон

? Какова физика процесса?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this