|
Прием данных с АЦП AD9681 |
|
|
|
Oct 3 2017, 14:19
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 7-10-10
Пользователь №: 59 981

|
Есть Artix7 и AD9681. Приём сделан по схеме DATA_PIN- IBUFDS-IDELAYE2-ISERDESE2. К выходу ISERDESE2 я подключил калибратор. Выбранный режим приёма - DDR two-lane, bytewise. Далее привожу алгоритм. 1) По SPI выбираю режим передачи данных DDR two-lane, bytewise -0x21 значение 30. 2) По SPI выбираю режим передачи тестовой последовательности, состоящей из 2 слов. - 0x0D значение 04.  3) Используя перебор 32 значений IDELAYE2 и 8 bitslip-ов я добиваюсь того, чтобы на выходе ISERDESE2 появились искомые A8 54 на одном лэйне и AA 55 на другом. Автомат проверяет, чтобы стабильный результат на выходе был не менее 8192 раз. Если нет, то либо задержка, либо (если задержка достигает 32 - битслип). В итоге стабильно добиваюсь такого результата:  4) По SPI выбираю режим отключения тестовой последовательности, состоящей из 2 слов. - 0x0D значение 00. И вижу такой результат при подаче с генератора синуса частоты 1 МГц:  Т.е. явно видно, что какой-то бит явно "врёт", хотя если опять вернуться на тестовую последовательность, то всё по-прежнему ок. В чём может быть проблема?
|
|
|
|
|
 |
Ответов
|
Oct 18 2017, 17:15
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 7-10-10
Пользователь №: 59 981

