|
Непонятная проблема с 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 модуля. и если всё включится правильно , то потом работае нормально сколь угодно долго. соответственно если не правильно сколь угодно долго работает не правильно.
что это может быть???
|
|
|
|
|
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: есть несколько мест, вроде и не ошибочных, но тонких, а в сумме не пашет. Попробуйте сделайте как я писал, это немного времени займет.
|
|
|
|
|
Apr 9 2009, 18:55
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Цитата(rv3dll(lex) @ Apr 9 2009, 18:26)  повторюсь - работает или нет зависит от загрузки плисины. если её освободить до 80 процентов всё работает как часы По опыту могу сказать в Virtex-4 DCM крайне нестабильны. Вы заметили какой в репорт-файле пишется джиттер на DCM? На мой взгляд величина очень огромная. Некоторое время назад я проводил ряд экспериментов над решением вопроса о быстродействии Virtex-4 и по случайному стечению обстоятельств на первой плате из партии в 10 шт. удалось разогнать DCM до 600МГц по выходу FX (по даташиту максимальная частота которого составляет где-то 300МГц) и пройти тесты по фильтрации сигнала с АЦП с помощью FIR-фильтра. Обрадованный результатом я попытался повторить эксперимент на других платах, но ничего не вышло - прошивка работала со сбоями, причем даже при снижении частоты по выходу FX до максимально рекомендованных 300МГц (в качестве опорного использовался КГ с низкими фазовыми шумами на 5-ой механической гармонике). Тогда я ради эксперимента попробовал подать опору от внешнего генератора исключив DCM - все платы устойчиво заработали на 600МГц. Ставить на плату отдельный генератор не позволяло место, а работать на низкой частоте не хотелось при таком-то потенциале! Тогда я сделал следующее - я стал поочередно фиксировать местоположение DCM на кристалле с помощью атрибута RLOC_ORIGIN, пока не добился устойчивой работы всех плат на частоте ~425МГц. Проблема мне видится в плохой ЭМС внутри кристалла из-за отсутствия развязки по цепям питания DCM и всей остальной части, отсюда очевидна и прямая зависимость от занимаемого объема и потребления (в моем случае вся площадь BGA кристалла на ПП была усеяна конденсаторами 0402). Могу с уверенностью сказать, что на частотах до 400МГц DDR можно спокойно обходиться без DCM и SERDES, особенно когда по условиям работы тактовая частота идет с перерывами, как например при общении по линк-портам TigerSHARC'а. P.S. Есть надежда, что в новых Virtex-6 эта проблема решена Цитата MMCM Programmable Features The MMCM has three input-jitter filter options: low bandwidth, high bandwidth, or optimized mode. Low-bandwidth mode has the best jitter attenuation but not the smallest phase offset. High-bandwidth mode has the best phase offset, but not the best jitter attenuation. Optimized mode allows the tools to find the best setting.
|
|
|
|
|
Apr 10 2009, 08:00
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(rloc @ Apr 9 2009, 22:55)  Могу с уверенностью сказать, что на частотах до 400МГц DDR можно спокойно обходиться без DCM и SERDES Ну вот послушайте же наконец, второе мнение совпадает с моим. Также еще хочу заметить следующее: в новом дизайне, где будет 64 канала, вы если будете ячить по-своему, у вас на выходах ISERDES, относящихся к разным кристаллам АЦП получатся разные временные домены, поэтому все равно придется ставить elastic. То есть сделав сейчас по-моему вы получите решение, которое одинаково бодро будет работать и на этом железе, и на новом. Если же вы будете продолжать по-своему - вы потратите время дважды: один раз сейчас, чтобы найти и прибить баг, и один раз потом, делая новый дизайн для нового железа.
|
|
|
|
|
Apr 10 2009, 10:28
|

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

