Перейти к содержанию
    

Проблема со связкой IDELAYE2 и ISERDESE2

Kintex 7, приём данных с АЦП.

Использовал традиционную схему - защёлкивание DCO, сдвиг IODELAY-ем, восстановление правильной последовательности 0 и 1 (смотрю ISERDESE2, делаю bitslip, играюсь задержкой).

После получения стабильной последовательности, с данной задержкой (при переводе АЦП в тестовый режим) кабибруются остальные линии.

Данная схема работала хорошо в ISE. 

На данный момент:

1) система ругается на d_aclk () на этапе битгена. [DRC RTSTAT-5] Partial antennas: 3 net(s) have a partial antenna. The problem bus(es) and/or net(s) are ad_9653_0/d_aclk, ad_9653_1/d_aclk, and ad_9653_2/d_aclk.

2) когда открываешь Схематик, не вижу инверсии (точнее, вижу, но она никуда не идёт - сигнала n_aclk_main)

Есть идеи, как это можно побороть?

Констрейнты прописаны.

 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 =>  DCO_P,  -- Diff_p clock buffer input (connect directly to top-level port)
      IB => DCO_n -- Diff_n clock buffer input (connect directly to top-level port)
   );

       x_IDELAYCTRL : IDELAYCTRL
        port map (REFCLK => clk, RST => reset, RDY => AdcIdlyCtrlRdy);

    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",--"VAR_LOAD_PIPE",--"VARIABLE",
        IDELAY_VALUE            => 16,
        PIPE_SEL                => "FALSE"
        )
        port map (
            DATAIN            => '0',--,
            IDATAIN         => aclk,    
            DATAOUT            => d_aclk,    
    
            C                => aclk_div,  --200 MHz
            CE                => set_idelay_dco1, 
            INC                => '1', 
            LD                 => IntClkCtrlDlyRst, --идет с VIO
            CNTVALUEIN        => LowNibble,  --идет с VIO
            CNTVALUEOUT        => open,
    
            REGRST            => IntClkCtrlDlyRst,--'0',--'0',--
            CINVCTRL        => '0',
            LDPIPEEN        => '0' 
        );
        
  bufio_adc: BUF port map ( i => d_aclk, o => aclk_main );    --FB

    BUFR_ins1 : BUFR
   generic map (
      BUFR_DIVIDE => "8", -- 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 => reset, -- 1-bit input: Active high, asynchronous clear (Divided modes only)
      I => aclk_main      -- 1-bit input: Clock buffer input driven by an IBUFG, MMCM or local interconnect
   );
        
        
        xISERDES1113: ISERDESE2
        generic map (
        SERDES_MODE         => "MASTER",
        INTERFACE_TYPE      => "NETWORKING",        
        IOBDELAY            => "Both",--"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                => 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             => n_aclk_main,    -- inverted clock
            CLKDIV             => aclk_div,-- divided clock        
            -- Clock enable
            CE1                => '1',
            CE2                => '0',
            -- Reset
            RST                => IntBitClkRst, --rst(i),  
            --- NOT USED    
            BITSLIP            =>  bitslip_dco1,--'0', -- bitslip operation-------------------
            OCLK            => '0', -- high-speed clock
            OCLKB            => '0', -- inverted clock
    
            DYNCLKSEL        => '0',
            DYNCLKDIVSEL    => '0',
            CLKDIVP            => '0',
            OFB                => '0' -- feedback path

        );    

n_aclk_main<=not aclk_main;


    calib_dco: Calibrator_idelay_bitslip 
    
    PORT MAP (
        reset =>reset,--rst_dat,
      clk => clk,
      CLKDIV => aclk_div,
      start_calib => calib_in_dco,--start_calib,
      data_in => dco_calib_out_t,
      pattern => pattern_dco,
      pattern2 => pattern_dco,
      
      set_idelay => set_idelay_dco1,
      bitslip => bitslip_dco1,-- open,
      calib_done => calib_done_dco
    );


 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть рабочий код под прием данных с АЦП AD9635, там тоже DCO, FCO и DATA. проект под kintex-7. могу скинуть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, quato_a сказал:

есть рабочий код под прием данных с АЦП AD9635, там тоже DCO, FCO и DATA. проект под kintex-7. могу скинуть

Не не не. Спасибо. Отлаживать чужой проект желания нет совсем :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 hours ago, quato_a said:

есть рабочий код под прием данных с АЦП AD9635, там тоже DCO, FCO и DATA. проект под kintex-7. могу скинуть

Буду признателен, если скинете. 

Конечно, хочется в этой проблеме разобраться, но может в отличиях и родится истина))

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 hours ago, Art55555 said:

Kintex 7, приём данных с АЦП.

Использовал традиционную схему - защёлкивание DCO, сдвиг IODELAY-ем, восстановление правильной последовательности 0 и 1 (смотрю ISERDESE2, делаю bitslip, играюсь задержкой).

После получения стабильной последовательности, с данной задержкой (при переводе АЦП в тестовый режим) кабибруются остальные линии.

Данная схема работала хорошо в ISE. 

На данный момент:

1) система ругается на d_aclk () на этапе битгена. [DRC RTSTAT-5] Partial antennas: 3 net(s) have a partial antenna. The problem bus(es) and/or net(s) are ad_9653_0/d_aclk, ad_9653_1/d_aclk, and ad_9653_2/d_aclk.

2) когда открываешь Схематик, не вижу инверсии (точнее, вижу, но она никуда не идёт - сигнала n_aclk_main)

Есть идеи, как это можно побороть?

Констрейнты прописаны.

        DATAOUT            => d_aclk,    
    
            C                => aclk_div,  --200 MHz
            CE                => set_idelay_dco1, 
            INC                => '1', 
            LD                 => IntClkCtrlDlyRst, --идет с VIO
            CNTVALUEIN        => LowNibble,  --идет с VIO
            CNTVALUEOUT        => open,
    
            REGRST            => IntClkCtrlDlyRst,--'0',--'0',--
            CINVCTRL        => '0',
            LDPIPEEN        => '0' 
        );
        
  bufio_adc: BUF port map ( i => d_aclk, o => aclk_main );    --FB

    BUFR_ins1 : BUFR
   generic map (
      BUFR_DIVIDE => "8", -- Values: "BYPASS, 1, 2, 3, 4, 5, 6, 7, 8" 
      -- SIM_DEVICE => "7SERIES"  -- Must be set to "7SERIES" 
   )

есть она)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, Art55555 said:

Буду признателен, если скинете. 

Конечно, хочется в этой проблеме разобраться, но может в отличиях и родится истина))

 

Подготовлю тогда сегодня. Там у меня просто 4 АЦП стоит...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа. Убедительная просьба. Когда выкладываете куски кода пользуйтесь специальным тегом - код. Уважайте других участников форума !

Снимок.PNG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Flip-fl0p said:

Господа. Убедительная просьба. Когда выкладываете куски кода пользуйтесь специальным тегом - код. Уважайте других участников форума !

Снимок.PNG

Принято, извините!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, Art55555 said:

Буду признателен, если скинете. 

Конечно, хочется в этой проблеме разобраться, но может в отличиях и родится истина))

 

отправил в лс

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это ограничения Вивадо AR#54795

 

https://www.xilinx.com/support/answers/54795.html

 

[Drc 23-20] Rule violation (RTSTAT-5) Partial antenna

https://forums.xilinx.com/t5/Implementation/Drc-23-20-Rule-violation-RTSTAT-5-Partial-antenna/m-p/465314#M9205

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Небольшие изменения в проекте:

1. BUFIO нормально оформить,

2. BUFR на вход подать сигнал d_aclk,

3. ISERDESE2 дополнительно подать на вход DDLY <= d_aclk,     (D <+ aclk, DDLY <= d_aclk,)    

 

Возможно еще клоковый буфер исправить на IBUFGDS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 5/27/2020 at 2:00 PM, quato_a said:

есть рабочий код под прием данных с АЦП AD9635, там тоже DCO, FCO и DATA. проект под kintex-7. могу скинуть

В настоящий момент первый раз делаю проект с АЦП с дифферинциальными парами ADC3444, грабли собираю, было бы здорово подглядывать в рабочий проект. Буду признателен, если скинете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 hours ago, swt said:

В настоящий момент первый раз делаю проект с АЦП с дифферинциальными парами ADC3444, грабли собираю, было бы здорово подглядывать в рабочий проект. Буду признателен, если скинете.

отправил в лс

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...