реклама на сайте
подробности

 
 
> Непонятная проблема с LVDS, V4
rv3dll(lex)
сообщение Apr 9 2009, 06:05
Сообщение #1


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



кратко.

есть плис 4 виртекс есть ацп
всё это дело соединено между собой.

битовая частота 300 мгц кадровая 50
изначально соединение произведено не правильно - сигналы заведены на центральную колонну плис, поэтому не получается штатно использовать деление с помощью BUFR, а топологию корректировать пока не возможно.

поэтому

входные буфера сделаны правильно с помощью iserdes и BITSLIP
а вот клок 300 подан на DCM - которым поделён им до 50 мегагерц и использован для десериализации сигналов.

генератор 50 мгц стоит на ацп. ацп формирует 300 и кадровую 50 и 50 однопроводную на тактирование остальной плисины.

решение кривое, но логически рабочее.

так вот есть некоторая непонятная проблема, появившаяся после некоторого заполнения плис.

иногда данные не корректные, вернее они с импульсными помехами - однопериодными врезками, причём явно видно, что модули bitslip правильно сдвинули поток

переконфигурация bitslip не помогает, всевозможные сдвиги сигналов друг относительно друга не помогают

помогает только пересброс ресетом DCM модуля. и если всё включится правильно , то потом работае нормально сколь угодно долго. соответственно если не правильно сколь угодно долго работает не правильно.

что это может быть???
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 14)
DmitryR
сообщение Apr 9 2009, 06:53
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Итак, 300 идет на ISERDES напрямик (или через DCM 1:1 ?), 50 идет на ISERDES через DCM. Два вопроса: как обрабатывается кадровый строб от АЦП и уверены ли вы, что фронт 300 МГц, приходящих на ISERDES находится в середине окна данных?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Apr 9 2009, 07:53
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



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


Очень похожие симптомы на проблемы с питанием FPGA. У меня похожее было при связи двух V2 между собой через LVDS. В "пустых" плисах- все бегало без ошибок, добавили логику обработки - стали периодически выскакивать ошибки передачи данных. В результате обнаружилось что при начале обработки блока данных небольшая посадка питания вызывала кратковременный сбой DCM (при этом LOCK НЕ!!!! сбрасывался). Вылечилось заменой другой тип стабилизатора питания, и дополнительной обвеской емкостями.

Успехов! Rob.
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Apr 9 2009, 08:25
Сообщение #4


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



Цитата(DmitryR @ Apr 9 2009, 10:53) *
Итак, 300 идет на ISERDES напрямик (или через DCM 1:1 ?), 50 идет на ISERDES через DCM. Два вопроса: как обрабатывается кадровый строб от АЦП и уверены ли вы, что фронт 300 МГц, приходящих на ISERDES находится в середине окна данных?


да 300 идёт на iserdes c 1*1 DCM соответственно на входы clk_div десериалайзера идёт с 1/6.

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

значение подобрано и находится в диапазоне от 50 до 250 - вписывается серединка - 150.

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

есть подозрение, что чтото не так с работой самого клок менеджера - так как при его пересбросе он встаёт то так , то так

временно сделан модуль, который распознаёт неправильную работу (распознавая помехи) и делает полное переконфигурирование интерфейса до тех пор пока не станет хорошо. Понимаю что это не правильно, но другого способа не придумал.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Apr 9 2009, 08:28
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



С первым вопросом разобрались, остался второй: как кадровый строб от АЦП обрабатывается.
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Apr 9 2009, 08:47
Сообщение #6


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



Цитата(DmitryR @ Apr 9 2009, 12:28) *
С первым вопросом разобрались, остался второй: как кадровый строб от АЦП обрабатывается.


кадровый строб так-же как и данные проходят десериалайзер с тем-же модулем bitslip далее даётся несколько заходов на анализ принятых данных и выдаётся стров на битслип (пропуск) если последовательность не соответствует 111111000000 - как только начинает соответствовать стробы пропуска далее не выдаются и даётся инфа что подстроено

само собой стробы пропуска выдаются и на все битслипы данных с ацп. это я взял из 866 документа от ксайлинкс.

ацп выдаёт код в прямом коде - то есть при отсутствии сигнала 2047

видимо, при переходе через этот ноль(2047) вверх и вниз выскакивают палочки


2050
2048
2045
3050
2045
---
2046
1000
2046

они всегда длиной в один отсчёт короче бред какой-то.

но главное - повторюсь если всё сработало правильно - будет работать правильно бесконечно долго не смотря ни на что, а если не правильно - то также неправильно будет работать дальше.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Apr 9 2009, 09:21
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



То есть, кадровый строб по сути не используется: АЦП ставится в тестовый режим выдавать 111111000000, и дальше пинается BITSLIP до тех пор, пока внутри не увидится 111111000000. Я в свое время пытался так сделать - это оказалось как-то сложно, и я сделал быстрее и работоспособно:

