0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Xilinx SelectIO資源內(nèi)部的IDELAYE2應(yīng)用介紹

FPGA技術(shù)實(shí)戰(zhàn) ? 來(lái)源:FPGA技術(shù)實(shí)戰(zhàn) ? 2024-04-26 11:33 ? 次閱讀

引言:本文我們介紹下Xilinx SelectIO資源內(nèi)部IDELAYE2資源應(yīng)用。IDELAYE2原句配合IDELAYCTRL原句主要用于在信號(hào)通過(guò)引腳進(jìn)入芯片內(nèi)部之前,進(jìn)行延時(shí)調(diào)節(jié),一般高速端口信號(hào)由于走線延時(shí)等原因,需要通過(guò)IDELAYE2原語(yǔ)對(duì)數(shù)據(jù)做微調(diào),實(shí)現(xiàn)時(shí)鐘與數(shù)據(jù)的源同步時(shí)序要求。

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 開(kāi)關(guān)特性手冊(cè)中介紹了IDELAY延遲分辨率及最大工作時(shí)鐘,如下表所示。

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

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

根據(jù)上圖延遲分辨率,例如當(dāng)參考時(shí)鐘為200MHz時(shí),根據(jù)公式計(jì)算:

平均抽頭延遲單位為T(mén)idelayresoluion=1/(32×2×200MHz)≈78ps。

需要說(shuō)明的一點(diǎn)是:

當(dāng)抽頭系數(shù)Tap=0時(shí),輸入和輸出延遲時(shí)間并非為0ps,而是600ps;

當(dāng)抽頭系數(shù)Tap=1~31時(shí),TapDelayTime=600ps+Tidelayresoluion*Tap。

3. IDELAYE2原句

在Vivado Language Templates中搜索IDELAY,在Verilog目錄中根據(jù)工程器件家族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為延時(shí)前的輸入信號(hào),DATAOUT為延時(shí)后的輸出信號(hào)。REFCLK_FREQUENCY參數(shù)為IDELAYCTRL原語(yǔ)的參考時(shí)鐘頻率,一般為200Mhz,最大頻率范圍根據(jù)器件手冊(cè)確定。IDELAY_VALUE參數(shù)用來(lái)設(shè)置延時(shí)的tap數(shù),范圍為1~31,每個(gè)tap數(shù)的延時(shí)時(shí)間和參考時(shí)鐘頻率有關(guān)。

4. IDELAYCTRL原句

IDELAYE2或者ODELAYE2原句例化時(shí),IDELAYCTRL原句也必須例化。IDELAYCTRL通過(guò)參考時(shí)鐘REFCLK來(lái)校準(zhǔn)IDELAY2每個(gè)tap的延時(shí)值,減少處理、電壓和溫度的影響。該模塊使用REFCLK時(shí)鐘精細(xì)校準(zhǔn)。
   (* 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原句工程源碼與仿真測(cè)試

5.1 開(kāi)發(fā)環(huán)境

硬件平臺(tái):XC7Z035FFG676-2

軟件環(huán)境:Vivado 2017.4

仿真軟件:Vivado Simulator

5.2 軟件代碼

IDELAYE2工程源碼:

module IDELAYE2_Test(
   input clk_in_50M, //時(shí)鐘
   input rst_n,   //復(fù)位
   input ld,
   input ce,
   input inc,
   input [4:0] tap_value_in,     //設(shè)置延遲抽頭系數(shù)
inputdata_in_from_pins,//輸入Pins數(shù)據(jù)
   output [4:0] tap_value_out,
   output delay_ctrl_rdy,         //IDELAYCTRL 延遲校準(zhǔn)ready信號(hào)
outputdata_in_from_pins_delay//輸出Pins延遲數(shù)據(jù)
    );


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


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


// ======== 例化PLL時(shí)鐘 ========
  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" *) // 指定關(guān)聯(lián)的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" *) //指定關(guān)聯(lián)的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).時(shí)鐘常量
       .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,該時(shí)鐘用于驅(qū)動(dòng)IDELAYE2內(nèi)部控制信號(hào)
       .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. 測(cè)試IDELAYE2模式為"FIXED"--------.IDELAY_TYPE("FIXED")
       #10000  data_in_from_pins = 1'b1; //輸入脈沖  
       #20     data_in_from_pins = 1'b0; 
       
       //2.測(cè)試IDELAYE2模式為"VARIABLE"--------.IDELAY_TYPE("VARIABLE")
       #200 ld = 1'b1;  //控制信號(hào)
       #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; //輸入數(shù)據(jù)
       #20 data_in_from_pins = 1'b0; 
       
       //3.測(cè)試IDELAYE2模式為"VAR_LOAD"--------.IDELAY_TYPE("VAR_LOAD")
       #20  tap_value_in = 5'd5;  //控制信號(hào)
       #100 ld = 1'b1;            //"VARIABLE"模式下,使能ld,Tap= CNTVALUEIN值 
       #50  ld = 1'b0; 
       #20 data_in_from_pins = 1'b1; //輸入數(shù)據(jù)
       #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; //輸入數(shù)據(jù)
