Jump to content

    
Sign in to follow this  
_sda

Интерфейс DDR FPGA2FPGA

Recommended Posts

Есть две 12-ти битные шины DDR между FPGA, шина AB и шина CD. Частота клока - 300МГц. Для контроля на передающей стороне сейчас отправляется содержимое двоичного счётчика, а на приёмнике стоит счётчик ошибок. Сответственно 4 приёмных регистра SDR - rega,regb,regc,regd. Видно что шина CD принимается совсем без ошибок. А в шине AB наблюдаются странные регулярные ошибки. В шине А бит номер 6 не меандр! В шине B присутствуют странные регулярные "иголки". Если эти же прошивки залить в другую такую же плату - обе шины работают без ошибок. Методом замены шин на передатчике пришёл к выводу что глючит именно приёмная часть (ну или совместно с платой). Питание? Всё обвешано прилично,номинал в норме. Что посоветуете, коллеги? Логически обосновать такое поведение у меня не получилось.

На левом рисунке в строке 6 - флаг ошибки. Подвигал немного фазу клока в приёмнике - эффект нулевой.

post-18832-1493209256_thumb.png

post-18832-1493209262_thumb.png

post-18832-1493209270_thumb.png

Share this post


Link to post
Share on other sites

Приветствую!

 

Немного подвигать этого мало.

 

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

 

Ну а затем по результатам смотреть - куда и на сколько сдвигать всю шину и достаточно ли этого будет.

А может надо будет двигать отдельные биты в шине. чтобы совместить окна.

 

Удачи! Rob

 

 

 

Share this post


Link to post
Share on other sites
Приветствую!

 

Немного подвигать этого мало.

 

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

 

Ну а затем по результатам смотреть - куда и на сколько сдвигать всю шину и достаточно ли этого будет.

А может надо будет двигать отдельные биты в шине. чтобы совместить окна.

 

Удачи! Rob

Спасибо!

Таки только расфазировка бит думаете? Если это так то печально - для каждой платы делать свою калибровку очень длительный процесс. И прошивки для каждой платы свои... Завтра попробую подвигать шестой бит в шине А.

 

Share this post


Link to post
Share on other sites
Приветствую!

 

Немного подвигать этого мало.

 

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

 

Ну а затем по результатам смотреть - куда и на сколько сдвигать всю шину и достаточно ли этого будет.

А может надо будет двигать отдельные биты в шине. чтобы совместить окна.

 

Удачи! Rob

Нужно смотреть как выровнены линии в шинах по длине, ну а далее задержки

Share this post


Link to post
Share on other sites

Нужно написать автомат автокалибровки и калибровать линк при каждом старте. Тогда и частоту до 500 - 600 можно будет вытянуть

 

Share this post


Link to post
Share on other sites
Нужно написать автомат автокалибровки и калибровать линк при каждом старте. Тогда и частоту до 500 - 600 можно будет вытянуть

А как это? В аррии есть возможность изменять параметр iodelay без перекомпиляции? Я этого не знал. Если это действительно так то это очень упростит задачу. Поделитесь методом?

Share this post


Link to post
Share on other sites

Приветствую!

 

Думать в этом случае можно о многих причинах так как их (причин а не дум) может быть великое множество. Иногда совсем не очевидных.

Поэтому для начала надо начинать с простого - чтобы составить ясную картину проблемы.

 

Калибровку можно делать автоматом - как единожды при запуске или по какомуто событию - так и динамически в процессе работы канала - все ороеделяетсяв особенностями и реализации конкретной системы.

Удачи! Rob.

 

 

Share this post


Link to post
Share on other sites
да вроде бы на выходах стоят элементы задержки управляемые.

ALTIOBUF megafunction

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

Share this post


Link to post
Share on other sites
да вроде бы на выходах стоят элементы задержки управляемые.

ALTIOBUF megafunction

Спасибо! Старею, рано или поздно это должно было случиться...

 

_Anatoliy

DCI включили?

Это что?

 

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

Бит не один, больше склоняюсь таки к времянкам.

Share this post


Link to post
Share on other sites

Пересмотрел весь UG на ALTIOBUF и нигде не нашёл спецификации на интерфейс управления. Как изменять величину задержки по последовательному порту IP?

 

А с другой стороны у меня длительность "глазка" 1600ps , а дискрета изменения задержки для D1 равна 517ps. Всего 3 отсчёта на глазок, имхо не очень большая степень свободы.

Хотелось бы услышать мнение тех кто реально этим занимался. Как эта технология ведёт себя в серии,если без автоматики? Ведь я уже прошёл через этот путь, подобрал оптимальные задержки, две платы запустились без проблем а на третьей "проявился" вот этот дефект. Такой большой разброс параметров микросхем? Правда для третьей платы мы покупали у другого поставщика , уж не знаю насколько это важно.

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