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

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

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

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

Удачи! Rob


_Anatoliy
Цитата(RobFPGA @ Apr 26 2017, 16:05) *
Приветствую!

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

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

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

Удачи! Rob

Спасибо!
Таки только расфазировка бит думаете? Если это так то печально - для каждой платы делать свою калибровку очень длительный процесс. И прошивки для каждой платы свои... Завтра попробую подвигать шестой бит в шине А.
axalay
Цитата(RobFPGA @ Apr 26 2017, 17:05) *
Приветствую!

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

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

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

Удачи! Rob

Нужно смотреть как выровнены линии в шинах по длине, ну а далее задержки
krux
Нужно написать автомат автокалибровки и калибровать линк при каждом старте. Тогда и частоту до 500 - 600 можно будет вытянуть
_Anatoliy
Цитата(krux @ Apr 26 2017, 16:24) *
Нужно написать автомат автокалибровки и калибровать линк при каждом старте. Тогда и частоту до 500 - 600 можно будет вытянуть

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

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

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

Golikov A.
да вроде бы на выходах стоят элементы задержки управляемые.
ALTIOBUF megafunction
axalay
Цитата(Golikov A. @ Apr 26 2017, 17:40) *
да вроде бы на выходах стоят элементы задержки управляемые.
ALTIOBUF megafunction

если колбасит только один бит и трассы норм выровнены, то возможно непропай. У меня подобное было
dm.pogrebnoy
_Anatoliy
DIFF_TERM включили?
_Anatoliy
Цитата(Golikov A. @ Apr 26 2017, 16:40) *
да вроде бы на выходах стоят элементы задержки управляемые.
ALTIOBUF megafunction

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

Цитата(dm.pogrebnoy @ Apr 26 2017, 16:58) *
_Anatoliy
DCI включили?

Это что?

Цитата(axalay @ Apr 26 2017, 16:43) *
если колбасит только один бит и трассы норм выровнены, то возможно непропай. У меня подобное было

Бит не один, больше склоняюсь таки к времянкам.
dm.pogrebnoy
_Anatoliy
DIFF_TERM включили?

PS Извиняюсь, перепутал.
_Anatoliy
Цитата(dm.pogrebnoy @ Apr 26 2017, 16:58) *
_Anatoliy
DIFF_TERM включили?

А, это включено.
Inanity
Возможно это остатки флюса после пайки! Плату промывали? Непропай или микротрещина в шарике BGA - тоже вариант.
_Anatoliy
Пересмотрел весь UG на ALTIOBUF и нигде не нашёл спецификации на интерфейс управления. Как изменять величину задержки по последовательному порту IP?

А с другой стороны у меня длительность "глазка" 1600ps , а дискрета изменения задержки для D1 равна 517ps. Всего 3 отсчёта на глазок, имхо не очень большая степень свободы.
Хотелось бы услышать мнение тех кто реально этим занимался. Как эта технология ведёт себя в серии,если без автоматики? Ведь я уже прошёл через этот путь, подобрал оптимальные задержки, две платы запустились без проблем а на третьей "проявился" вот этот дефект. Такой большой разброс параметров микросхем? Правда для третьей платы мы покупали у другого поставщика , уж не знаю насколько это важно.
_Anatoliy
Изменяю задержки D1 и D3 в лапах, в файле *.qsf изменения есть, в assignments editor изменения есть, после компиляции смотрю в property editor - остаются старые значения wacko.gif И соответственно в сигналтапе картинки абсолютно не меняются. Как этот глюкодром уже достал...
Inanity
Цитата(_Anatoliy @ Apr 27 2017, 10:19) *
Такой большой разброс параметров микросхем?


Что-то сомнительно, 300МГц не такая уж высокая частота для разброса параметров микросхем. Как у вас вообще тактирование устроено? Source или System synchronouse? Может генератор шалит на глючной плате?
blackfin
FYI: Source_Synchronous_Interfaces_between_Altera_FPGAs
_Anatoliy
Цитата(Inanity @ Apr 27 2017, 13:09) *
Что-то сомнительно, 300МГц не такая уж высокая частота для разброса параметров микросхем. Как у вас вообще тактирование устроено? Source или System synchronouse? Может генератор шалит на глючной плате?

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

Так вот и для меня это стало сюрпризом. Схема Source synchronouse, передатчик VirtexV , приёмник ArriaV. У генератора смотрел фазовые шумы,нормально.
Пересобрал проект, в шине AB совсем выбросил задержки в лапах - в сигналтапе картинка практически не изменилась,в шестом бите как не было меандра так и нет.

Цитата(blackfin @ Apr 27 2017, 13:28) *

А это Вы к чему? Этот файл есть у меня но там не написано как с такой дискретой надёжно раскрыть максимум глазка. Две платы-то работают, охлаждал/нагревал, норма.
Inanity
_Anatoliy, я почему-то ошибочно зациклился на проблеме 6-го бита. А ведь проблема в иголках... И они на всех битах.

Цитата(_Anatoliy @ Apr 27 2017, 10:19) *
А с другой стороны у меня длительность "глазка" 1600ps , а дискрета изменения задержки для D1 равна 517ps. Всего 3 отсчёта на глазок, имхо не очень большая степень свободы.


Согласен, но вас не смущает то, что иголки проскакивают в битах в которых долго держится 1 или 0? Это не похоже на расфазировку. Иголка не рядом с фронтом или спадом, а прямо в центре бита (как у 7-го бита). Или у 9-10-11 битов, линия длительно находится в 1 или 0 и тут проскакивает иголка, как будто наводится помеха.


По-моему слишком глубоко копаем, обратите ещё внимание на периодичность помехи:


