Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Калибровка шины DDR
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
_Anatoliy
Коллеги, а есть какая либо методика достоверной калибровки фазы клока приёмника этой шины? Просто сейчас столкнулся с тем что при передаче состояния счётчика по шине приём идёт без ошибок(благо при передаче счётчика очень легко поставить ловушку ошибок). Я и успокоился. Но при подключении на передающей стороне АЦП без сигнала(передаётся только шум младших бит) очень хорошо просматривается "залипание" некоторых бит. Получается что приём счётчика без ошибок ещё не гарантирует безотказную работу шины. Передавать какой нибудь LFSR? А как контролировать ошибки? Речь не идёт о работе с памятью, чисто шина FPGA-FPGA.
dm.pogrebnoy
Как вариант, возможно нужно просто включить DIFF_TERM во входном буфере (это у Xilinx, у Альтеры может как-нибудь по-другому называется).
_Anatoliy
Цитата(dm.pogrebnoy @ Oct 3 2016, 19:25) *
Как вариант, возможно нужно просто включить DIFF_TERM во входном буфере (это у Xilinx, у Альтеры может как-нибудь по-другому называется).

Согласен,у Xilinx это легко включается, а вот у Альтеры что то не найду,чип Аррия-5, может кто подскажет?
Raven
Цитата
Но при подключении на передающей стороне АЦП без сигнала(передаётся только шум младших бит) очень хорошо просматривается "залипание" некоторых бит.


Извините, но почему вы решили, что подобное "залипание" - это не есть отражение реального видения АЦП напряжения на своем плавающем входе? "Залипают" очень большие разряды? Тоже может быть не показатель. Наводки от руки на плавающий вход осциллоскопа доводилось, наверное, наблюдать.
ovs_pavel
Цитата(_Anatoliy @ Oct 3 2016, 19:28) *
Согласен,у Xilinx это легко включается, а вот у Альтеры что то не найду,чип Аррия-5, может кто подскажет?


set_instance_assignment -name INPUT_TERMINATION DIFFERENTIAL -to <input_pin>

Отсюда:

https://www.altera.com/support/support-reso...032011_226.html
_Anatoliy
Цитата(Raven @ Oct 3 2016, 19:36) *
Извините, но почему вы решили, что подобное "залипание" - это не есть отражение реального видения АЦП напряжения на своем плавающем входе? "Залипают" очень большие разряды? Тоже может быть не показатель. Наводки от руки на плавающий вход осциллоскопа доводилось, наверное, наблюдать.

Нет,это совершенно из другой оперы. На 12-ти битном АЦП часто "залипает" 10-й бит,иногда 9-й. Но на сам сигнал на передающей стороне перед регистрами DDR ставил ловушку - чисто. Интересно что я формировал модулированный радиоимпульс ЛЧМ - никаких искажений не видел, а вот шумок сразу показал истинную ситуацию.

Цитата(ovs_pavel @ Oct 3 2016, 21:10) *

Спасибо!
cyclop
Цитата(_Anatoliy @ Oct 3 2016, 15:36) *
... Получается что приём счётчика без ошибок ещё не гарантирует безотказную работу шины. Передавать какой нибудь LFSR? А как контролировать ошибки? Речь не идёт о работе с памятью, чисто шина FPGA-FPGA.
Код Грея очень помогает в случае, подобном вашему. Здесь про АЦП. Проверку с использованием ПСП (М - последовательности) реализовать не так уж сложно, т.к. число тактов будет известно. Кстати, нельзя исключать и не слишком удачную разводку. Успехов.
_Anatoliy
Цитата(cyclop @ Oct 4 2016, 17:42) *
Код Грея очень помогает в случае, подобном вашему. Здесь про АЦП. Проверку с использованием ПСП (М - последовательности) реализовать не так уж сложно, т.к. число тактов будет известно. Кстати, нельзя исключать и не слишком удачную разводку. Успехов.

Не читайте на ночь советских газет(С).Насчёт кода грея очень сомневаюсь,не его это задача. Для линейного счётчика - это да, а когда АЦП оцифровывает синус с тремя отсчётами на период - то тут уж извините.
Теперь о результатах. Поставил терминаторы, перекалибровался ещё раз - за 10 минут ни единой ошибки, я и успокоился. Часа три занимался этим же проектом, но другими узлами,питание не выключал. Потом решил ещё раз проверить ошибки - оказалось примерно 200 битовых ошибок за 1 мс. Перекалибровался ещё раз, через два часа проверил - опять ошибки идут. И что же делать дальше? Знак ошибки не изменился, сначала был код задержки 6, во второй раз пришлось увеличить до 11, а в третий раз поставил 15. Задержку меняю в лапах. Тактовая частота 300Мгц, две шины по 12 бит. Есть ли мысли?
RobFPGA
Приветствую!

