Перейти к содержанию
    

ISERDESE2 +ADC3444 сложность настройки

Задача

Подключить ADC3444 к ПЛИС    kintex7

Исходные

две пары LVDS по которым передаются 14 битные отсчеты  в режиме DDR

Проблема 

ISERDESE2 не конфигурируется на 7 бит в режиме DDR

вопрос кто как это обходит?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, blackfin said:

RTFM: UG471.

ISERDESE2.jpg

согласен, но это когда одна дифферинциальная пара то можно сделать 14 бит, а  тут их две..... и если ставишь две пары при DDR то 7 бит поставить нельзя, а при 14 на выходе получается   28 бит и это явная лажа...

две пары.png

наглядно.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, swt said:

это когда одна дифферинциальная пара то можно сделать 14 бит, а  тут их две..

XAPP524 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 часов назад, swt сказал:

согласен, но это когда одна дифферинциальная пара то можно сделать 14 бит, а  тут их две..... и если ставишь две пары при DDR то 7 бит поставить нельзя, а при 14 на выходе получается   28 бит и это явная лажа...

Нет проблемы. На выходе простейший мультиплексор который коммутирует полученные семёрки бит в нужные пары. Частота работы мультиплексора та же на которой работает вся остальная схема. Проблемы нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/27/2021 at 11:21 AM, MegaVolt said:

Нет проблемы. На выходе простейший мультиплексор который коммутирует полученные семёрки бит в нужные пары. Частота работы мультиплексора та же на которой работает вся остальная схема. Проблемы нет.

Отличный вариант спасибо! почему мне не пришло это в голову и более того в документе  XAPP524  который привел blackfin ранее как я понял рекомендуется работать с диффиринциальной шиной как с недиффиринциальными сигналами в котором по in_p идут четные биты а in_n нечетные.

То есть предложили использовать буфер пина недифферинциальный как я понял. На один ISERDESE2  подать прямой clock, а на второй инверсный (или я их не понял от слова совсем). 

On 8/26/2021 at 6:34 PM, blackfin said:

как я понял рекомендуется работать с диффиринциальной шиной как с недиффиринциальными сигналами в котором по in_p идут четные биты а in_n нечетные.

То есть предложили использовать буфер пина недифферинциальный как я понял. На один ISERDESE2  подать прямой clock, а на второй инверсный (или я их не понял от слова совсем).  Мне кажется такое использование дифферинциальной шины похоже на костыли, но если другого ничего не придумать......

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/26/2021 at 4:40 PM, swt said:

ISERDESE2 не конфигурируется на 7 бит в режиме DDR

вам вообще не нужен serdes блок, поскольку с АЦП идет fclk, который явно указывает на границы отсчетов (слов) в битовом потоке. serdes используют, когда нет сигнала указывающего на границы и шлется сначала тестовый паттерн по которому через bitslip подстраивается выравнивание по словам

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, quato_a said:

вам вообще не нужен serdes блок, поскольку с АЦП идет fclk, который явно указывает на границы отсчетов (слов) в битовом потоке. serdes используют, когда нет сигнала указывающего на границы и шлется сначала тестовый паттерн по которому через bitslip подстраивается выравнивание по словам

наверно обойтись можно, но частота оцифровки 100 МГц, разрядность 14 бит, режим DDR и 2 линии LVDS получается clock сопровождения данных 350 МГц придется контролировать размещение в ПЛИС преобразователя (последовательного=>параллельный)  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

44 minutes ago, swt said:

наверно обойтись можно, но частота оцифровки 100 МГц, разрядность 14 бит, режим DDR и 2 линии LVDS получается clock сопровождения данных 350 МГц придется контролировать размещение в ПЛИС преобразователя (последовательного=>параллельный)  

kintex-7 с этим справиться. достаточен будет лишь констрейнт на клок dclk. в ручную контролировать размещение не обязательно.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 hours ago, swt said:

Мне кажется такое использование дифференциальной шины похоже на костыли, ...

А что мешает скачать готовый проект с сайта Xilinx'а и отлить его в своём граните: xapp524.zip ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, blackfin said:

А что мешает скачать готовый проект с сайта Xilinx'а и отлить его в своём граните: xapp524.zip ?

При освоении нового элемента пробую разные варианты для закрепления прочитанного материала в  xapp524 и стараюсь начинать с простого:  вот попробовал ядро использовать SelectIO Interface Wizard выбрал опцию Clocking strategy = internal для того что бы использовать оба сигнала от АЦП фрейм клок и клок данных и не понял где же задается частота в этом Wizard, она нужна чтоб посчитать шаг сдвига  IDELAYE2. Покрутился покрутился и решил пойти дальше и  столкнулся с проблемой синтез идет , Но при имплементация вылетело критическое предупреждение  

  • [Timing 38-472] The REFCLK pin of IDELAYCTRL lvds_1L_14bit/inst/delayctrl is not reached by any clock but IDELAYE2 lvds_1L_14bit/inst/pins[0].idelaye2_bus has REFCLK_FREQUENCY of 200.000 Mhz (period 5.000 ns). The IDELAYCTRL REFCLK pin frequency must match the IDELAYE2 REFCLK_FREQUENCY property value.

