|
Непонятная проблема с LVDS, V4 |
|
|
|
Apr 9 2009, 06:05
|

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

|
кратко.
есть плис 4 виртекс есть ацп всё это дело соединено между собой.
битовая частота 300 мгц кадровая 50 изначально соединение произведено не правильно - сигналы заведены на центральную колонну плис, поэтому не получается штатно использовать деление с помощью BUFR, а топологию корректировать пока не возможно.
поэтому
входные буфера сделаны правильно с помощью iserdes и BITSLIP а вот клок 300 подан на DCM - которым поделён им до 50 мегагерц и использован для десериализации сигналов.
генератор 50 мгц стоит на ацп. ацп формирует 300 и кадровую 50 и 50 однопроводную на тактирование остальной плисины.
решение кривое, но логически рабочее.
так вот есть некоторая непонятная проблема, появившаяся после некоторого заполнения плис.
иногда данные не корректные, вернее они с импульсными помехами - однопериодными врезками, причём явно видно, что модули bitslip правильно сдвинули поток
переконфигурация bitslip не помогает, всевозможные сдвиги сигналов друг относительно друга не помогают
помогает только пересброс ресетом DCM модуля. и если всё включится правильно , то потом работае нормально сколь угодно долго. соответственно если не правильно сколь угодно долго работает не правильно.
что это может быть???
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 14)
|
Apr 9 2009, 08:25
|

Полное ничтожество
    
Группа: 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. когда происходит ошибка никакими манипуляциями с этим числом не удаётся ничего ихменить - ложный сигнал идёт как бы в давесок к правильной работе. есть подозрение, что чтото не так с работой самого клок менеджера - так как при его пересбросе он встаёт то так , то так временно сделан модуль, который распознаёт неправильную работу (распознавая помехи) и делает полное переконфигурирование интерфейса до тех пор пока не станет хорошо. Понимаю что это не правильно, но другого способа не придумал.
|
|
|
|
|
Apr 9 2009, 08:47
|

Полное ничтожество
    
Группа: 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 они всегда длиной в один отсчёт короче бред какой-то. но главное - повторюсь если всё сработало правильно - будет работать правильно бесконечно долго не смотря ни на что, а если не правильно - то также неправильно будет работать дальше.
|
|
|
|
|
Apr 9 2009, 09:21
|
Профессионал
    
Группа: Свой
Сообщений: 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 например), может быть, это что-то прояснит.
|
|
|
|
|
Apr 9 2009, 11:22
|
Профессионал
    
Группа: Свой
Сообщений: 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: есть несколько мест, вроде и не ошибочных, но тонких, а в сумме не пашет. Попробуйте сделайте как я писал, это немного времени займет.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|