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

目录

概述

Buffer

 IO

参考文献


概述

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

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

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

Xilinx 7 series设计单元Buffer与IO——BUFG、IBUFG、IBUFDS_GTE2等_第1张图片 图1  FPGA的设计资源种类

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

Buffer

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

Xilinx 7 series设计单元Buffer与IO——BUFG、IBUFG、IBUFDS_GTE2等_第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.

Xilinx 7 series设计单元Buffer与IO——BUFG、IBUFG、IBUFDS_GTE2等_第3张图片 图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使用

 

你可能感兴趣的:(BUFG,IBUFDS)