1. Входной поток захватывается клоком 300, прошедшим через IDELAY (или DCM, неважно), сначала в DDR триггеры в пэде и потом попарно в обычный сдвиговый регистр на триггерах.
2. По сигналу FRAME этот сдвиговый регистр переписывается в параллельный - данные готовы. Но они пока в домене 300 МГц.
3. Далее elastic buffer из короткого двуклокового FIFO на LUT: пишется по частоте 300, признак записи - FRAME, читается всегда по частоте 300/6 (сделана банальная схема, дающая ему заполнится до половины перед началом вычитки).
Далее, делается timesim, по нему определяется нужная задержка клока и вписывается в IDELAY или DCM статически. Все, никаких автоматов, никаких динамических подстроек и битслипов.

Что же касается вашего случая - то тут еще вопросы следующие:
1. Зачем записывать задержку в порт DCM из автомата, если она расчитана зараннее? Сделайте fixed phase shift и уберите этот автомат.
2. Судя по тому, что вы ждете 12 бит на 50 МГц, а исходная частота 300 МГц - у вас данные все же DDR, а в документации на ISERDES я нигде не вижу, чтобы он мог обрабатывать 12 бит (10 максимум), поэтому до сих пор не понимаю до конца ваш дизайн.
3. Посмотрите на фазовое соотношение FRAME и внутренних 50 МГц (с помощью ChipScope например), может быть, это что-то прояснит.
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Apr 9 2009, 10:05
Сообщение #8


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



кадровый строб используется.

так как он сопровождает 12 бит данных на 6 импульсах клока - то после его десериализации получается 111111000000 если он в фазе с делённым клоком клок менеджера, а так как он в фазе с данными то подстройкой пропуска битслипа достигается правильный сдвиг.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Apr 9 2009, 10:15
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Ууууу... Ужас. Посмотрите в документацию на АЦП: держу пари вы увидите там, что скважность кадрового строба в 50% не гарантируется. Потом, кадровый строб должен захватываться SDR по переднему фронту тактовой частоты, так как он изменяется по ее заднему фронту.
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Apr 9 2009, 11:02
Сообщение #10


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



ads5242 - там всё гарантируется - то что я сделал это из примеров ксайлинкс

порт виртекса 4го симметричный - в параллель работает 2 десериалайзера в сдр режиме. каджый по своему фронту пишет по 6 бит.

кадровый строб учитывается 1 раз при подстройке дальше нет.

150 сначала было вписано жестко - начал искать глюки переделал на изменяемую
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Apr 9 2009, 11:22
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(rv3dll(lex) @ Apr 9 2009, 15:02) *
ads5242 - там всё гарантируется
Страница 7 ДШ, ADCLKOUT duty cycle 45-55%. 10% зазор, это бит целый, однако.

Цитата(rv3dll(lex) @ Apr 9 2009, 15:02) *
- то что я сделал это из примеров ксайлинкс

порт виртекса 4го симметричный - в параллель работает 2 десериалайзера в сдр режиме. каджый по своему фронту пишет по 6 бит.
И это Xilinx так рекомендовал делать, поставить в параллель два ISERDES в SDR режиме для захвата DDR сигнала? Не верю, (с) Станиславский: там специально сделана возможность работы ISERDES в режиме DDR, так как параллельное их включение не обеспечивает оптимальной трассировки и может приводить к скосу между их входами.


Цитата(rv3dll(lex) @ Apr 9 2009, 15:02) *
кадровый строб учитывается 1 раз при подстройке дальше нет.
Плохо. Итог: у вас проект сделан, что называется, не robust: есть несколько мест, вроде и не ошибочных, но тонких, а в сумме не пашет. Попробуйте сделайте как я писал, это немного времени займет.
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Apr 9 2009, 11:34
Сообщение #12


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



если я сделаю как у вас то всю плисину займёт десериалайзер
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Apr 9 2009, 11:45
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



У страха глаза велики, там будет примерно по 25 триггеров и лутов.
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Apr 9 2009, 12:00
Сообщение #14


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



http://www.xilinx.com/support/documentatio...tes/xapp866.pdf

я уже не первый раз даю тебе эту ссылку - неужели так сложно 1 раз прочитать
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Apr 9 2009, 12:25
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Я ее прочитал, неоднократно в свое время, но дело не в этом: у меня-то все работает, а о помощи просите вы. Поэтому прочтите его и вы, на странице 8: "The classic ADC interface does not use I/O features of Virtex-4 or Virtex-5 FPGAs". Так что мое предложение - это первая часть xapp866, не более.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01484 секунд с 7
ELECTRONIX ©2004-2016