Art55555 0 24 октября, 2017 Опубликовано 24 октября, 2017 (изменено) · Жалоба Что сделано. 1. Заменил тип на VAR_LOAD 2. Подал такт clk_200 с PLL, образованный из начальной 100 МГц путём умножения. 3. Занулил СЕ, INC. Чего добились: 1. Наконец-то начал реагировать выход ISERDESE2. Чего не добились: "ЧИстых" 55 и АА, которые были раньше. НАблюдения: После старта платы перевожу в режим 21 регистр значение 30. После этого видим "грязный" выход - 55. Теперь чистым он никогда не бывает. Дальше я играюсь сигналом CNTVALUEIN=> dco_delay (подаю с VIO) от 00 до 1F. От 55 мы потихоньку переходим к FF-F7 и уже к значению 1D получаем стабильный FF на выходе. Причём, если я прибаляю 1, т.е. на 1E - выход портится (FF-F7 вперемешку), прибавляю ещё 1 (1F) и опять вижу стабильный FF на выходе. Т.е явного окна (плохо - умеренно- хорошо-умеренно-плохо) я ни вижу. Также бывает, что при определённых значениях задержки вообще перестаёт работать Chipscope, который тактируется по aclk_div. И ещё явный косяк с частотами, мне кажется. Сейчас проверяю зависимость между aclk_div и clk_200. Текущий код ниже. x_dco0 : IBUFDS generic map ( DIFF_TERM => TRUE, -- Differential Termination IBUF_LOW_PWR => FALSE, -- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards IOSTANDARD => "LVDS_25") port map ( O => aclk, -- Clock buffer output I => dco1p, -- Diff_p clock buffer input (connect directly to top-level port) IB => dco1n -- Diff_n clock buffer input (connect directly to top-level port) ); xIDELAY: IDELAYE2 generic map ( SIGNAL_PATTERN => "CLOCK", REFCLK_FREQUENCY => 200.0, HIGH_PERFORMANCE_MODE => "TRUE", --FINEDELAY => "BYPASS", DELAY_SRC => "IDATAIN", CINVCTRL_SEL => "FALSE", IDELAY_TYPE => "var_load",--"VARIABLE", IDELAY_VALUE => 0, PIPE_SEL => "FALSE" ) port map ( DATAIN => '0',--, IDATAIN => aclk, DATAOUT => d_aclk, C => clk_200, --200 MHz CE => '0', INC => '0', LD => ld_dco_delay, --идет с VIO CNTVALUEIN => dco_delay, --идет с VIO CNTVALUEOUT => open, REGRST => not AdcIdlyCtrlRdy,--'0',-- CINVCTRL => '0', LDPIPEEN => '0' ); bufio_adc: bufg port map ( i => d_aclk, o => aclk_main ); --FB bufio_adc200: bufg port map ( i => clk_200i, o => clk_200 ); --FB BUFR_ins1 : BUFR generic map ( BUFR_DIVIDE => "4", -- Values: "BYPASS, 1, 2, 3, 4, 5, 6, 7, 8" SIM_DEVICE => "7SERIES" -- Must be set to "7SERIES" ) port map ( O => aclk_div, -- 1-bit output: Clock output port CE => '1', -- 1-bit input: Active high, clock enable (Divided modes only) CLR => '0', -- 1-bit input: Active high, asynchronous clear (Divided modes only) I => d_aclk -- 1-bit input: Clock buffer input driven by an IBUFG, MMCM or local interconnect ); x_IDELAYCTRL : IDELAYCTRL port map (REFCLK => clk, RST => reset, RDY => AdcIdlyCtrlRdy); xISERDES111: ISERDESE2 generic map ( SERDES_MODE => "MASTER", INTERFACE_TYPE => "NETWORKING", IOBDELAY => "Both", DATA_RATE => "DDR", DATA_WIDTH => 8, DYN_CLKDIV_INV_EN => "FALSE", DYN_CLK_INV_EN => "FALSE", NUM_CE => 1, OFB_USED => "FALSE", INIT_Q1 => '0', INIT_Q2 => '0', INIT_Q3 => '0', INIT_Q4 => '0', SRVAL_Q1 => '0', SRVAL_Q2 => '0', SRVAL_Q3 => '0', SRVAL_Q4 => '0' ) port map ( -- Registered outputs Q1 => dco_calib_out(0), Q2 => dco_calib_out(1), Q3 => dco_calib_out(2), Q4 => dco_calib_out(3), Q5 => dco_calib_out(4), Q6 => dco_calib_out(5), Q7 => dco_calib_out(6), Q8 => dco_calib_out(7), -- Unregistered output O => open,--IntBitClk, --ser_dat(ii), -- Carry out for bit expansion SHIFTOUT1 => open, SHIFTOUT2 => open, -- Serial data in from PAD or IODELAY D => aclk,--'0', DDLY => '0', --d_aclk,--d_aclk, -- Carry in for bit expansion SHIFTIN1 => '0', SHIFTIN2 => '0', -- Clock signals CLK => aclk_main,-- high-speed clock CLKB => not aclk_main, -- inverted clock CLKDIV => aclk_div,-- divided clock -- Clock enable CE1 => '1', CE2 => '0', -- Reset RST => reset, --rst(i), --- NOT USED BITSLIP => '0', -- bitslip operation------------------- OCLK => '0', -- high-speed clock OCLKB => '0', -- inverted clock DYNCLKSEL => '0', DYNCLKDIVSEL => '0', CLKDIVP => '0', OFB => '0' -- feedback path ); dco_calib_out_t<=dco_calib_out when rising_edge(aclk_div); Изменено 24 октября, 2017 пользователем Art55555 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 25 октября, 2017 Опубликовано 25 октября, 2017 · Жалоба Clk_200 подается только на IDELAYCTRL. На IDELAYE2 на вход С надо подавать aclk_div. Все Управляющие сигналы формируются синхронно с эим сигналом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 25 октября, 2017 Опубликовано 25 октября, 2017 · Жалоба Для Chipscope может быть пробовать aclk_div пропустить через bufg. Какая частота дискретизации АЦП? Как сделана трассировка платы Выравнены ли по длине диф. сигналы клоков и данных? Можно пробовать еще ISERDESE2 перевести в режим SDR. Тогда на выходе будем иметь "0..0" или "1..1" взависимости от кода задержки. В этом xapp'e производится подстройка к переднему фронту клока, что означает установка клока в центр (середину) принимаемых данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба Наблюдения следующие. Если ставим BUFR divide=4, то работает корректно только в режиме 21-40 0x40 16-bit 1× DDR one-lane, wordwise 8 × fS Figure 7 (р.38 из datasheet на АЦП). Калибруется, выхожу на стабильные значения FF или АА. если же в стандартном режиме 21-30 (0x30 16-bit 1× DDR two-lane, bytewise 4 × fS Figure 3 (default setting)) , то никаких 55 мы не видим. То 00, то 80, то каша. Что-то явно с тактированием или пониманием тактирования. Да, я сделал 2 счётчика. Один через PLL подал 100 на вход, получил 200 на выоде, счётчик по нему. Второй по aclk_div. Так вот, счётчик по aclk_div (при BUFR divide=4 идёт в 2 раза быстрее цлк-шного)... В режиме 21-40 -одинаковая скорость. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба Можно пробовать еще ISERDESE2 перевести в режим SDR. Какая частота дискретизации АЦП? Как сделана трассировка платы Выравнены ли по длине диф. сигналы клоков и данных? Если частота дискретизации относительно низкая может способ не работает. Просто не хватать величины задержки. Нужно указать полные условия. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба А мне интересно, вы результаты DRC в Вивадо смотрите? Все ваши варианты кода должны были вызывать предупреждения DRC, в последнем варианте тоже есть серьёзная ошибка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба А мне интересно, вы результаты DRC в Вивадо смотрите? Все ваши варианты кода должны были вызывать предупреждения DRC, в последнем варианте тоже есть серьёзная ошибка. Unsupported clocking topology used for ISERDESE2 <xISERDES111>. This can result in corrupted data. The CLK / CLKDIV pins should be driven by the same source through the same buffer type or by a BUFIO / BUFR combination in order to have a proper phase relationship. Please refer to the Select I/O User Guide for supported clocking topologies of the chosen INTERFACE_TYPE mode. Вы про это? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба Unsupported clocking topology used for ISERDESE2 Вы про это? Да, именно про это. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 27 октября, 2017 Опубликовано 27 октября, 2017 (изменено) · Жалоба Да, именно про это. Не понятно как это исправить только, ведь сейчас выход задержанного клока подключён и к BUFR и к BUFG. Как быть - то тогда? Изменено 27 октября, 2017 пользователем Art55555 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 1 ноября, 2017 Опубликовано 1 ноября, 2017 · Жалоба Не понятно как это исправить только, ведь сейчас выход задержанного клока подключён и к BUFR и к BUFG. Как быть - то тогда? Это исправил. Но данные по-прежнему некрасивые( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 2 ноября, 2017 Опубликовано 2 ноября, 2017 · Жалоба Нужно вернуться к проверке частоты 200Мнц. Подозрения, что она правильно формируется на PLL. Понять и проверить частоты (клоки) АЦП и др входные, поскольку их надо будет точно описать в констрейн файле. Все должно стыковаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 1 марта, 2019 Опубликовано 1 марта, 2019 · Жалоба Всем добрый день! Всё работает, но есть одна проблема. При включении на "холодную" (плата долго не работала) калибруется ОЧЕНЬ долго (минуту и более), но всегда в итоге всё хорошо, сигнал выдаётся такой, какой и должен быть. Если же включать уже нагретую плату, то калибруется менее секунды. Кто-нибудь встречал такой эффект? Есть идеи в чём может быть проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Крюк 0 12 сентября, 2020 Опубликовано 12 сентября, 2020 · Жалоба Как удалось решить все проблемы? Мне предстоит сопрягаться с AD9253, хотелось бы обозначить решение проблем для себя Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться