赞
踩
这里以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
可以看到Artix-7下面有两个原语,都复制我们的仿真文件里
两个原语复制到仿真文件里
更改后的仿真文件
- `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
IDELAY_VALUE设置为0时,可以看到输入的clk_50M输出为clk_50M_buf时钟被延迟了0.6ns,也就是600ps
IDELAY_VALUE设置为5,可以看到延迟了0.99ns也就是990ps,计算方式为600ps+78*5=990ps
IDELAY_VALUE设置为15,可以看到延迟了1.77ns也就是1770ps,计算方式为600ps+78*15=1770ps
IDELAY_VALUE设置为31最大值,可以看到延迟了3.018ns也就是3018ps,计算方式为600ps+78*31=3018ps
仿真中的延迟值差不多是这样计算,但实际的值需以具体测量延迟值为准
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。