当前位置:   article > 正文

xilinx原语(a7是不支持idelay2及ctl原语的)_ibufds gte3

ibufds gte3

1.Xilinx FPGA7系列分为全局时钟(Global clock)和局部时钟(Regional clock)资源,区域时钟Regional clock相较于全局时钟的时钟质量更好。只是区域时钟只是针对于区域类。

  1. //1
  2. IBUFDS #(
  3. .DIFF_TERM ("TRUE"), // Differential Termination
  4. .IBUF_LOW_PWR ("FALSE"), // Low power="TRUE", Highest performance="FALSE"
  5. //.IOSTANDARD ("LVDS_25") // Specify the input I/O standard
  6. .IOSTANDARD ("LVDS") // Specify the input I/O standard
  7. )
  8. u_clkds
  9. (
  10. .I (i_ad_clk_p),
  11. .IB (i_ad_clk_n),
  12. .O (adclk_int)
  13. );
  14. //2
  15. BUFR
  16. #(.SIM_DEVICE("7SERIES"),
  17. .BUFR_DIVIDE("BYPASS"))
  18. clkout_buf_inst
  19. ( .O (adclk_bufg),
  20. .CE(),
  21. .CLR(),
  22. .I (adclk_int)
  23. //.I (adclk_dly)
  24. );
  25. //3
  26. BUFG u_clkbufg
  27. (
  28. .I (adclk_bufg),
  29. .O (adclk_gclk)
  30. );

1.差分时钟进入FPGA需用ibufds或者pll的差分输入接口来处理时钟信号。

2.自己推测单端时钟应该怎么写如下

  1. BUFR
  2. #(.SIM_DEVICE("7SERIES"),
  3. .BUFR_DIVIDE("2"))
  4. clkout_buf_inst
  5. (.O (clk_div_bufr),
  6. .CE(1'b1),
  7. .CLR(clk_reset),
  8. .I (clk_in_int));
  9. BUFG U_bufr_clk
  10. (
  11. .O (clk_div),
  12. .I (clk_div_bufr)
  13. );

  1. IBUFGDS u_IBUFGDS
  2. (
  3. .I(clk_p) ,
  4. .IB(clk_n) ,
  5. .O(clk)
  6. );

相关知识点:

BUFR是区域时钟缓冲器,要进入区域时钟网络,必须例化BUFR

ibuf是输入缓冲器,用于将外部输入的时钟信号进行缓冲和放大;

bufg是全局缓冲器,用于将经过ibuf缓冲的时钟信号进行进一步的放大和分配

4.实测——输入pcie硬核的差分时钟经过IBUFDS_GTE2,出来后不能直接驱动ila(布线报错),需经过bufg在给ila(才不会报错)——这一点存疑(因为在bd里面同样不经过bufg也没报错)——推断应该和布线资源的消耗有关系,如果报错了就按报错的推荐加bufg。

IBUFDS_GTE2原语————进入GT的两个差分时钟必须要使用该原语,才能给ip核使用。

  1. IBUFDS_GTE2 #(
  2. .CLKCM_CFG("TRUE"), // Refer to Transceiver User Guide
  3. .CLKRCV_TRST("TRUE"), // Refer to Transceiver User Guide
  4. .CLKSWING_CFG(2'b11) // Refer to Transceiver User Guide
  5. )
  6. IBUFDS_GTE2_inst (
  7. .O(O), // 1-bit output: Refer to Transceiver User Guide
  8. .ODIV2(ODIV2), // 1-bit output: Refer to Transceiver User Guide
  9. .CEB(CEB), // 1-bit input: Refer to Transceiver User Guide
  10. .I(I), // 1-bit input: Refer to Transceiver User Guide
  11. .IB(IB) // 1-bit input: Refer to Transceiver User Guide
  12. );

1) I和IB是一对差分输入;
2) CEB低有效,高表示不使能IBUFDS_GTE2;
3) O 和 ODIV2都可以驱动BUFG或BUFH;
4) O 和 ODIV2 哪个连接到程序中哪个起作用;

5:clkswing_cfg:只能设置2'd11(手册上说的)

 五: IBUFDS_GTE3 原语

六:BUFG
全局时钟缓冲。它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。BUFG连接的是芯片中的专用时钟资源,能减少信号的传输延时,提高驱动能力。BUFG可以到达设备上的任何时钟点。
注意:如果内部产生的时钟,只在局部模块使用,可以考虑不使用BUFG。一个BUFG只能驱动一个时钟。
 

  1. BUFG BUFG_inst (
  2. .O(CLK0), // 1-bit output: Clock output.
  3. .I(CLK) // 1-bit input: Clock input.
  4. );

七:IBUF

介绍
输入缓冲,综合的时候,工具会自动给输入信号连接IBUF。

   IBUF IBUF_inst (
      .O(O), // 1-bit output: Buffer output
      .I(I)  // 1-bit input: Buffer input
   );

八:IBUFDS

重点是差分。
IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接,因此差分信号进入片内之后不经过IBUFDS缓冲是无法直接处理的,即无法使用。

  1. IBUFDS IBUFDS_inst (
  2. .O(O), // 1-bit output: Buffer output
  3. .I(I), // 1-bit input: Diff_p buffer input (connect directly to top-level port)
  4. .IB(IB) // 1-bit input: Diff_n buffer input (connect directly to top-level port)
  5. );

九:

1.

IBUFDS_GTEx,x=2/3/4,差分缓冲器,用于高速BANK(GTY BANK)的两路参考时钟输入。其中UltraScale使用IBUFDS_GTE3作为GTY bank的差分缓冲器,UltraScale+采用IBUFDS_GTE4。对于高速BANK,需要使用IBUFDS_GTEx(不同系列的FPGA x的值不同,如x=2/3/4),如果仍然使用IBUFDS,可能会在编译或者生成bit文件时报错

2.

 使用原语驱动GTX/GTH/GHY参考时钟,每个Quad有两个IBUFDS_GTEx元件,驱动GTREFCLK0和GTREFCLK1,常用模式是实例化一个IBUFDS_GTEx并驱动两个参考时钟之一。

十:

逻辑设计中需要显式地使用IBUF以及OBUF类似的原语吗?——————不需要

具体分析见逻辑设计中需要显式地使用IBUF以及OBUF类似的原语吗?-CSDN博客

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

闽ICP备14008679号