Цитата(_Anatoliy @ Oct 4 2016, 19:42) *
.... Тактовая частота 300Мгц, две шины по 12 бит. Есть ли мысли?

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

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

Удачи! Rob.
Алга
Цитата
сначала был код задержки 6, во второй раз пришлось увеличить до 11, а в третий раз поставил 15. Задержку меняю в лапах. Тактовая частота 300Мгц, две шины по 12 бит. Есть ли мысли?

В начале работы, при старте АЦП нужно делать подстройку клока в центр принимаемых данных от АЦП (сделать "глаз").
Тема калибровок АЦП (надежного приема даных от АЦП) обсуждалась ранее

http://electronix.ru/forum/index.php?showtopic=128018
_Anatoliy
С утра включил с кодом 15 - полёт нормальный. Будем считать что поторопился... Обычно я кручу фазу приёмника в одном направлении до появления ошибок,потом в обратном и устанавливаю среднее значение. А всё таки это очень длительный процесс - нельзя ли как то (скриптом каким) оперативно изменять значения задержек в iodelay? Ведь чтобы изменить эту константу совсем не обязательно пересобирать весь проект. А так приходится ждать по 30 минут для каждого изменения.
Алга
Создается автомат (FSM), который по запуску АЦП, производит автоматическую поиск и установку
клока в центр данных, меняя (перебирая ) значения задержек и определения оптимальной задержки.
У Xilinx есть много xapp'ов на эту тему с примерами. Зависит от семейств ФПГА.
Например xapp855,xapp856,xapp860, xapp866,xapp1064,xapp1071,xapp585
У Альтеры также есть инструменты надежного приема данных от АЦП с документацией
взависимости от семейства
_Anatoliy
Цитата(Алга @ Oct 5 2016, 10:10) *

У меня Альтеровская ария5,ткните,плз, где описано как динамически изменять задержки. DLL или что то ещё?

Altiobuf ? Читал но ничего не понял,никакой конкретики...
Алга
Я работаю с Xilinx. Но похоже у вас клок не попадает в центр данных. Это надо обеспечить.
Потом возможно несоответствие метода приема и разводки линий даных АЦП на плате (выравнивание).
Всю документацию и рекомендации от Алтеры надо просмотреть.
Как это обеспечивается Timing constraints и тд
Какие мегафункции используете для приема данных
Допустим может надо использовать ALTDDIO_IN или ALTLVDS_RX.
_Anatoliy
Цитата(Алга @ Oct 5 2016, 10:42) *

Ясно,спасибо!
Нашёл altiobuf_design_example , будем разбираться.
Алга
У вас не такой быстрый АЦП и если клок подстроен в центр данных,
то должно все надежно работать. Без ручной подстройки задержек. Не уплывать.
Есть еще момент- источники питания.
_Anatoliy
Цитата(Алга @ Oct 5 2016, 11:29) *
У вас не такой быстрый АЦП и если клок подстроен в центр данных,
то должно все надежно работать. Без ручной подстройки задержек. Не уплывать.
Есть еще момент- источники питания.

В качестве источников применяю тэксасовские из серии pth (pth08t231 и др.)
Алга
АЦП какой тип?
_Anatoliy
Цитата(Алга @ Oct 5 2016, 12:51) *
АЦП какой тип?

2 штуки ADS54RF63, интерливинг.

Но у меня с АЦП сигнал идёт на первую ПЛИС, там всё нормально. Речь о шине между 1-й и 2-й ПЛИС.
Алга
Возможно этот документ поможет
AN433
_Anatoliy
Цитата(Алга @ Oct 5 2016, 15:02) *
Возможно этот документ поможет
AN433

Спасибо,но по нему и писал sdc. Если всё делать как в нём описано - в проекте вылезают неслабые минусовые слэки по холду. Ушёл от них мультициклами,но имхо это неправильно. Входные задержки у Аррии5 получились больше чем входные задержки у циклона3 с похожим проектом,ну не должно такого быть. Поколдовал,поколдовал и плюнул.
Maverick
это
PS взято отсюда ссылка
+
ссылка
_Anatoliy
Цитата(Maverick @ Oct 5 2016, 15:25) *
это
PS взято отсюда ссылка

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

ссылка
warrior-2001
Ария 5 действительно весьма не быстра.
Питание проверяли? Выше писали уже.
_Anatoliy
Цитата(warrior-2001 @ Oct 6 2016, 13:12) *
Ария 5 действительно весьма не быстра.
Питание проверяли? Выше писали уже.

Да вроде уже всё работает(слышен стук по дереву).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.