Xilinx 7 series设计单元Buffer与IO——BUFG、IBUFG、IBUFDS_GTE2等

文章转载于Xilinx 7 series设计单元Buffer与IO——BUFG、IBUFG、IBUFDS_GTE2等

文章目录

概述

FPGA里面有2种电路的基本设计元素
primitives 原语:是设计的基本单元,例如缓存BUF,D触发器FDCE,
macros 宏:由原语或者宏组成,例如FD4CE就是4个FDCE组成。
但是不同的FPGA芯片会有不同的设计资源。

我们编写的Verilog通过综合之后就是映射成了原语与宏的电路组合。因此Verilog与原语或宏的关系,就像C语言与汇编。

FPGA的设计资源有很多类(图1)[1],但是大多数不常用,大多数是通过Verilog编写之后间接调用的,但是有一些在大型工程中可能常用到且只能通过原语或宏的形式调用,例如Buffer,IO当中的一些单元。
图1  FPGA的设计资源种类

Buffer

Buffer与IO的单元均是为了一个功能:对时钟与数据缓冲,以达到符合时序设计的要求。大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟与数据的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。 FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小[2]。
Buffer

Buffer的主要功能就是对FPGA的内部模块之间互联的数据进行缓冲,如图2.
图2 Buffer

以BUFG为例 ,在vivado的主界面的PROJECT MANAGER下的language templates中可以找到原语的模板。

BUFGCE BUFGCE_inst (
          .O(O),   // 1-bit output: Clock output
          .CE(CE), // 1-bit input: Clock enable input for I0
          .I(I)    // 1-bit input: Primary clock
       );

IO

IO就是输入输出数据与时钟的缓冲,种类较多,只放一部分图3,具体可看[1]UG799.
图3 部分IO

其中常用的有IBUFDS差分输入缓冲,常用来对差分输入时钟进行单输出化。
IBUFDS_GTE2 是吉比特高速收发器GTX等的专用时钟输入缓冲。

    // IBUFDS: Differential Input Buffer
    //         Kintex-7
    // Xilinx HDL Language Template, version 2018.2  
    IBUFDS #(
          .DIFF_TERM("FALSE"),       // Differential Termination
          .IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE" 
          .IOSTANDARD("DEFAULT")     // Specify the input I/O standard
       ) IBUFDS_inst (
          .O(O),  // Buffer output
          .I(I),  // Diff_p buffer input (connect directly to top-level port)
          .IB(IB) // Diff_n buffer input (connect directly to top-level port)
       );
     
     
    // IBUFDS_GTE2: Gigabit Transceiver Buffer
    //              Kintex-7
    // Xilinx HDL Language Template, version 2018.2
     
    IBUFDS_GTE2 #(
          .CLKCM_CFG("TRUE"),   // Refer to Transceiver User Guide
          .CLKRCV_TRST("TRUE"), // Refer to Transceiver User Guide
          .CLKSWING_CFG(2'b11)  // Refer to Transceiver User Guide
       )
       IBUFDS_GTE2_inst (
          .O(O),         // 1-bit output: Refer to Transceiver User Guide
          .ODIV2(ODIV2), // 1-bit output: Refer to Transceiver User Guide
          .CEB(CEB),     // 1-bit input: Refer to Transceiver User Guide
          .I(I),         // 1-bit input: Refer to Transceiver User Guide
          .IB(IB)        // 1-bit input: Refer to Transceiver User Guide
       );

Tips:

BUF:buffer D :diff G :global clock S:signal
参考文献

[1]UG799

[2]vivado中BUFG和BUFGCE使用

————————————————
版权声明:本文为CSDN博主「king阿金」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34070723/article/details/103749439

  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值