xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

xilinx FPGA idelay 原语用法

 

这里以Artix-7芯片为例,这里以200M时钟延迟为例,其它频率的时钟计算方式和这个一样,IDELAY_VALUE可以设置0~31,如果设置为0默认为600ps,每个tap为78ps,一共0~31tap总共为32个tap,延迟时间计算方式600ps+N*78ps,最大延迟时间为600ps+31*78 =3018ps(N=0~31)

调用idelay

选择Tools–>Language Templates

图片[1]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

可以看到Artix-7下面有两个原语,都复制我们的仿真文件里

图片[2]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

两个原语复制到仿真文件里

图片[3]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

更改后的仿真文件

`timescale 1ns / 1ps // // Company:  // Engineer:  //  // Create Date: 2023/01/01 16:40:37 // Design Name:  // Module Name: test_tb // Project Name:  // Target Devices:  // Tool Versions:  // Description:  //  // Dependencies:  //  // Revision: // Revision 0.01 - File Created // Additional Comments: //  //   module test_tb();  reg clk_50M; reg clk_200M; reg i_rst_n;  initial begin         clk_50M = 1'b0;         clk_200M = 1'b0;         i_rst_n = 1'b0;         #110         i_rst_n = 1'b1;         end     always #10 clk_50M = ~clk_50M;     always #2.5 clk_200M = ~clk_200M;              wire clk_50M_buf;    IDELAYCTRL IDELAYCTRL_inst (       .RDY(),       // 1-bit output: Ready output       .REFCLK(clk_200M), // 1-bit input: Reference clock input       .RST(!i_rst_n)        // 1-bit input: Active high reset input    );     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(), // 5-bit output: Counter value output       .DATAOUT(clk_50M_buf),         // 1-bit output: Delayed data output       .C(clk_200M),                     // 1-bit input: Clock input       .CE(1'b0),                   // 1-bit input: Active high enable increment/decrement input       .CINVCTRL(1'b0),       // 1-bit input: Dynamic clock inversion input       .CNTVALUEIN(5'd0),   // 5-bit input: Counter value input       .DATAIN(1'b0),           // 1-bit input: Internal delay data input       .IDATAIN(clk_50M),         // 1-bit input: Data input from the I/O       .INC(1'b0),                 // 1-bit input: Increment / Decrement tap delay input       .LD(1'b1),                   // 1-bit input: Load IDELAY_VALUE input       .LDPIPEEN(1'b0),       // 1-bit input: Enable PIPELINE register to load data input       .REGRST(!i_rst_n)            // 1-bit input: Active-high reset tap-delay input    );       endmodule 

图片[4]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[5]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

IDELAY_VALUE设置为0时,可以看到输入的clk_50M输出为clk_50M_buf时钟被延迟了0.6ns,也就是600ps

图片[6]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[7]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

IDELAY_VALUE设置为5,可以看到延迟了0.99ns也就是990ps,计算方式为600ps+78*5=990ps

图片[8]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[9]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

IDELAY_VALUE设置为15,可以看到延迟了1.77ns也就是1770ps,计算方式为600ps+78*15=1770ps

图片[10]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

图片[11]-xilinx FPGA idelay 原语用法-Xilinx-AMD社区-FPGA CPLD-ChipDebug

IDELAY_VALUE设置为31最大值,可以看到延迟了3.018ns也就是3018ps,计算方式为600ps+78*31=3018ps

仿真中的延迟值差不多是这样计算,但实际的值需以具体测量延迟值为准

请登录后发表评论

    没有回复内容