Алга 0 20 октября, 2017 Опубликовано 20 октября, 2017 · Жалоба В ручном режиме нужно добиться, что у вас работает установка задержки IDELAYE2 путем ее проверки на выходе. На входе С, Клок на этом примитиве CLK(???-что за сигнал )- должен aclk_div. Все другие управлениющие сигналы (для idelaye2 iserdese2) производЯтся синхронно с этим сигналом. Он становится основным клоковым сигналом. Потом проверить наличие этого сигнала. Какова его частота. Также нужно следить за установкой аттрибута IDELAY_TYPE (fixed, variable, var_load and etc) IDELAYE2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 20 октября, 2017 Опубликовано 20 октября, 2017 · Жалоба В ручном режиме нужно добиться, что у вас работает установка задержки IDELAYE2 путем ее проверки на выходе. На входе С, Клок на этом примитиве CLK(???-что за сигнал )- должен aclk_div. Все другие управлениющие сигналы (для idelaye2 iserdese2) производЯтся синхронно с этим сигналом. Он становится основным клоковым сигналом. Потом проверить наличие этого сигнала. Какова его частота. Также нужно следить за установкой аттрибута IDELAY_TYPE (fixed, variable, var_load and etc) IDELAYE2. С - это основной клоковый сигнал (100 МГц), в данной реализации просто стоит здесь. Заменил на aclk_div. В прошлых реализациях пробовал его. Работает также. Сейчас проверим. А по настройке IDELAY_TYPE variable подойдёт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 20 октября, 2017 Опубликовано 20 октября, 2017 · Жалоба Подходит для INC/DEC режима. Если прямая загрузка кода задержки со входов, то режим VAR_LOAD. Далее С- это clk у вас 100 МГЦ, надо 200 Мгц поскольку нужен для управления IDELAYCTRL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 23 октября, 2017 Опубликовано 23 октября, 2017 (изменено) · Жалоба Подходит для INC/DEC режима. Если прямая загрузка кода задержки со входов, то режим VAR_LOAD. Далее С- это clk у вас 100 МГЦ, надо 200 Мгц поскольку нужен для управления IDELAYCTRL. Поправил, ещё такой вопрос. Я првильнопонимаю, что BUFR должны делить на 8 в моём случае? Изменено 23 октября, 2017 пользователем Art55555 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба Не совсем. BUFR делит на 4. Поскольку ISERDESE2 в данном случае принимает только 8 бит и в DDR режиме. Если АЦП в DDR режиме также. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба Не совсем. BUFR делит на 4. Поскольку ISERDESE2 в данном случае принимает только 8 бит и в DDR режиме. Если АЦП в DDR режиме также. В итоге получается вот что. Результат - всё тот же АА на выходе.. какое бы значение я бы не задавал. Сигнал dco_calib_out_t должен отправляться на вход калибровочной машины. И там всегда АА. x_dco0 : IBUFDS 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 => "VAR_LOAD",--"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 => ld_dco_delay, CNTVALUEIN => dco_delay, CNTVALUEOUT => open, REGRST => not AdcIdlyCtrlRdy, CINVCTRL => '0', LDPIPEEN => '0' ); bufio_adc: buf port map ( i => d_aclk, o => aclk_main ); --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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба АЦП при этом какую частоту на выходе DCO выдает? FCO? Пробуем IBUFDS аттрибут IBUF_LOW_PWR => FALSE, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 23 октября, 2017 Опубликовано 23 октября, 2017 (изменено) · Жалоба AD9681 работает в режиме 011 = DDR two-lane, bytewise. Впрочем, смена режимов ничего не даёт. Пробуем IBUFDS аттрибут IBUF_LOW_PWR => FALSE, Пробую. Результат через 15 минут. Пробую. Результат через 15 минут. не помогло(( АЦП при этом какую частоту на выходе DCO выдает? FCO? Изменено 23 октября, 2017 пользователем Art55555 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба Атрибут оставьте в этом состоянии. Проверяем частоту aclk_div. Какая она? Реальная ...на вашем железе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба Атрибут оставьте в этом состоянии. Проверяем частоту aclk_div. Какая она? Реальная ...на вашем железе. Атрибут оставил. А как его проверишь - то? Я сделал по нему счётчик - бежит, всё в порядке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба Вывести его на вывод и Промерить частоту, допустим осциллографом. Потом пронаблюдать этот сигнал стабилен или нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба Вывести его на вывод и Промерить частоту, допустим осциллографом. Потом пронаблюдать этот сигнал стабилен или нет. Ладно это я посмотрю. А настройки DDR/SDR 8 бит выход правильно заданы? Ладно это я посмотрю. А настройки DDR/SDR 8 бит выход правильно заданы? 1. Мне не нравится вообще число АА. Ведь мы должны получать все 1 или все 0? 2. Сейчас мы делаем так. Принятый сигнал отправляем на IDELAYE2 для формирования. Из задержанного делаем aclk_main и aclk_div. А на вход D ISERDESE2 подаём "чистый" принятый сигнал aclk, после. Правильно ли это? Может, из "чистого" (несдвинутого) делать aclk_main и aclk_div, ими защёлкивать, а сдвинутый подавать на ISERDESE2 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба Ещё одно наблюдение. Если вывести режим ацп с 2-кратной скоростью в 21 регистр подать значение 40 (100 = DDR one-lane, wordwise), то значение выходного ISERDES2 помучается FF. На сигналы LD и CNTVALUEIN по-прежнему реакции нет, а вот, если подать '1' на СЕ, то измение есть, только 1 такт, такое ощущение, что реально не задерживается ничего. Если подать на СЕ единицы на постоянную, то видим, что FF часто сменяются FE, но если единицу убрать, то опять всё возвращается на FF. Ситуация на том же месте в итоге(( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба Атрибут оставил. А как его проверишь - то? Я сделал по нему счётчик - бежит, всё в порядке. Способ ненадежный - сделать делитель на этой частоте, формирующий моргание диодиком раз в секунду. Оцениваем глазами. При относительно большой погрешности все сразу станет видно. Способ надежный, но чуть более трудоемкий - параллельно запускаем пару счетчиков. Один на частоте, которую заведомо знаем и уверены в ней, второй - на частоте, которая нас интересует. Зная значения счетчиков и одной из частот, легко находим вторую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 23 октября, 2017 Опубликовано 23 октября, 2017 · Жалоба Мне не нравится вообще число АА. Ведь мы должны получать все 1 или все 0? Должно быть стабильные АА и 55 и нестабильные переходы. Примитив IDELAYE2 работает в нескольких режимах. Если меняется управление, то надо менять и аттрибут IDELAY_TYPE. Пока он нормально и стабильно не заработает- результата не будет. И поэтому устанавливаем IDELAYE2 только в режим загрузки (Сигналы INC и СЕ занулить) и шаг за шагом, устанавливается код задержки, проверяем его на выходе, смотрим код что есть на выходе ISERDESE2. Еще внимательно с сигналами сброса. Их также надо проверять и видеть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться