swt 0 26 августа, 2021 Опубликовано 26 августа, 2021 · Жалоба Задача Подключить ADC3444 к ПЛИС kintex7 Исходные две пары LVDS по которым передаются 14 битные отсчеты в режиме DDR Проблема ISERDESE2 не конфигурируется на 7 бит в режиме DDR вопрос кто как это обходит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 26 августа, 2021 Опубликовано 26 августа, 2021 · Жалоба 12 minutes ago, swt said: вопрос кто как это обходит? RTFM: UG471. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
swt 0 26 августа, 2021 Опубликовано 26 августа, 2021 · Жалоба 1 hour ago, blackfin said: RTFM: UG471. согласен, но это когда одна дифферинциальная пара то можно сделать 14 бит, а тут их две..... и если ставишь две пары при DDR то 7 бит поставить нельзя, а при 14 на выходе получается 28 бит и это явная лажа... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 26 августа, 2021 Опубликовано 26 августа, 2021 · Жалоба 15 minutes ago, swt said: это когда одна дифферинциальная пара то можно сделать 14 бит, а тут их две.. XAPP524 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 29 27 августа, 2021 Опубликовано 27 августа, 2021 · Жалоба 17 часов назад, swt сказал: согласен, но это когда одна дифферинциальная пара то можно сделать 14 бит, а тут их две..... и если ставишь две пары при DDR то 7 бит поставить нельзя, а при 14 на выходе получается 28 бит и это явная лажа... Нет проблемы. На выходе простейший мультиплексор который коммутирует полученные семёрки бит в нужные пары. Частота работы мультиплексора та же на которой работает вся остальная схема. Проблемы нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
swt 0 30 августа, 2021 Опубликовано 30 августа, 2021 · Жалоба 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: XAPP524 ? как я понял рекомендуется работать с диффиринциальной шиной как с недиффиринциальными сигналами в котором по in_p идут четные биты а in_n нечетные. То есть предложили использовать буфер пина недифферинциальный как я понял. На один ISERDESE2 подать прямой clock, а на второй инверсный (или я их не понял от слова совсем). Мне кажется такое использование дифферинциальной шины похоже на костыли, но если другого ничего не придумать...... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 30 августа, 2021 Опубликовано 30 августа, 2021 · Жалоба On 8/26/2021 at 4:40 PM, swt said: ISERDESE2 не конфигурируется на 7 бит в режиме DDR вам вообще не нужен serdes блок, поскольку с АЦП идет fclk, который явно указывает на границы отсчетов (слов) в битовом потоке. serdes используют, когда нет сигнала указывающего на границы и шлется сначала тестовый паттерн по которому через bitslip подстраивается выравнивание по словам Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
swt 0 30 августа, 2021 Опубликовано 30 августа, 2021 · Жалоба 3 hours ago, quato_a said: вам вообще не нужен serdes блок, поскольку с АЦП идет fclk, который явно указывает на границы отсчетов (слов) в битовом потоке. serdes используют, когда нет сигнала указывающего на границы и шлется сначала тестовый паттерн по которому через bitslip подстраивается выравнивание по словам наверно обойтись можно, но частота оцифровки 100 МГц, разрядность 14 бит, режим DDR и 2 линии LVDS получается clock сопровождения данных 350 МГц придется контролировать размещение в ПЛИС преобразователя (последовательного=>параллельный) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 30 августа, 2021 Опубликовано 30 августа, 2021 · Жалоба 44 minutes ago, swt said: наверно обойтись можно, но частота оцифровки 100 МГц, разрядность 14 бит, режим DDR и 2 линии LVDS получается clock сопровождения данных 350 МГц придется контролировать размещение в ПЛИС преобразователя (последовательного=>параллельный) kintex-7 с этим справиться. достаточен будет лишь констрейнт на клок dclk. в ручную контролировать размещение не обязательно. иначе если через serdes работать, то например по паттерну вы синхронизируетесь и определите границы отсчетов, далее перенастроите АЦП на рабочий режим, у него пропадет на время конфигурации клок и выходные данные, а потом появятся... и я не уверен что после этого serdes будет корректно защелкивать отсчеты Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 30 августа, 2021 Опубликовано 30 августа, 2021 · Жалоба 11 hours ago, swt said: Мне кажется такое использование дифференциальной шины похоже на костыли, ... А что мешает скачать готовый проект с сайта Xilinx'а и отлить его в своём граните: xapp524.zip ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
swt 0 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба 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 не спросил меня про частоту на которой будет работать мой проект? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 31 августа, 2021 Опубликовано 31 августа, 2021 · Жалоба 21 minutes ago, swt said: Вот почему Wizard не спросил меня про частоту на которой будет работать мой проект? мне кажется лучше юзать примитивы, а не wizard. на примитивы selectIO IDDR, IDELAY, IDELAYCTRL и ISERDES хорошая документация и кодом лучше описывать все Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 23 сентября, 2021 Опубликовано 23 сентября, 2021 · Жалоба Я сделал множество подобных приёмников, есть конечно много способов. Хотел вставить свои пять копеек. По мне это самый стабильный и верный способ. 1. Визарды лучше не использовать. 2. Клок (DCO) принимаем на IDELAY, далее играемся задержкой по нему (далее - сигнал сдвига таткта) 3. Этот полученный клок делим чем-либо, можно простым BUFR - ом. 3. Данные принимаем на ISERDES, запихиваем их результаты в отдельный сигнал. Соответственно, на каждый лэйн будет по 1 ISERDES. В нём выставляем настройки выхода АЦП. Не забываем по SPI регистрами выставить соответствующие настройки в самом АЦП, они должны быть одинаковыми. К каждому ISERDES подводим свой bitslip -сигнал(бит сдвига, им будем добиваться корректной последовательности с каждого лэйна) 4. Далее переводим АЦП в режим тестовой последовательности. Очень важно, чтобы все биты "отрабатывали" как можно чаще, бились, переключались 0-1-0-1. Можно пользовательскую последовательность - можно свою - не важно 5. Далее пишем простенький анализатор, который будет смотреть ситуацию по каждому лэйну, нажимать битслип, где это необходимо. Если все ситуации перебраны, а нужного сигнала нет, то двигаем сигнал сдвига такта. 6. Если все лэйны откалиброваны, то вводим дополнительную проверку на стабильность - бывает так, что у всех всё нормально, но ингогда проскакивают некорректные значения то здесь - то там. Тогда опять повторяем вышеописанные процедуры. Этот перебор работает. Я ставлю условие, чтобы прошло как минимум 16000 правильных тестовых отчётов. Если хоть один плохой - меняем конфигурацию, перебираем далее. 7. Переводим АЦП в нормальный режим работы. Да, как видно из схемы FRAME LANE можно не калибровать, как показывает бывают перекосы с данными даже на очень хорошо разведённой плате. Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
swt 0 3 марта, 2022 Опубликовано 3 марта, 2022 · Жалоба 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 МГц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 3 марта, 2022 Опубликовано 3 марта, 2022 · Жалоба 8 minutes ago, swt said: Прошу помочь разобраться правильно ли я понял: 1. В параметрах задается для моделирования и контроля таймингов при сборке (что подано то что заявлено). В железе гарантируется работоспособность вот на этих частотах. 2. 200МГц которые указали. 3. Да. 4. До момента стабилизации опорной частоты, чтобы он был правильно откалиброван. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться