<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Xilinx SelectIO資源內部的IDELAYE2應用介紹

FPGA技術實戰 ? 來源:FPGA技術實戰 ? 2024-04-26 11:33 ? 次閱讀

引言:本文我們介紹下Xilinx SelectIO資源內部IDELAYE2資源應用。IDELAYE2原句配合IDELAYCTRL原句主要用于在信號通過引腳進入芯片內部之前,進行延時調節,一般高速端口信號由于走線延時等原因,需要通過IDELAYE2原語對數據做微調,實現時鐘與數據的源同步時序要求。

1. IDELAYE2在SelectIO中的位置

7系列FPGA SelectIO中HR Bank和HP bank中都有IDELAYE2模塊,其在SelectIO路徑位置如下圖所示。

85f1e8be-036a-11ef-a297-92fbcf53809c.jpg

圖1:7系列FPGA HP Bank I/O Tile

86165ff0-036a-11ef-a297-92fbcf53809c.jpg

圖2:7系列FPGA HR Bank I/O tile

2. IDELAYE2延遲特性

Kintex-7器件DC and AC 開關特性手冊中介紹了IDELAY延遲分辨率及最大工作時鐘,如下表所示。

表1:IDELAY延遲分辨率及最大工作時鐘

8632ef26-036a-11ef-a297-92fbcf53809c.png

根據上圖延遲分辨率,例如當參考時鐘為200MHz時,根據公式計算:

平均抽頭延遲單位為Tidelayresoluion=1/(32×2×200MHz)≈78ps。

需要說明的一點是:

當抽頭系數Tap=0時,輸入和輸出延遲時間并非為0ps,而是600ps;

當抽頭系數Tap=1~31時,TapDelayTime=600ps+Tidelayresoluion*Tap。

3. IDELAYE2原句

在Vivado Language Templates中搜索IDELAY,在Verilog目錄中根據工程器件家族Kintex-7選擇IDELAYE2原句模板,如下圖所示。

86469e22-036a-11ef-a297-92fbcf53809c.png

圖3:IDELAYE2原句模板

   (* IODELAY_GROUP =  *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL


   IDELAYE2 #(
      .CINVCTRL_SEL("FALSE"),          // Enable dynamic clock inversion (FALSE, TRUE)
      .DELAY_SRC("IDATAIN"),           // Delay input (IDATAIN, DATAIN)
      .HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")
      .IDELAY_TYPE("FIXED"),           // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
      .IDELAY_VALUE(0),                // Input delay tap setting (0-31)
      .PIPE_SEL("FALSE"),              // Select pipelined mode, FALSE, TRUE
      .REFCLK_FREQUENCY(200.0),        // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).
      .SIGNAL_PATTERN("DATA")          // DATA, CLOCK input signal
   )
   IDELAYE2_inst (
      .CNTVALUEOUT(CNTVALUEOUT), // 5-bit output: Counter value output
      .DATAOUT(DATAOUT),         // 1-bit output: Delayed data output
      .C(C),                     // 1-bit input: Clock input
      .CE(CE),                   // 1-bit input: Active high enable increment/decrement input
      .CINVCTRL(CINVCTRL),       // 1-bit input: Dynamic clock inversion input
      .CNTVALUEIN(CNTVALUEIN),   // 5-bit input: Counter value input
      .DATAIN(DATAIN),           // 1-bit input: Internal delay data input
      .IDATAIN(IDATAIN),         // 1-bit input: Data input from the I/O
      .INC(INC),                 // 1-bit input: Increment / Decrement tap delay input
      .LD(LD),                   // 1-bit input: Load IDELAY_VALUE input
      .LDPIPEEN(LDPIPEEN),       // 1-bit input: Enable PIPELINE register to load data input
      .REGRST(REGRST)            // 1-bit input: Active-high reset tap-delay input
   );
IDATAIN為延時前的輸入信號,DATAOUT為延時后的輸出信號。REFCLK_FREQUENCY參數為IDELAYCTRL原語的參考時鐘頻率,一般為200Mhz,最大頻率范圍根據器件手冊確定。IDELAY_VALUE參數用來設置延時的tap數,范圍為1~31,每個tap數的延時時間和參考時鐘頻率有關。

4. IDELAYCTRL原句

IDELAYE2或者ODELAYE2原句例化時,IDELAYCTRL原句也必須例化。IDELAYCTRL通過參考時鐘REFCLK來校準IDELAY2每個tap的延時值,減少處理、電壓和溫度的影響。該模塊使用REFCLK時鐘精細校準。
   (* IODELAY_GROUP =  *) // Specifies group name for associated IDELAYs/ODELAYs and IDELAYCTRL


   IDELAYCTRL IDELAYCTRL_inst (
      .RDY(RDY),       // 1-bit output: Ready output
      .REFCLK(REFCLK), // 1-bit input: Reference clock input
      .RST(RST)        // 1-bit input: Active high reset input
   );

5. IDELAYE2原句工程源碼與仿真測試

5.1 開發環境

硬件平臺:XC7Z035FFG676-2

軟件環境:Vivado 2017.4

仿真軟件:Vivado Simulator

5.2 軟件代碼

IDELAYE2工程源碼:

module IDELAYE2_Test(
   input clk_in_50M, //時鐘
   input rst_n,   //復位
   input ld,
   input ce,
   input inc,
   input [4:0] tap_value_in,     //設置延遲抽頭系數
inputdata_in_from_pins,//輸入Pins數據
   output [4:0] tap_value_out,
   output delay_ctrl_rdy,         //IDELAYCTRL 延遲校準ready信號
outputdata_in_from_pins_delay//輸出Pins延遲數據
    );


wire pll_locked;
wire clk_200M;
wire clk_50M;
wire REFCLK;
wire RST;


//IDELAYCTRL 時鐘及復位   
assign REFCLK = clk_200M; 
assign RST = pll_locked ? ~rst_n : 1'b1; //復位DELAYCTRL原句


// ======== 例化PLL時鐘 ========
  clk_wiz_0 pll0
 (
  // Clock out ports
  .clk_out1(clk_200M),     // output clk_out1
  .clk_out2(clk_50M),     // output clk_out2
  // Status and control signals
  .locked(pll_locked),       // output locked
 // Clock in ports
  .clk_in1(clk_in_50M));      // input clk_in1  


// ======== 例化 IDELAYCTRL 和 IDELAYE2 ========    
   (* IODELAY_GROUP = "IODELAY_Test_IO" *) // 指定關聯的IDELAY/ODELAY和IDELAYCTRL的組名


    IDELAYCTRL IDELAYCTRL_inst (
       .RDY(delay_ctrl_rdy),       // 1-bit output: Ready output
       .REFCLK(REFCLK), // 1-bit input: Reference clock input
       .RST(RST)        // 1-bit input: Active high reset input
    ); 


   (* IODELAY_GROUP = "IODELAY_Test_IO" *) //指定關聯的IDELAY/ODELAY和IDELAYCTRL的組名


    IDELAYE2 #(
       .CINVCTRL_SEL("FALSE"),          // Enable dynamic clock inversion (FALSE, TRUE)
       .DELAY_SRC("IDATAIN"),           // Delay input (IDATAIN, DATAIN)
       .HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")
       .IDELAY_TYPE("VAR_LOAD"),           // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE 操作模式選擇
       .IDELAY_VALUE(5'd9),                // Input delay tap setting (0-31) 固定延遲Tap
       .PIPE_SEL("FALSE"),              // Select pipelined mode, FALSE, TRUE
       .REFCLK_FREQUENCY(200.0),        // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).時鐘常量
       .SIGNAL_PATTERN("DATA")          // DATA, CLOCK input signal
    )
    IDELAYE2_inst (
       .CNTVALUEOUT(tap_value_out), // 5-bit output: Counter value output
       .DATAOUT(data_in_from_pins_delay),         // 1-bit output: Delayed data output
       .C(clk_50M),                     // 1-bit input: Clock input,該時鐘用于驅動IDELAYE2內部控制信號
       .CE(ce),                   // 1-bit input: Active high enable increment/decrement input
       .CINVCTRL(1'b0),       // 1-bit input: Dynamic clock inversion input
       .CNTVALUEIN(tap_value_in),   // 5-bit input: Counter value input
       .DATAIN(1'b0),           // 1-bit input: Internal delay data input
       .IDATAIN(data_in_from_pins),         // 1-bit input: Data input from the I/O
       .INC(inc),                 // 1-bit input: Increment / Decrement tap delay input
       .LD(ld),                   // 1-bit input: Load IDELAY_VALUE input
       .LDPIPEEN(1'b0),       // 1-bit input: Enable PIPELINE register to load data input
       .REGRST(RST)            // 1-bit input: Active-high reset tap-delay input
    );

IDELAYE2 Testbench部分源碼:

initial begin     
       //1. 測試IDELAYE2模式為"FIXED"--------.IDELAY_TYPE("FIXED")
       #10000  data_in_from_pins = 1'b1; //輸入脈沖  
       #20     data_in_from_pins = 1'b0; 
       
       //2.測試IDELAYE2模式為"VARIABLE"--------.IDELAY_TYPE("VARIABLE")
       #200 ld = 1'b1;  //控制信號
       #50  ld = 1'b0;
       #20             //"VARIABLE"模式下,使能ce和inc,Tap=Current Value + 1     
            ce = 1'b1;
            inc = 1'b1;
       #40 
            ce = 1'b0;
            inc = 1'b0;
       #20 data_in_from_pins = 1'b1; //輸入數據
       #20 data_in_from_pins = 1'b0; 
       
       //3.測試IDELAYE2模式為"VAR_LOAD"--------.IDELAY_TYPE("VAR_LOAD")
       #20  tap_value_in = 5'd5;  //控制信號
       #100 ld = 1'b1;            //"VARIABLE"模式下,使能ld,Tap= CNTVALUEIN值 
       #50  ld = 1'b0; 
       #20 data_in_from_pins = 1'b1; //輸入數據
       #20 data_in_from_pins = 1'b0; 
       
       #20         //“VAR_LOAD”模式下,使能ce和inc,Tap=Current Value + 1
            ce = 1'b1;
            inc = 1'b1;
       #40 
            ce = 1'b0;
            inc = 1'b0;       
       #20 data_in_from_pins = 1'b1; //輸入數據
#20data_in_from_pins=1'b0;
end

5.3 仿真結果

1. IDELAY_TYPE="FIXED"時,仿真結果如下圖所示。

8667a644-036a-11ef-a297-92fbcf53809c.png

圖4:IDELAY_TYPE="FIXED"仿真結果

       .IDELAY_TYPE("FIXED"),           // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE 操作模式選擇
       .IDELAY_VALUE(5'd9),                // Input delay tap setting (0-31) 固定延遲Tap
如圖所示,當IDELAY_TYPE="FIXED"時: data_in_from_pins_delay信號延遲:TapDelayTime=600ps+78ps*9=1302ps

2. IDELAY_TYPE="VARIABLE"時,仿真結果如下圖所示。

867b11d4-036a-11ef-a297-92fbcf53809c.png

圖5:IDELAY_TYPE="VARIABLE"仿真結果

       .IDELAY_TYPE("VARIABLE"),           // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE 操作模式選擇
       .IDELAY_VALUE(5'd9),                // Input delay tap setting (0-31) 固定延遲Tap
如圖所示,當IDELAY_TYPE="VARIABLE"時,控制信號正向觸發一次,Tap值=Current Value + 1,如圖tap_value_out = 10,故:

data_in_from_pins_delay信號延遲:TapDelayTime=600ps+78ps*10=1380ps

3. IDELAY_TYPE="VAR_LOAD"時,使能LD信號,仿真結果如下圖所示。

8696ed5a-036a-11ef-a297-92fbcf53809c.png

圖6:IDELAY_TYPE="VAR_LOAD"仿真結果

       .IDELAY_TYPE("VAR_LOAD"),           // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE 操作模式選擇
       .IDELAY_VALUE(5'd9),                // Input delay tap setting (0-31) 固定延遲Tap
如圖所示,當IDELAY_TYPE="VAR_LOAD"時,使能ld,Tap= CNTVALUEIN(tap_valude_in)值,如圖tap_value_out = 5,故:

data_in_from_pins_delay信號延遲:TapDelayTime=600ps+78ps*5=990ps

4. IDELAY_TYPE="VAR_LOAD"時,使能CE和INC信號,仿真結果如下圖所示。

86a9b49e-036a-11ef-a297-92fbcf53809c.png

圖7:IDELAY_TYPE="VAR_LOAD"仿真結果

       .IDELAY_TYPE("VAR_LOAD"),           // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE 操作模式選擇
       .IDELAY_VALUE(5'd9),                // Input delay tap setting (0-31) 固定延遲Tap
如圖所示,當IDELAY_TYPE="VAR_LOAD"時,使能ce和inc,Tap= Current Value + 1=6,如圖tap_value_out = 6,故:

data_in_from_pins_delay信號延遲:TapDelayTime=600ps+78ps*6=1068ps.



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1603

    文章

    21328

    瀏覽量

    593264
  • 時鐘信號
    +關注

    關注

    4

    文章

    374

    瀏覽量

    28068
  • Vivado
    +關注

    關注

    18

    文章

    790

    瀏覽量

    65107

原文標題:時序約束之Xilinx IDELAYE2應用及仿真筆記

文章出處:【微信號:FPGA技術實戰,微信公眾號:FPGA技術實戰】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Xilinx系列FPGA SelectIO簡介

    FPGA是電子器件中的萬能芯片,Xilinx FPGA處于行業龍頭地位更是非常靈活。FPGA管腳兼容性強,能跟絕大部分電子元器件直接對接。Xilinx SelectIO支持電平標準多,除MIPI
    發表于 08-02 09:31 ?5061次閱讀
    <b class='flag-5'>Xilinx</b>系列FPGA <b class='flag-5'>SelectIO</b>簡介

    xilinx selectio IPcore使用的問題

    `我在頂層簡單例化了selectio IPcore,在testbench中我將差分輸出端接到本身的差分輸入端,得到的結果是:接收數據是發送數據的4倍,不知道哪里出了問題,用過xilinx selectio IPcore的請幫忙解
    發表于 06-08 16:33

    使用synplify和生成器網表文件合成VIRTEX 7時報告嚴重警告

    相匹配,應在源網表中更改SIM_DEVICE的值。未能正確設置SIM_DEVICE將阻止此設計生成比特流。嚴重警告[Netlist 29-335]'IDELAYE2'類型的實例'u_idelaye1'可能
    發表于 10-29 14:17

    如何讓輸入驅動器到4個IDELAYE2的輸入每行都具有相同的延遲?

    我有一個從一個輸入驅動器到4個IDELAYE2的輸入,我希望每行都有相同的延遲。我認為這就是我們所說的偏斜?為什么每個端點都存在偏斜值。這是由溫度引起的變化嗎?我預計只有一個值。從延遲(ns)偏斜
    發表于 10-25 09:26

    如何正確配置ISERDESE2?

    關于正確配置ISERDESE2進行操作,我有一個問題。我之前有一個IDELAYE2,因此輸入被路由到DDLY輸入。當置位復位時,所有Q輸出變為低電平。當復位無效時,4個輸出變為高電平,4個輸出變為
    發表于 07-22 12:28

    請問如何在同一家銀行中限制IDELAYE2和IBUFDS?

    我使用xc7z010來實現lvds。1.據我所知,IDELAYE2和ibufds應自動在同一區域,但如圖所示,ibufds位于bank34中,idelaye2位于bank35中。2.當我使用以
    發表于 08-18 08:28

    一起使用DDR3控制器和IDELAYE2時發生錯誤的原因?

    你好。我最近第一次對待Vivado。我想使用DDR3內存和IDELAYE2。該設備是Kintex-7。當我一起使用DDR3控制器和IDELAYE2時發生錯誤,并且無法形成位文件。當我丟失
    發表于 08-20 09:40

    F240X系列DSP內部資源介紹

    F240X系列DSP內部資源介紹,喜歡的朋友下載來學習學習。
    發表于 01-06 14:41 ?21次下載

    Xilinx時鐘資源 ISE時序分析器

    1. Xilinx 時鐘資源 xilinx 時鐘資源分為兩種:全局時鐘和第二全局時鐘。 1. 全局時鐘資源
    發表于 02-09 08:43 ?1412次閱讀

    Xilinx FPGA底層資源架構與設計規范

    這一次給大家分享的內容主要涉及Xilinx FPGA內的CLBs,SelectIO和Clocking資源,適合對FPGA設計有時序要求,卻還沒有足夠了解的朋友。
    發表于 03-21 14:48 ?4735次閱讀
    <b class='flag-5'>Xilinx</b> FPGA底層<b class='flag-5'>資源</b>架構與設計規范

    賽靈思為各企業提供的專業的關于Xilinx資源培訓介紹

    介紹賽靈思為各企業提供的專業的關于Xilinx資源培訓,以及課程內容
    的頭像 發表于 05-22 13:47 ?3190次閱讀
    賽靈思為各企業提供的專業的關于<b class='flag-5'>Xilinx</b>的<b class='flag-5'>資源</b>培訓<b class='flag-5'>介紹</b>

    SelectIO體系結構及高速SelectIO向導的本機模式介紹

    了解SelectIO體系結構的詳細信息,包括使用純模式或組件模式以及如何開始使用純模式或組件模式進行設計。 該視頻還介紹了高速SelectIO向導的本機模式,即t
    的頭像 發表于 11-29 06:22 ?2330次閱讀

    Xilinx FPGA中SRL移位寄存器的資源介紹

    SRL(移位寄存器)資源,在FPGA中都有,不過是叫不同的名字。Xilinx FPGA內部的LUT有個特殊功能,就是可以配置成可變長度SRL。
    發表于 12-31 16:45 ?8次下載

    Xilinx SelectIO IP的GUI參數詳解及應用設計

    雷達信號處理離不開高速ADC/DAC的使用,而高速ADC/DAC的信號處理對時序的要求非??量?。Xilinx SelectIO IP的出現滿足了大多數芯片對于時序的處理需求,開發者可以高效的完成ADC/DAC驅動設計。
    的頭像 發表于 07-02 17:57 ?4408次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>SelectIO</b> IP的GUI參數詳解及應用設計

    Xilinx—UG471中文翻譯》(1)IDELAYE2原語介紹

    SelectIO,就是I/O接口以及I/O邏輯的總稱?!禪G471--SelectIO》 篇可以分成3部分:第1部分介紹I/O的電氣特性,第2部分介紹I/O邏輯
    的頭像 發表于 02-16 16:21 ?2853次閱讀
    《<b class='flag-5'>Xilinx</b>—UG471中文翻譯》(1)<b class='flag-5'>IDELAYE2</b>原語<b class='flag-5'>介紹</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>