реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Прием данных с АЦП AD9681
Art55555
сообщение Oct 24 2017, 14:02
Сообщение #46


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Что сделано.
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);

Сообщение отредактировал Art55555 - Oct 24 2017, 14:46
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 25 2017, 06:28
Сообщение #47


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



Clk_200 подается только на IDELAYCTRL.
На IDELAYE2 на вход С надо подавать aclk_div.
Все Управляющие сигналы формируются синхронно с эим сигналом.
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 25 2017, 16:51
Сообщение #48


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



Для Chipscope может быть пробовать aclk_div пропустить через bufg.

Какая частота дискретизации АЦП?
Как сделана трассировка платы Выравнены ли по длине диф. сигналы клоков и данных?

Можно пробовать еще ISERDESE2 перевести в режим SDR. Тогда на выходе будем иметь "0..0" или "1..1"
взависимости от кода задержки.
В этом xapp'e производится подстройка к переднему фронту клока,
что означает установка клока в центр (середину) принимаемых данных.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 26 2017, 07:08
Сообщение #49


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Наблюдения следующие.

Если ставим 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 -одинаковая скорость.
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 26 2017, 07:34
Сообщение #50


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739




Можно пробовать еще ISERDESE2 перевести в режим SDR.


Цитата
Какая частота дискретизации АЦП?
Как сделана трассировка платы Выравнены ли по длине диф. сигналы клоков и данных?


Если частота дискретизации относительно низкая может способ не работает. Просто не хватать величины задержки.
Нужно указать полные условия.

Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 26 2017, 13:52
Сообщение #51


Знающий
****

Группа: Участник
Сообщений: 821
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



А мне интересно, вы результаты DRC в Вивадо смотрите? Все ваши варианты кода должны были вызывать предупреждения DRC, в последнем варианте тоже есть серьёзная ошибка.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 26 2017, 14:35
Сообщение #52


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Цитата(Timmy @ Oct 26 2017, 16:52) *
А мне интересно, вы результаты 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.


Вы про это?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 26 2017, 17:42
Сообщение #53


Знающий
****

Группа: Участник
Сообщений: 821
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Art55555 @ Oct 26 2017, 17:35) *
Unsupported clocking topology used for ISERDESE2
Вы про это?

Да, именно про это.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 27 2017, 12:23
Сообщение #54


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Цитата(Timmy @ Oct 26 2017, 20:42) *
Да, именно про это.


Не понятно как это исправить только, ведь сейчас выход задержанного клока подключён и к BUFR и к BUFG. Как быть - то тогда?



Сообщение отредактировал Art55555 - Oct 27 2017, 12:23
Go to the top of the page
 
+Quote Post
Art55555
сообщение Nov 1 2017, 13:44
Сообщение #55


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Цитата(Art55555 @ Oct 27 2017, 15:23) *
Не понятно как это исправить только, ведь сейчас выход задержанного клока подключён и к BUFR и к BUFG. Как быть - то тогда?


Это исправил. Но данные по-прежнему некрасивые(
Go to the top of the page
 
+Quote Post
Алга
сообщение Nov 2 2017, 05:53
Сообщение #56


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



Нужно вернуться к проверке частоты 200Мнц. Подозрения, что она правильно формируется на PLL.
Понять и проверить частоты (клоки) АЦП и др входные, поскольку их надо будет точно описать в констрейн файле.
Все должно стыковаться.
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th November 2017 - 15:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01291 секунд с 7
ELECTRONIX ©2004-2016