|
Цитата(DmitryR @ Apr 10 2009, 12:00)  Ну вот послушайте же наконец, второе мнение совпадает с моим. Также еще хочу заметить следующее: в новом дизайне, где будет 64 канала, вы если будете ячить по-своему, у вас на выходах ISERDES, относящихся к разным кристаллам АЦП получатся разные временные домены, поэтому все равно придется ставить elastic. То есть сделав сейчас по-моему вы получите решение, которое одинаково бодро будет работать и на этом железе, и на новом. Если же вы будете продолжать по-своему - вы потратите время дважды: один раз сейчас, чтобы найти и прибить баг, и один раз потом, делая новый дизайн для нового железа. про временные домены не понятно???? второе мнение - это у кого???? сделав по Вашему равносильно тому, что в Fx кристалле делать процессор на микроблейзе. Я не прошу навязывания мне своего дизайна, который вы кстати не дадите, а задаю вопрос про имеющийся, сделанный как гибрид из предоставленных на сайте ксилинка примеров. И повторюсь делать я буду так как надо, а не как получилось у Вас. У меня были сомнения что ошибки возникают при переходе с домена на домен и я сделал следующее. поставил переход 1 и 2 канала ацп по одному фронту а 3 и 4 по другому. ошибок от этого меньше не стало. все каналы или работают или не работают То есть дело тут в ошибке более серьёзной чем переход с домена на домен.
|
|
|
|
|
Apr 10 2009, 10:50
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(rv3dll(lex) @ Apr 10 2009, 14:28)  про временные домены не понятно???? Что тут непонятного: каждый чип АЦП будет иметь свой LCLK, а это свой временной домен. Можно конечно попробовать на высокочастотный вход ISERDES подавать LCLK конкретного АЦП, а на деленный - одинаковый на все, благо что фаза у него бежать не будет к LCLK, хотя и будет отличаться. Но не знаю, не уверен, что заработает стабильно. Цитата(rv3dll(lex) @ Apr 10 2009, 14:28)  второе мнение - это у кого???? Это у rloc. Цитата(rv3dll(lex) @ Apr 10 2009, 14:28)  сделав по Вашему равносильно тому, что в Fx кристалле делать процессор на микроблейзе. Это не так: я вам предлагаю на логике сделать то, чего встроенный блок не может (DDR регистр длиной 12 бит). Цитата(rv3dll(lex) @ Apr 10 2009, 14:28)  Я не прошу навязывания мне своего дизайна, который вы кстати не дадите, а задаю вопрос про имеющийся, сделанный как гибрид из предоставленных на сайте ксилинка примеров. И повторюсь делать я буду так как надо, а не как получилось у Вас. Тут у вас целых три противоречия. Первое: вы задаете вопрос про имеющийся дизайн, но я его считаю насквозь неправильным, и соответственно даю советы. Оснований же считать его правильным у вас нет: он не работает. Вам кажется, что он не работает чуть-чуть, еще пару часов - и все будет в порядке, но идет уже второй день, и послушав меня вы бы уже скорее всего закрыли этот топик или получили сильное подтверждение того, что проблемы не в прошивке. Второе: у вас действительно сделан гибрид, поэтому он не подходит под определение "как надо". И третье: глупо просить советов, не будучи готовым им последовать. Цитата(rv3dll(lex) @ Apr 10 2009, 14:28)  У меня были сомнения что ошибки возникают при переходе с домена на домен и я сделал следующее.
поставил переход 1 и 2 канала ацп по одному фронту а 3 и 4 по другому. ошибок от этого меньше не стало. все каналы или работают или не работают То есть дело тут в ошибке более серьёзной чем переход с домена на домен. Так делать переход неверно, ибо если фазы частот бегут друг к другу - вы получите ошибку хоть к какому фронту привяжитесь. Но это так, к слову, тут похоже не та проблема.
|
|
|
|
|
Apr 10 2009, 11:18
|

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

