当前位置:   article > 正文

idelay用法_idelaye3使用

idelaye3使用

这里以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下面有两个原语,都复制我们的仿真文件里

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

更改后的仿真文件

  1. `timescale 1ns / 1ps
  2. //
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 2023/01/01 16:40:37
  7. // Design Name:
  8. // Module Name: test_tb
  9. // Project Name:
  10. // Target Devices:
  11. // Tool Versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //
  21. module test_tb();
  22. reg clk_50M;
  23. reg clk_200M;
  24. reg i_rst_n;
  25. initial begin
  26. clk_50M = 1'b0;
  27. clk_200M = 1'b0;
  28. i_rst_n = 1'b0;
  29. #110
  30. i_rst_n = 1'b1;
  31. end
  32. always #10 clk_50M = ~clk_50M;
  33. always #2.5 clk_200M = ~clk_200M;
  34. wire clk_50M_buf;
  35. IDELAYCTRL IDELAYCTRL_inst (
  36. .RDY(), // 1-bit output: Ready output
  37. .REFCLK(clk_200M), // 1-bit input: Reference clock input
  38. .RST(!i_rst_n) // 1-bit input: Active high reset input
  39. );
  40. IDELAYE2 #(
  41. .CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE)
  42. .DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN)
  43. .HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")
  44. .IDELAY_TYPE("FIXED"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
  45. .IDELAY_VALUE(0), // Input delay tap setting (0-31)
  46. .PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE
  47. .REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0).
  48. .SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal
  49. )
  50. IDELAYE2_inst (
  51. .CNTVALUEOUT(), // 5-bit output: Counter value output
  52. .DATAOUT(clk_50M_buf), // 1-bit output: Delayed data output
  53. .C(clk_200M), // 1-bit input: Clock input
  54. .CE(1'b0), // 1-bit input: Active high enable increment/decrement input
  55. .CINVCTRL(1'b0), // 1-bit input: Dynamic clock inversion input
  56. .CNTVALUEIN(5'd0), // 5-bit input: Counter value input
  57. .DATAIN(1'b0), // 1-bit input: Internal delay data input
  58. .IDATAIN(clk_50M), // 1-bit input: Data input from the I/O
  59. .INC(1'b0), // 1-bit input: Increment / Decrement tap delay input
  60. .LD(1'b1), // 1-bit input: Load IDELAY_VALUE input
  61. .LDPIPEEN(1'b0), // 1-bit input: Enable PIPELINE register to load data input
  62. .REGRST(!i_rst_n) // 1-bit input: Active-high reset tap-delay input
  63. );
  64. 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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/614439
推荐阅读
相关标签
  

闽ICP备14008679号