#20data_in_from_pins=1'b0;
end

5.3 仿真結(jié)果

1. IDELAY_TYPE="FIXED"時(shí),仿真結(jié)果如下圖所示。

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

圖4:IDELAY_TYPE="FIXED"仿真結(jié)果

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

2. IDELAY_TYPE="VARIABLE"時(shí),仿真結(jié)果如下圖所示。

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

圖5:IDELAY_TYPE="VARIABLE"仿真結(jié)果

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

data_in_from_pins_delay信號(hào)延遲:TapDelayTime=600ps+78ps*10=1380ps

3. IDELAY_TYPE="VAR_LOAD"時(shí),使能LD信號(hào),仿真結(jié)果如下圖所示。

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

圖6:IDELAY_TYPE="VAR_LOAD"仿真結(jié)果

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

data_in_from_pins_delay信號(hào)延遲:TapDelayTime=600ps+78ps*5=990ps

4. IDELAY_TYPE="VAR_LOAD"時(shí),使能CE和INC信號(hào),仿真結(jié)果如下圖所示。

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

圖7:IDELAY_TYPE="VAR_LOAD"仿真結(jié)果

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

data_in_from_pins_delay信號(hào)延遲:TapDelayTime=600ps+78ps*6=1068ps.



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21620

    瀏覽量

    601231
  • 時(shí)鐘信號(hào)
    +關(guān)注

    關(guān)注

    4

    文章

    442

    瀏覽量

    28488
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    804

    瀏覽量

    66221

原文標(biāo)題:時(shí)序約束之Xilinx IDELAYE2應(yīng)用及仿真筆記