|
Сделал 2 различных варианта работы. Пробовал как в XAPP 524, так и и по XAPP585. В обоих документах калибровка начинается с "выравнивания" такта. Про данные позже. Вход защёлкнут IBUFGDS. Далее так идёт на IDELAY2, выходит задержанный сигнал, идёт на вход DDLY ISERDES. Выход, который О, раздваивается на IOBUF (нужен в качестве быстрого такта для ISERDESов) и на BUFR (делит на 4) и используеся в качестве делённой частоты, также идёт на ISERDESы. Выход ISERDES анализируется. Также отмечаю, что пробовал ещё несколько вариантов деления частоты, использования MMCM и др. Подстройку провожу с помощью C и CE на IDELAYE2. Совершенно не нравится, что результат не меняется или меняется на 1 отчёт, а потом восстанавливаеся. Поясню. В режиме защёлкивания такта DDR я всегда получаю значение 55. Если даю задержку (через VIO), то один такт получаю что-то типа 5E, а потом опять 55. Если ставлю SDR, то итоговое значение FF, которое также не меняется - хоть на СЕ всегда подавай 1.
Один из вариантов кода привожу ниже.
x_dco0 : IBUFGDS generic map ( DIFF_TERM => TRUE, -- Differential Termination IBUF_LOW_PWR => TRUE, -- 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 => "VARIABLE", IDELAY_VALUE => 0, PIPE_SEL => "FALSE" ) port map ( DATAIN => '0', IDATAIN => aclk, DATAOUT => d_aclk, C => aclk_div, CE => set_idelay_dco, INC => '1', LD => '0', CNTVALUEIN => "00000", CNTVALUEOUT => open,- REGRST => reset, CINVCTRL => '0', LDPIPEEN => '0' ); 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 => IntBitClk -- 1-bit input: Clock buffer input driven by an IBUFG, MMCM or local interconnect );
xCLK_FB_inv: bufio port map ( i => IntBitClk, o => aclk_int ); --FB aclk_int_n<=not aclk_int; xISERDES111: ISERDESE2 generic map ( SERDES_MODE => "MASTER", INTERFACE_TYPE => "NETWORKING", IOBDELAY => "IBUF", 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 => IntBitClk, --ser_dat(ii), -- Carry out for bit expansion SHIFTOUT1 => open, SHIFTOUT2 => open, -- Serial data in from PAD or IODELAY D => '0',-- aclk,--'0', DDLY => d_aclk,--d_aclk, -- Carry in for bit expansion SHIFTIN1 => '0', SHIFTIN2 => '0', -- Clock signals CLK => aclk_int,-- high-speed clock CLKB => aclk_int_n, -- 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;
|
|
|
|
Сообщений в этой теме
Art55555 Прием данных с АЦП AD9681 Oct 3 2017, 14:19 AVR Цитата(Art55555 @ Oct 3 2017, 17:19) И ви... Oct 3 2017, 14:23 Amurak А если скремблер подать? Oct 3 2017, 15:28 khach Так PN9 подайте и все сразу видно будет если цифро... Oct 3 2017, 19:38 Flip-fl0p Цитата3) Используя перебор 32 значений IDELAYE2 и ... Oct 3 2017, 20:14 monty не стоит городить велосипед - возьмите готовый ад-... Oct 4 2017, 04:15 Art55555 Цитата(monty @ Oct 4 2017, 08:15) не стои... Oct 4 2017, 07:32  sawyer0 Цитата(Art55555 @ Oct 4 2017, 07:32) В оп... Oct 4 2017, 07:51 Алга Посмотрите также Xilinx xapp524, xapp585, xapp1071... Oct 4 2017, 16:33 Art55555 Я, конечно же, брал за основу эти документы.
Брос... Oct 6 2017, 12:44 Алга Кратко процесс калибровки: первый этап- поставить ... Oct 6 2017, 16:14 khach А информация из http://www.analog.com/media/en/tec... Oct 6 2017, 16:36 Art55555 Цитата(khach @ Oct 6 2017, 20:36) А инфор... Oct 9 2017, 12:37 Art55555 Я НЕ использую FRAME - калибруюсь по последователь... Oct 9 2017, 16:48 Flip-fl0p ЦитатаКратко процесс калибровки: первый этап- пост... Oct 9 2017, 20:04  Tausinov Цитата(Flip-fl0p @ Oct 9 2017, 23:04... Oct 18 2017, 12:18   Flip-fl0p Цитата(Tausinov @ Oct 18 2017, 15:18) Про... Oct 18 2017, 12:35 Алга FRAME (frame clk) должен использоваться в любом сл... Oct 10 2017, 05:12 Flip-fl0p Цитата(Алга @ Oct 10 2017, 08:12) FRAME (... Oct 10 2017, 06:14 Алга У меня за основу принят xapp585. В системе 4 отдел... Oct 10 2017, 06:43 Flip-fl0p Цитата(Алга @ Oct 10 2017, 09:43) У меня ... Oct 10 2017, 06:58 Art55555 Цитата(Алга @ Oct 10 2017, 09:43) У меня ... Oct 18 2017, 12:13 Алга Примитив IDELAYCTRL в системе заведен?
Можно прове... Oct 18 2017, 17:39 Art55555 Цитата(Алга @ Oct 18 2017, 20:39) Примити... Oct 18 2017, 22:56  Timmy Цитата(Art55555 @ Oct 19 2017, 01:56) В д... Oct 19 2017, 05:34   Art55555 Цитата(Timmy @ Oct 19 2017, 09:34) Дизайн... Oct 19 2017, 07:56 Алга Напомню, что к xapp524,585 есть исходники как прим... Oct 19 2017, 05:40 Алга Надо пока доверять xapp'у (исходникам) и пров... Oct 19 2017, 08:47 Art55555 Учёл все рекомендации.
Результат такой же.
Сигнал ... Oct 19 2017, 16:26 Алга В ручном режиме нужно добиться, что у вас работает... Oct 20 2017, 05:38 Art55555 Цитата(Алга @ Oct 20 2017, 09:38) В ручно... Oct 20 2017, 07:14 Алга Подходит для INC/DEC режима. Если прямая загрузка ... Oct 20 2017, 07:29 Art55555 Цитата(Алга @ Oct 20 2017, 11:29) Подходи... Oct 23 2017, 09:19 Алга Не совсем.
BUFR делит на 4. Поскольку ISERDESE2 в ... Oct 23 2017, 10:30 Art55555 Цитата(Алга @ Oct 23 2017, 14:30) Не совс... Oct 23 2017, 12:22 Алга АЦП при этом какую частоту на выходе DCO выдает? F... Oct 23 2017, 12:36 Art55555 AD9681 работает в режиме 011 = DDR two-lane, bytew... Oct 23 2017, 13:45 Алга Атрибут оставьте в этом состоянии.
Проверяем часто... Oct 23 2017, 13:46 Art55555 Цитата(Алга @ Oct 23 2017, 17:46) Атрибут... Oct 23 2017, 13:55  Tausinov Цитата(Art55555 @ Oct 23 2017, 16:55) Атр... Oct 23 2017, 16:21 Алга Вывести его на вывод и
Промерить частоту, допусти... Oct 23 2017, 14:02 Art55555 Цитата(Алга @ Oct 23 2017, 18:02) Вывести... Oct 23 2017, 14:45 Art55555 Ещё одно наблюдение.
Если вывести режим ацп с 2-кр... Oct 23 2017, 15:52 Алга ЦитатаМне не нравится вообще число АА. Ведь мы дол... Oct 23 2017, 16:29 Art55555 Что сделано.
1. Заменил тип на VAR_LOAD
2. Подал ... Oct 24 2017, 14:02 Алга Clk_200 подается только на IDELAYCTRL.
На IDELAYE2... Oct 25 2017, 06:28 Алга Для Chipscope может быть пробовать aclk_div пропус... Oct 25 2017, 16:51 Art55555 Наблюдения следующие.
Если ставим BUFR divide=4, ... Oct 26 2017, 07:08 Timmy А мне интересно, вы результаты DRC в Вивадо смотри... Oct 26 2017, 13:52  Art55555 Цитата(Timmy @ Oct 26 2017, 16:52) А мне ... Oct 26 2017, 14:35   Timmy Цитата(Art55555 @ Oct 26 2017, 17:35) Uns... Oct 26 2017, 17:42    Art55555 Цитата(Timmy @ Oct 26 2017, 20:42) Да, им... Oct 27 2017, 12:23     Art55555 Цитата(Art55555 @ Oct 27 2017, 15:23) Не ... Nov 1 2017, 13:44 Алга Можно пробовать еще ISERDESE2 перевести в режим SD... Oct 26 2017, 07:34 Алга Нужно вернуться к проверке частоты 200Мнц. Подозре... Nov 2 2017, 05:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|