нашел по тексту в файлике inst : selectio_wiz_0_selectio_wiz (selectio_wiz_0_selectio_wiz.v)

цитата "....  .REFCLK_FREQUENCY       (200.0) ......" , а исправить не выходит - файлик только на чтение!!!  Вот почему Wizard не спросил меня про частоту на которой будет работать мой проект?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, swt said:

Вот почему Wizard не спросил меня про частоту на которой будет работать мой проект?

мне кажется лучше юзать примитивы, а не wizard. на примитивы selectIO IDDR, IDELAY, IDELAYCTRL и ISERDES хорошая документация и кодом лучше описывать все

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я сделал множество подобных приёмников, есть конечно много способов. Хотел вставить свои пять копеек. По мне это самый стабильный и верный способ.

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

2. Клок (DCO) принимаем на IDELAY, далее играемся задержкой по нему (далее - сигнал сдвига таткта)

3. Этот полученный клок делим чем-либо, можно простым BUFR - ом. 

3. Данные принимаем на ISERDES, запихиваем их результаты в отдельный сигнал. Соответственно, на каждый лэйн будет по 1 ISERDES. В нём выставляем настройки выхода АЦП. Не забываем по SPI регистрами выставить соответствующие настройки в самом АЦП, они должны быть одинаковыми. К каждому ISERDES подводим свой bitslip -сигнал(бит сдвига, им будем добиваться корректной последовательности с каждого лэйна)

4. Далее переводим АЦП в режим тестовой последовательности. Очень важно, чтобы все биты "отрабатывали" как можно чаще, бились, переключались 0-1-0-1. Можно пользовательскую последовательность - можно свою - не важно

5. Далее пишем простенький анализатор, который будет смотреть ситуацию по каждому лэйну, нажимать битслип, где это необходимо. Если все ситуации перебраны, а нужного сигнала нет, то двигаем сигнал сдвига такта. 

6. Если все лэйны откалиброваны, то вводим дополнительную проверку на стабильность  - бывает так, что у всех всё нормально, но ингогда проскакивают некорректные значения то здесь  - то там. Тогда опять повторяем вышеописанные процедуры. Этот перебор работает. Я ставлю условие, чтобы прошло как минимум 16000 правильных тестовых отчётов. Если хоть один плохой - меняем конфигурацию, перебираем далее.

7. Переводим АЦП в нормальный режим работы.

Да, как видно из схемы FRAME LANE  можно не калибровать, как показывает бывают перекосы с данными даже на очень хорошо разведённой плате. 

Удачи!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/31/2021 at 9:38 AM, quato_a said:

мне кажется лучше юзать примитивы, а не wizard. на примитивы selectIO IDDR, IDELAY, IDELAYCTRL и ISERDES хорошая документация и кодом лучше описывать все

Прошу помочь разобраться правильно ли я понял:

1. что в блоке IDELAYCTRL тактовая частота должна быть 
от 190 to 210 
от 290 to 310
от 390 to 410
такая же как указана в параметрах IDELAYE2  ???


           
            inst_IDELAYCTRL : component unisim.VCOMPONENTS.IDELAYCTRL
                port map(
                    RDY    => delay_locked_o,
                    REFCLK => delay_clk_i,
                    RST    => delay_rst_i
                );

2. Какую частоту можно подавать на вывод С в управлении задержкой блока IDELAYE2

      inst_IDELAYE2 : component unisim.VCOMPONENTS.IDELAYE2
        generic map(
            CINVCTRL_SEL          => "FALSE",
            DELAY_SRC             => "IDATAIN",
            HIGH_PERFORMANCE_MODE => "FALSE",
            IDELAY_TYPE           => "VARIABLE",
            IDELAY_VALUE          => IODELAY_VALUE,
            PIPE_SEL              => "FALSE",
            REFCLK_FREQUENCY      => 200.0,
            SIGNAL_PATTERN        => "DATA"
        )
        port map(
            CNTVALUEOUT => CNT_data_idelay_out,
            DATAOUT     => data_idelay_s,
            C           => up_clk_i,
            CE          => СE_data_idelay,
            CINVCTRL    => '0',
            CNTVALUEIN  => '0',
            DATAIN      => '0',
            IDATAIN     => data_ibufds_s,
            INC         => '1',
            LD          => '0',
            LDPIPEEN    => '0',
            REGRST      => '0'
        );
    3. Параметр IDELAYE2  REFCLK_FREQUENCY выбирается из диапазонов 
    от 190 to 210 от 290 to 310 от 390 to 410 ,но не обязательно 
    должен соответствовать частоте на которой передаются данные и заводятся в блок ISERDESE2. Просто шаг 
    подстройки будет соответствовать выбраному параметру?
    
    
    4. Не смог понять когда необходимо произвести сброс IDELAYCTRL поясните пожалуйста

P.S. скорость передачи данных в проекте 350 МГц

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, swt said:

Прошу помочь разобраться правильно ли я понял:

1. В параметрах задается для моделирования и контроля таймингов при сборке (что подано то что заявлено). В железе гарантируется работоспособность вот на этих частотах. 

2. 200МГц которые указали. 

3. Да. 

4. До момента стабилизации опорной частоты, чтобы он был правильно откалиброван. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...