|
The classic ADC interface version of the one-wire reference design can support any number of resolution bits up to 80 MSPS because the serializer is constructed inside the FPGA logic (slices and flip-flops) and uses a digital clock manager (DCM) as the internal clock source. However, the featured ADC interface is limited to 12-bit resolution and approximately 120 MSPS because it is bonded to the ISERDES components. это из того документа на сколько я понимаю, Вы считаете что 866 документ от ксайлинкс и зип файл с примерами вещь абсолютно не рабочая, не правильная и не может быть использована??? я знаю что не полностью повторил интерфейс, заменив делитель на слок менеджер. И ещё я знаю что есть проект в котором сделано всё и работает и знаю что стереть из своего, чтобы тоже заработало. повторюсь проблема появилась после заполнения плисины Цитата(DmitryR @ Apr 10 2009, 14:50)  Так делать переход неверно, ибо если фазы частот бегут друг к другу - вы получите ошибку хоть к какому фронту привяжитесь. Но это так, к слову, тут похоже не та проблема. всё тактируется от одного резонатора. и эти 2 частоты это 50 мегагерц с резонатора напрямую и 50 мегагерц которые клок менеджер сделал из 300 - как же должно всё колбасить чтоб они побежали на половину периода.
|
|
|
|
|
Apr 10 2009, 11:48
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(rv3dll(lex) @ Apr 10 2009, 15:13)  повторюсь проблема появилась после заполнения плисины Повторюсь, rloc вам сказал, с чем это может быть связано. Вы же уперлись, вот вам надо с DCM и все, Xilinx посоветовал - теперь надо убиться, но выполнить. Вы все их советы так выполняете? По емкостной развязке например, все-все дословно? Кажется, топик вообще начался с того, что вы разводку сделали в корне неверно. Так что теперь пытаться тыкать людям, которые пытаются несмотря на вашу грубость вам помочь xapp и говорить, что они балбесы несмыслящие - вроде как-то некрасиво, не находите? Цитата(rv3dll(lex) @ Apr 10 2009, 15:18)  и эти 2 частоты это 50 мегагерц с резонатора напрямую и 50 мегагерц которые клок менеджер сделал из 300 - как же должно всё колбасить чтоб они побежали на половину периода. Я вобщем-то отметил, что не думаю, что проблема тут. Однако, если у вас есть в FPGA 50 напрямик от резонатора (странная идея питать такие высокочастотные АЦП от резонатора, ну да ладно) самое время попробовать использовать ее вместо деленной от 300.
|
|
|
|
|
Apr 10 2009, 12:55
|

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

|
Цитата(DmitryR @ Apr 10 2009, 15:48)  Повторюсь, rloc вам сказал, с чем это может быть связано. Вы же уперлись, вот вам надо с DCM и все, Xilinx посоветовал - теперь надо убиться, но выполнить. Вы все их советы так выполняете? По емкостной развязке например, все-все дословно? Кажется, топик вообще начался с того, что вы разводку сделали в корне неверно. Так что теперь пытаться тыкать людям, которые пытаются несмотря на вашу грубость вам помочь xapp и говорить, что они балбесы несмыслящие - вроде как-то некрасиво, не находите?
Я вобщем-то отметил, что не думаю, что проблема тут. Однако, если у вас есть в FPGA 50 напрямик от резонатора (странная идея питать такие высокочастотные АЦП от резонатора, ну да ладно) самое время попробовать использовать ее вместо деленной от 300. чтобы вопросов не возникало - генератор фирмы эпсон стоит на удалённой плате с ацп с ацп идёт 50 мегагерц на плис и приходит на вход клок менеджера, с которого идут 50 300 100 для шин процессоров и прочего. параллельно приходит битовый и кадровый клок. битовый клок идёт на другой менеджер который получает 50 и 300
|
|
|
|
|
Apr 10 2009, 13:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(rv3dll(lex) @ Apr 10 2009, 16:55)  чтобы вопросов не возникало - генератор фирмы эпсон стоит на удалённой плате с ацп с ацп идёт 50 мегагерц на плис и приходит на вход клок менеджера, с которого идут 50 300 100 для шин процессоров и прочего. Вопросов не возникает, возникают дополнительные предостережения: умножая 50 на шесть, чтобы получить 300, DCM находится в HF mode, а для этого режима 50 на входе - минимально допустимая, что на мой взгляд многократно увеличивает риски, которые описал rloc. Да и вообще, вторая DCM тут точно лишняя: можно из LCLK получить 300 и 100, а 50 получить потом из 100 на PMCD или вообще на триггере.
|
|
|
|
|
Apr 10 2009, 15:10
|

Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 14-08-05
Из: Украина
Пользователь №: 7 621