Даже период можно вычислить. Может какой DC-DC себя плохо чувствует? Например то, что питает банк FPGA?

_Anatoliy
Цитата(Inanity @ Apr 27 2017, 15:36) *

Спасибо,коллега! Да,действительно, очень похоже на регулярную помеху по питанию,я и частоту прикинул - 8 МГц. Но банки с LVDS и запитаны от 2,5В формируемого линейным стабилизатором. Кондюков блокирующих хватает. Осциллом ничего криминального не видно(примерно тоже что и на земле). Тут ещё другая информация появилась. Я сейчас подал из передатчика чисто все нули в статике - а на приёмнике увидел несколько единиц! Сейчас ещё подам все единицы - потом будем думать. А периодичность помехи вполне может быть связана с периодичностью сигнала.

Выглядит это вот так:
Код
На передатчике отправляются все нули
А = 050h
B = 054h
C = 000h
D = 004h

На передатчике отправляются все единицы
А = FEFh
B = FF3h
C = FFFh
D = 003h


Поскольку выглядит как полный бред осмысливать буду завтра с утра. laughing.gif
blackfin
Цитата(_Anatoliy @ Apr 27 2017, 16:34) *
Да,действительно, очень похоже на регулярную помеху по питанию,я и частоту прикинул - 8 МГц. Но банки с LVDS и запитаны от 2,5В формируемого линейным стабилизатором.

Линейные стабилизаторы имеют обыкновение возбуждаться, если на выходе стоит ёмкость с очень низким ESR (как правило, керамика).
alexadmin
Я бы задумался почему сбои приходятся ровно на спад regb[5]. Попробуйте скорость передачи уменьшить процентов на 20-30 и сравнить.
lembrix
А я вижу в момент спада 5-го бита нормальную работу счетчика, 6-ой бит переключается и все старшие биты ведут себя соответственно счетчику.
А тактовый сигнал для signal tap правильный?

_Anatoliy
Цитата(blackfin @ Apr 27 2017, 16:47) *
Линейные стабилизаторы имеют обыкновение возбуждаться, если на выходе стоит ёмкость с очень низким ESR (как правило, керамика).

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

Цитата(alexadmin @ Apr 27 2017, 18:40) *
Я бы задумался почему сбои приходятся ровно на спад regb[5]. Попробуйте скорость передачи уменьшить процентов на 20-30 и сравнить.

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

Цитата(lembrix @ Apr 27 2017, 19:32) *
А я вижу в момент спада 5-го бита нормальную работу счетчика, 6-ой бит переключается и все старшие биты ведут себя соответственно счетчику.
А тактовый сигнал для signal tap правильный?

Выше я говорил что эти же прошивки на двух аналогичных платах работают замечательно. К проекту у меня вопросов нет. Чует моя задница что завтра придётся микросхемы демонтировать, возможно некачественная пайка с коротышами. А возможно и приёмная микросхема поджаренная, мы её взяли по случаю, как б.у. по дешёвке т.к. всё равно купить больше негде, а заказ выполнять нужно. Вот теперь и огребём по полной...
_Anatoliy
Цитата(_Anatoliy @ Apr 27 2017, 20:52) *
Чует моя задница что завтра придётся микросхемы демонтировать, возможно некачественная пайка с коротышами. А возможно и приёмная микросхема поджаренная, мы её взяли по случаю, как б.у. по дешёвке т.к. всё равно купить больше негде, а заказ выполнять нужно. Вот теперь и огребём по полной...

Ну с микросхемой оказалось всё нормально,был банальный непропай одной линии в диффпаре 6-го бита. А насчёт не очень большая степень свободы беру слова обратно, погорячился... При дальнейшем развитии проекта буду делать автоматику. Интересно,можно ли как нибудь исхитриться и построить глазковую диаграмму для бит данных интерфейса?
Timmy
Цитата(_Anatoliy @ May 4 2017, 12:50) *
Ну с микросхемой оказалось всё нормально,был банальный непропай одной линии в диффпаре 6-го бита. А насчёт не очень большая степень свободы беру слова обратно, погорячился... При дальнейшем развитии проекта буду делать автоматику. Интересно,можно ли как нибудь исхитриться и построить глазковую диаграмму для бит данных интерфейса?

Очень любопытно, почему непропай одной линии приводил к сбоям сразу в нескольких линиях?
_Anatoliy
Цитата(Timmy @ May 4 2017, 15:19) *
Очень любопытно, почему непропай одной линии приводил к сбоям сразу в нескольких линиях?

Тоже не понятно, вроде приёмники для каждого бита индивидуальные. Был обрыв одной линии диффпары со стороны передатчика, соответственно на оба входа приёмника этого бита подавалось почти синфазное напряжение увеличенной амплитуды (примерно раза в два). А как это влияет на другие биты,хз? Как-то опора перекашивается? Но,кстати,после перепайки этот дефект ушёл но появился другой,теперь в 5-м бите идут очень редкие ошибки(ber примерно 1е-6) и тут уж нет никакой регулярности. Это уже очень похоже на уход таймингов.
_Anatoliy
Коллеги, а кто разбирался с ALTIOBUF? Чему реально равен шаг изменения задержки для Аррии-V-GX? В руководстве по применению ALTIOBUF пишут :
Код
For Arria®V (GX, GT, ST, SX) and Cyclone® V, the io_config_datain begins with MSB on the left and end with LSB on the right. Each delay block has 5 io_config_datain bits and each step is 25ps, that makes a total delay of 31 steps * 25ps = 775ps.


При симуляции этого процесса получаю шаг изменения 10ps. И где же истина?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.