转载-----BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用

本文介绍了FPGA全局时钟资源的重要性和类型,如IBUFG、IBUFGDS、BUFG等,强调了这些原语在同步时序设计中的作用,以及它们在Xilinx FPGA器件中的应用和使用方法,包括IBUFG+BUFG、IBUFGDS+BUFG、IBUFG+DCM+BUFG等组合方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。 FPGA 全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小。为了适应复杂设计的需要,Xilinx的FPGA中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加,最新的 Virtex II器件最多可以提供16个全局时钟输入端口和8个数字时钟管理模块(DCM)。

与全局时钟资源相关的原语常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG、IBUFGDS、BUFG、BUFGP、BUFGCE、BUFGMUX、BUFGDLL和DCM等,如图1所示。

 

1. IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUFG 单元,否则在布局布线时会报错。 IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和 SSTL等多种格式的IO标准。

    2. IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。

 

3. BUFG是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。

 

4. BUFGCE是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。    

 

5. BUFGMUX是全局时钟选择缓冲,它有I0和I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。

6. BUFGP相当于IBUG加上BUFG。

7. BUFGDLL是全局缓冲延迟锁相环,相当于BUFG与DLL的结合。BUFGDLL在早期设计中经常使用,用以完成全局时钟的同步和驱动等功能。随着数字时钟管理单元(DCM)的日益完善,目前BUFGDLL的应用已经逐渐被DCM所取代。

8. DCM即数字时钟管理单元,主要完成时钟的同步、移相、分频、倍频和去抖动等。DCM与全局时钟有着密不可分的联系,为了达到最小的延迟和抖动,几乎所有的DCM应用都要使用全局缓冲资源。DCM可以用Xilinx ISE软件中的Architecture Wizard直接生成。

 

 

全局时钟资源的使用方法 全局时钟资源的使用方法(

### IBUFGDS:FPGA 输入缓冲器与全局时钟驱动 IBUFGDS 是一种专门用于 FPGA 的差分输入缓冲器,其主要功能是接收外部差分时钟信号并将其转换为单端信号供内部逻辑使用[^1]。这种缓冲器通常被放置在全球时钟网络的前端,以便将经过处理后的时钟信号传递到 FPGA 的全局时钟驱动器 (Global Clock Driver, GCLK),从而支持高性能同步时序电路的设计。 #### 差分信号的优势 差分信号传输具有抗干扰能力强、信噪比高等特点,在高速设计中尤为重要。通过 IBUFGDS 接收差分时钟信号可以显著提高系统的稳定性和可靠性。然而需要注意的是,尽管 IBUFGDS 将差分信号转化为单端信号,但它并不等同于普通的单端时钟源[^3]。 #### 配置 PLL 时需注意的问题 当使用 IBUFGDS 输出作为相位锁定环路 (Phase-Locked Loop, PLL) 的输入时钟时,必须调整 PLL 的配置参数以匹配实际需求。具体来说,需要将 `clk_in1` 的 source 参数设置为 Global Buffer,这是因为 IBUFGDS 提供的时钟并非标准单端时钟信号,而是一个特殊类型的中间形式[^4]。 以下是针对此场景的一个典型代码片段: ```verilog // Verilog 实现示例 wire clk_diff_p; // 差分正向时钟 wire clk_diff_n; // 差分负向时钟 IBUFGDS ibufgds_inst ( .I(clk_diff_p), // Differential positive clock input .IB(clk_diff_n), // Differential negative clock input .O(clk_single_end) // Single-ended output to the rest of design ); BUFG bufg_clk ( .I(clk_single_end), .O(global_clock_signal) ); ``` 上述代码展示了如何利用 IBUFGDSBUFG 来构建完整的时钟路径。其中,`global_clock_signal` 可进一步连接至 PLL 或其他模块作为主时钟输入。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值