Jump to content

    

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

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

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

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

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

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

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

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

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

 

Share this post


Link to post
Share on other sites

чтобы на 50мм что-то зазвенело, фронты должны быть короче сильно быстрее чем 1нс, stm32 так не умеет.

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

То есть  стробы сделать заведомо длинее всех данных и адресов (самой длинной линии)?

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

Выравнивание проводников таки нужно.

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

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