|
Цитата(rloc @ Apr 10 2009, 11:26)  Я частоту DCM задаю потом, программным путем, а для ISE в констрейнсах ставлю условия помягче  Т.е вы разводите проект с констрейнсами скажем 100Mhz, а потом увеличиваете частоту (насилуя DCM заоблачными частотами) проводите эксперименты и после этого пишите что DCM глючит и про какое-то EMC. Естественно он будет глючить, т.к роут и размещение внутри кристалла проводится относительно тех констрейнсов условия которых вы ставите помягче. Вот часть даташита по DCM Сорри за оффтоп в этой теме.
Прикрепленные файлы
v4_dcm.pdf ( 264.98 килобайт )
Кол-во скачиваний: 102
--------------------
"Мы будем играть, пока не треснут наши гитары, и все те, кто любит рок - я отдаю вам честь!" AC/DC
|
|
|
|
|
Apr 15 2009, 21:45
|
Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 5-01-05
Из: г. Зеленоград
Пользователь №: 1 817

|
Цитата(rv3dll(lex) @ Apr 15 2009, 09:28)  4. про задержку не понял?? имеется ввиду сдвиг фазы DCM??? если да, то хватает - типовое значение сдвига 150 шагов сдвига (работает от 50 до 250) Если я не ошибаюсь, то для входной частоты 50 МГц максимальное значение сдвига будет 179. БОльшие задать будет можно, но сдвиг будет ограничен этим значением. Поправьте меня, если что не так.
|
|
|
|
|
Apr 17 2009, 04:57
|

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

|
Уже давно просмотрел и проанализировал и кое - что прояснил. при отсутствии сигнала шумит около уровня 2048 при переходе через 2048 разом меняются все биты и выставляется один старщий фактически-же в этот момент число меняется на 3412 или 682 ну и плюс минус пару разрядов шума. оба этих отклонения имеют различие с 2048 в примерно 1364 единици разложим двоично 0101010 - то есть каждый второй не изменяется, а остаётся старым значением. исходя из того, что такие ошибки имеют характер 1 периода - можно предположить, что неменяющиеся биты из предыдущего отсчёта и по этому в следующем отсчёте 2 соседних отсчёта уже не имеют такой разници, так как оба находятся в области большей 2048. также и при обратном переходе в область ниже 2048. можно предполагать всё неправильный захват фрейма или неправильную фазировку, но как ни странно переконфигурирование iserdes и игра с фазами dcm ничего не даёт. те-же временные ворота по фазе и всё тоже самое, как и при нормальной работе, только с этими вот врезками. пробовал по сотне раз всё это менять в том числе и в автомате, который детектирует эти врезки. помогает пересброс DCM - опять-же на большинстве плат этого не требуется. на некоторых 1 раз из 100 включений начинает работать со второго раза на единицах почти каждое включение требует 3-7 перезапусков. если изменить параметр PARAMETER C_DESKEW_ADJUST = SOURCE_SYNCHRONOUS на систем - неправильное включение будет на всех платах 70 раз из 100 файл данных даю
Сообщение отредактировал rv3dll(lex) - Apr 17 2009, 05:00
Прикрепленные файлы
int.txt ( 17.98 килобайт )
Кол-во скачиваний: 41
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|