AMD(XILINX)FPGA 常用输入时钟原语有哪些?

文章来源:FPGA入门到精通

Xilinx FPGA的输入时钟原语(Primitives)是连接外部时钟源与内部时钟网络的最底层硬件模块,它们定义了信号的电气特性、布线路径和驱动能力,是构建稳定、高性能时钟系统的基础。

Xilinx原语可以在Vivado的"Language Templates"(语言模板)中直接查找和调用,方便获取官方实例化代码。

输入时钟网络通常遵循“I/O缓冲器 -> 全局缓冲器 (-> 时钟管理模块) -> 全局/区域时钟网络”的基本结构。

一、常用输入时钟原语详解

1、单端与差分输入缓冲器

(1)IBUF

通用输入缓冲器。

用于普通I/O引脚(包括时钟信号),将外部信号引入FPGA内部逻辑。

对于时钟,建议先进入BUFG再使用。Vivado通常会自动为输入端口添加此原语。

(2)IBUFDS

差分输入缓冲器。

接收一对差分信号(如I和IB),并将其转换为内部单端信号O。

常用于数据和源同步时钟。

(3)IBUFG

专用单端全局时钟输入缓冲器。

必须与芯片的专用全局时钟引脚(Clock-Capable Pin)相连,是外部单端时钟进入全局时钟网络的首选和必须路径。

(4)IBUFGDS

专用差分全局时钟输入缓冲器。

功能与IBUFG类似,但用于接收外部高质量的差分时钟信号(如LVDS, LVPECL)。

2、全局与区域时钟缓冲器

(1)BUFG

全局时钟缓冲器。

将时钟信号驱动到整个芯片的低延迟、低抖动时钟网络。

高扇出信号(如复位)也可使用。

(2)BUFR

区域时钟缓冲器。

将时钟信号驱动到特定时钟区域,能同时为I/O逻辑和CLB逻辑提供时钟,并具备整数分频功能。

适合源同步接口或局部逻辑模块。

(3)BUFIO

I/O时钟缓冲器。

专门驱动单个I/O Bank内的时钟网络,延迟极低,仅能为I/O逻辑(如ILOGIC/OLOGIC)提供时钟,不能驱动CLB等内部逻辑。

常用于高速源同步接口的数据采集。

二、原语代码示例

1、处理外部单端系统时钟 (IBUFG + BUFG)

当你的板卡上有一个50MHz的单端晶体振荡器,连接到FPGA的专用时钟引脚时,典型的处理方式是:

2、处理外部差分系统时钟 (IBUFGDS + BUFG)

对于来自外部时钟源或晶振的高质量差分时钟信号(如LVDS),处理方式如下:

3、综合应用 (IBUFDS + BUFG 或 BUFR + IDDR)

对于高速ADC(模数转换器)的源同步接口,通常会提供一个随路差分时钟。