Jump to content

    
Sign in to follow this  
MementoMori

SDRAM. Согласование линий данных и адресных линий.

Recommended Posts

Господа, работаю над трассировкой SDRAM SDR (планируется частота 75 МГц) и STM32F746.

Развел несколько линий адреса и данных. Исходя из габаритов STM, самой SDRAM, как их не располагай, как ни меняй линии данных (а адресные и вовсе нельзя менять), длина отдельных трасс достигает 55 мм.

Моделирую в HyperLynx - неприемлемый звон появляется уже на длине 35 мм.

В принципе, я готов к перспективе навешать на все линии резисторов (моделирование показало, что 70 Ом вполне достаточно).

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

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

Может к адресным линиями какие-то особые требования и им не нужны танцы с резисторами?

Зависит ли от чего-нибудь еще амплитуда звона при переходном процессе? Нормально ли что у меня на 50 мм длины проводника есть звон, или я что-то не так настроил в HyperLynx?

 

Share this post


Link to post
Share on other sites

Странно... я вроде бы подключал ibis модель с сайта stm. Настраивал в соответствии с аппноутом от st.

  Правда я скорость поставил там самую высокую (там варианты 00,01,10,11, я поставил 11).

 У меня есть плата 469 disco, там 60 трассы есть. И никаких резисторов.

На практике на каких длинах появляется звон?

Share this post


Link to post
Share on other sites

Если шина только для SDRAM  и никаких других источников- приемников типа LCD, NAND/NOR флеша или FPGA на ней нет, то резисторы не нужны. Только выравнивание линий чтобы адреса-данные не опоздали относительно стробов и не пришлось шину тормозить. При этом это должно работать по шине данных  в обе стороны- и со стороны SDRAM, и со стороны контроллера.  На 70 Мгц накосячить сложно для F7 серии. Вот для H7 серии с ее разогнанным до 400 мгц ядром грабли по SDRAM полезли страшные, так ее и не удалось надежно запустить.

Share this post


Link to post
Share on other sites

Хех.... я ж предполагал, что у меня с настройками что-то не так..

Выяснилось -  в HyperLynx в StackUp все 6 слоев были обозначены как SIGNAL и ни одного PLANE.

Когда выставил все как надо получилась вот такая картинка (зеленый - вход контроллера, красный - вход DQM1 памяти, частота 90 Мгц)

 

Что скажете? Годный сигнал? Дорожка длиной 75 мм, на пути 2 via через все слои.

Скриншот 2019-04-27 17_45_44.png

Share this post


Link to post
Share on other sites

Так надо осциллограф брать с полосой под 500 мгц и снимать реальные сигналы.

Вот две ссылки на форума где народ копал глубоко эту тему, но готовых решений там нет.

https://www.mikrocontroller.net/topic/423311

Во втором случае пытались повесить на шину F4 две различные памяти.

https://www.fedevel.com/designhelp/forum/test/pcb-layout/82-sdr-sdram-layout-recommendations

PS. Несколько умных мыслей и картинка в шапке поста для вдумчивого рассмотрения

http://pcbartists.com/design/embedded/stm32-sdram-pcb-layout/

 

Share this post


Link to post
Share on other sites
3 minutes ago, khach said:

Так надо осциллограф брать с полосой под 500 мгц и снимать реальные сигналы.

Вот нету у меня сейчас такого осциллографа, есть программа, которая с определенной степенью достоверности говорит, что сигнал будет такой, как на картинке.

По первой ссылке - там BGA корпуса, совсем иная ситуация..

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

Share this post


Link to post
Share on other sites
2 hours ago, MementoMori said:

Но если у них заработало, то наверное и у меня тоже будет работать.

Тут еще вопрос, для чего SDRAM будет использоваться. Если это только буфер экрана, где несколько моргающих раз в час пикселей погоды не сделают, то это одно. А если SDRAM будет использоваться для хранения важных данных, без регенерации и проверки их содержимого- то это совсем другое. Нам как то пришлось выкручиваться из второго варианта из за неудачной разводки.  Пришлось превратить SDRAM в блочную память, где каждый блок данных был защищен кодом Хемминга. Данные троировались в разных областях памяти с некратным сдвигом относительно базового адреса. Для работы с данными весь блок считывался во внутренню память контроллера, проверялся на валидность по коду коррекции, использовался, записывался обратно в SDRAM с троированием. Понимаю, что извращение, но проект горел. 

Share this post


Link to post
Share on other sites
2 minutes ago, khach said:

Тут еще вопрос, для чего SDRAM будет использоваться. Если это только буфер экрана, где несколько моргающих раз в час пикселей погоды не сделают, то это одно. А если SDRAM будет использоваться для хранения важных данных, без регенерации и проверки их содержимого- то это совсем другое. Нам как то пришлось выкручиваться из второго варианта из за неудачной разводки.  Пришлось превратить SDRAM в блочную память, где каждый блок данных был защищен кодом Хемминга. Данные троировались в разных областях памяти с некратным сдвигом относительно базового адреса. Для работы с данными весь блок считывался во внутренню память контроллера, проверялся на валидность по коду коррекции, использовался, записывался обратно в SDRAM с троированием. Понимаю, что извращение, но проект горел. 

В общем-то да, для экрана. И моргающие раз в час пиксели погоды действительно не сделают. Главное чтобы не было существенных и заметных артефактов.

 

P.S. Лазил на сайте микрона - куча всяких доков по поводу разработки с DDR3 и прочим. Знаю, что должен быть какой-то документ, регламентирующий трассировку и обеспечение целостности сигналов для SDRAM SDR, но не нашел. 

Может есть у кого?

Share this post


Link to post
Share on other sites
4 minutes ago, MementoMori said:

Знаю, что должен быть какой-то документ, регламентирующий трассировку и обеспечение целостности сигналов для SDRAM SDR, но не нашел. 

Да не переживайте. Чтобы SDR SDRAM на 75МГц не заработала, надо сделать просто чудовищную трассировку. И Гиперлинкс совсем ни к чему в данной ситуации.

Share this post


Link to post
Share on other sites
В 27.04.2019 в 11:06, MementoMori сказал:

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

На адресных линиях резисторов нет.

 

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

Share this post


Link to post
Share on other sites

положим, что prop.delay на fr4 ~160ps/inch

75MHz ~ 13ns период.

предположим, что хотим сделать 1% выравнивание от периода, ну т.е. получается что дороги надо поравнять примерно в диапазоне 130ps, что эквивалентно примерно дюйму длины, тобишь означает то, что если не крутить сильно больших петель, то линии адресов и данных можно особо не ровнять, если они укладываются в +/-12,5мм относительно клока. терминицаю в послед можно тока на клоку поставить, по минимуму 20-39 Ом.

 

примерно тоже самое, только другими словами из "TN-46-14, page 13":  " SDRAM systems have only a single-ended clock (CLK), so the important trace-matching
relationship is not to a second differential clock trace but instead to the other groups. Match clock traces to data group traces within ±500 mil.
"

Share this post


Link to post
Share on other sites
3 hours ago, rx3apf said:

Так, пардон, последовательные согласующие резисторы устанавливаются со стороны передатчика,

Понять можно двояко.

Со стороны передатчика - не значит ближе к передатчику, так ведь? По крайней мере я в Гиперлинксе экспериментировал  сам убедился, что резисторы нужно ставить у приемника.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this