文章出處:【微信號(hào):FPGA技術(shù)實(shí)戰(zhàn),微信公眾號(hào):FPGA技術(shù)實(shí)戰(zhàn)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Xilinx系列FPGA SelectIO簡(jiǎn)介

    FPGA是電子器件中的萬(wàn)能芯片,Xilinx FPGA處于行業(yè)龍頭地位更是非常靈活。FPGA管腳兼容性強(qiáng),能跟絕大部分電子元器件直接對(duì)接。Xilinx SelectIO支持電平標(biāo)準(zhǔn)多,除MIPI
    發(fā)表于 08-02 09:31 ?6090次閱讀
    <b class='flag-5'>Xilinx</b>系列FPGA <b class='flag-5'>SelectIO</b>簡(jiǎn)介

    FPGA | Xilinx ISE14.7 LVDS應(yīng)用

    利用FPGA內(nèi)部自帶的SelectIO資源,利用ISERDESE2、 OSERDESE2,實(shí)現(xiàn)串-并,并-串的轉(zhuǎn)換,理論速度可達(dá)到750Mb
    發(fā)表于 06-13 16:28

    xilinx selectio IPcore使用的問(wèn)題

    `我在頂層簡(jiǎn)單例化了selectio IPcore,在testbench中我將差分輸出端接到本身的差分輸入端,得到的結(jié)果是:接收數(shù)據(jù)是發(fā)送數(shù)據(jù)的4倍,不知道哪里出了問(wèn)題,用過(guò)xilinx selectio IPcore的請(qǐng)幫忙解
    發(fā)表于 06-08 16:33

    使用synplify和生成器網(wǎng)表文件合成VIRTEX 7時(shí)報(bào)告嚴(yán)重警告

    相匹配,應(yīng)在源網(wǎng)表中更改SIM_DEVICE的值。未能正確設(shè)置SIM_DEVICE將阻止此設(shè)計(jì)生成比特流。嚴(yán)重警告[Netlist 29-335]'IDELAYE2'類(lèi)型的實(shí)例'u_idelaye1'可能
    發(fā)表于 10-29 14:17

    如何讓輸入驅(qū)動(dòng)器到4個(gè)IDELAYE2的輸入每行都具有相同的延遲?

    我有一個(gè)從一個(gè)輸入驅(qū)動(dòng)器到4個(gè)IDELAYE2的輸入,我希望每行都有相同的延遲。我認(rèn)為這就是我們所說(shuō)的偏斜?為什么每個(gè)端點(diǎn)都存在偏斜值。這是由溫度引起的變化嗎?我預(yù)計(jì)只有一個(gè)值。從延遲(ns)偏斜
    發(fā)表于 10-25 09:26

    如何正確配置ISERDESE2

    關(guān)于正確配置ISERDESE2進(jìn)行操作,我有一個(gè)問(wèn)題。我之前有一個(gè)IDELAYE2,因此輸入被路由到DDLY輸入。當(dāng)置位復(fù)位時(shí),所有Q輸出變?yōu)榈碗娖健.?dāng)復(fù)位無(wú)效時(shí),4個(gè)輸出變?yōu)楦唠娖剑?個(gè)輸出變?yōu)?/div>
    發(fā)表于 07-22 12:28

    請(qǐng)問(wèn)如何在同一家銀行中限制IDELAYE2和IBUFDS?

    我使用xc7z010來(lái)實(shí)現(xiàn)lvds。1.據(jù)我所知,IDELAYE2和ibufds應(yīng)自動(dòng)在同一區(qū)域,但如圖所示,ibufds位于bank34中,idelaye2位于bank35中。2.當(dāng)我使用以
    發(fā)表于 08-18 08:28

    一起使用DDR3控制器和IDELAYE2時(shí)發(fā)生錯(cuò)誤的原因?

    你好。我最近第一次對(duì)待Vivado。我想使用DDR3內(nèi)存和IDELAYE2。該設(shè)備是Kintex-7。當(dāng)我一起使用DDR3控制器和IDELAYE2時(shí)發(fā)生錯(cuò)誤,并且無(wú)法形成位文件。當(dāng)我丟失
    發(fā)表于 08-20 09:40

    F240X系列DSP內(nèi)部資源介紹

    F240X系列DSP內(nèi)部資源介紹,喜歡的朋友下載來(lái)學(xué)習(xí)學(xué)習(xí)。
    發(fā)表于 01-06 14:41 ?21次下載

    Xilinx時(shí)鐘資源 ISE時(shí)序分析器

    1. Xilinx 時(shí)鐘資源 xilinx 時(shí)鐘資源分為兩種:全局時(shí)鐘和第二全局時(shí)鐘。 1. 全局時(shí)鐘資源
    發(fā)表于 02-09 08:43 ?1610次閱讀

    Xilinx FPGA底層資源架構(gòu)與設(shè)計(jì)規(guī)范

    這一次給大家分享的內(nèi)容主要涉及Xilinx FPGA內(nèi)的CLBs,SelectIO和Clocking資源,適合對(duì)FPGA設(shè)計(jì)有時(shí)序要求,卻還沒(méi)有足夠了解的朋友。
    發(fā)表于 03-21 14:48 ?4972次閱讀
    <b class='flag-5'>Xilinx</b> FPGA底層<b class='flag-5'>資源</b>架構(gòu)與設(shè)計(jì)規(guī)范

    賽靈思為各企業(yè)提供的專(zhuān)業(yè)的關(guān)于Xilinx資源培訓(xùn)介紹

    介紹賽靈思為各企業(yè)提供的專(zhuān)業(yè)的關(guān)于Xilinx資源培訓(xùn),以及課程內(nèi)容
    的頭像 發(fā)表于 05-22 13:47 ?3384次閱讀
    賽靈思為各企業(yè)提供的專(zhuān)業(yè)的關(guān)于<b class='flag-5'>Xilinx</b>的<b class='flag-5'>資源</b>培訓(xùn)<b class='flag-5'>介紹</b>

    SelectIO體系結(jié)構(gòu)及高速SelectIO向?qū)У谋緳C(jī)模式介紹

    了解SelectIO體系結(jié)構(gòu)的詳細(xì)信息,包括使用純模式或組件模式以及如何開(kāi)始使用純模式或組件模式進(jìn)行設(shè)計(jì)。 該視頻還介紹了高速SelectIO向?qū)У谋緳C(jī)模式,即t
    的頭像 發(fā)表于 11-29 06:22 ?2488次閱讀

    Xilinx SelectIO IP的GUI參數(shù)詳解及應(yīng)用設(shè)計(jì)

    雷達(dá)信號(hào)處理離不開(kāi)高速ADC/DAC的使用,而高速ADC/DAC的信號(hào)處理對(duì)時(shí)序的要求非??量獭?b class='flag-5'>Xilinx SelectIO IP的出現(xiàn)滿(mǎn)足了大多數(shù)芯片對(duì)于時(shí)序的處理需求,開(kāi)發(fā)者可以高效的完成ADC/DAC驅(qū)動(dòng)設(shè)計(jì)。
    的頭像 發(fā)表于 07-02 17:57 ?4891次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>SelectIO</b> IP的GUI參數(shù)詳解及應(yīng)用設(shè)計(jì)

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

    SelectIO,就是I/O接口以及I/O邏輯的總稱(chēng)?!禪G471--SelectIO》 篇可以分成3部分:第1部分介紹I/O的電氣特性,第2部分
    的頭像 發(fā)表于 02-16 16:21 ?4200次閱讀
    《<b class='flag-5'>Xilinx</b>—UG471中文翻譯》(1)<b class='flag-5'>IDELAYE2</b>原語(yǔ)<b class='flag-5'>介紹</b>