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

可以看到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

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA (Field-Programmable Gate Array)是一种可编程的逻辑器件,可以通过重新编程来实现各种不同的数字电路设计。在FPGA设计中,iDelay是一种常用的元件,用于延迟一个电路信号的到达时间。 FPGA iDelay仿真是指对于使用了iDelay元件的FPGA设计进行的仿真过程。在仿真过程中,我们使用仿真工具模拟和验证FPGA设计的功能和性能,以确保在实际硬件中的正确运行。 仿真过程中,首先需要创建FPGA设计的模型,包括所有的元件、逻辑和连接。然后,我们需要定义输入信号的时序和值,并将其应用到FPGA模型的输入端口上。 接下来,我们可以运行仿真工具来模拟信号在FPGA设计中的传播和延迟。仿真工具会根据输入信号的时序和FPGA模型的逻辑,计算出输出信号的时序和值,并生成仿真波形。 在iDelay仿真中,我们特别关注信号的延迟效应。通过改变iDelay元件的延迟参数,我们可以模拟不同延迟条件下的FPGA设计的行为。这可以帮助我们评估系统对信号延迟的容忍程度,并为进行性能优化提供参考。 通过iDelay仿真,我们可以验证FPGA设计在不同延迟条件下的正确性和稳定性。同时,仿真结果还可以用于调整和优化iDelay元件的设置,以满足设计的需求和性能要求。 综上所述,FPGA iDelay仿真是一种通过仿真工具对FPGA设计中的iDelay元件进行验证和优化的过程,可帮助我们评估和改进FPGA系统的延迟性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值