请选择 进入手机版 | 继续访问电脑版

集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1228|回复: 2

Xilinx FPGA全局时钟和第二全局时钟资源

[复制链接]
fpga_feixiang 发表于 2020-8-30 21:35:13 | 显示全部楼层 |阅读模式
全局时钟和第二全局时钟资源”是FPGA同步设计的一个重要概念。合理利用该资源可
以改善设计的综合和实现效果;如果使用不当,不但会影响设计的工作频率和稳定性等
,甚至会导致设计的综合、实现过程出错。本文总结了Xilinx FPGA全局时钟和第二全局
时钟资源的使用方法,并强调了应用中的注意事项。
目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时
钟的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一
般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。

FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而
使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block
Select RAM)的时延和抖动都为最小。为了适应复杂设计的需要,Xilinx的FPGA中集成
的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加,最新的Virtex II器件最多可
以提供16个全局时钟输入端口和8个数字时钟管理模块(DCM)。
与全局时钟资源相关的原语
常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG、IBUFGDS、BUFG、BUFGP、B
UFGCE、BUFGMUX、BUFGDLL和DCM等,如图1所示。
1. IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从
全局时钟管脚输入的信号必须经过IBUFG单元,否则在布局布线时会报错。IBUFG支持AG
P、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和SSTL
等多种格式的IO标准。
2. IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBU
FGDS作为全局时钟输入缓冲。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即数字时钟管理单元,主要完成时钟的同步、移相、分频、倍频和去抖动等。DC
M与全局时钟有着密不可分的联系,为了达到最小的延迟和抖动,几乎所有的DCM应用都
要使用全局缓冲资源。DCM可以用Xilinx ISE软件中的Architecture Wizard直接生成。

全局时钟资源的使用方法
全局时钟资源的使用方法有以下5种,如图2所示。
1. IBUFG + BUFG的使用方法:
IBUFG后面连接BUFG的方法是最基本的全局时钟资源使用方法,由于IBUFG组合BUFG相当
于BUFGP,所以在这种使用方法也称为BUFGP方法。
2. IBUFGDS + BUFG的使用方法:
当输入时钟信号为差分信号时,需要使用IBUFGDS代替IBUFG。
3. IBUFG + DCM + BUFG的使用方法:
这种使用方法最灵活,对全局时钟的控制更加有效。通过DCM模块不仅仅能对时钟进行同
步、移相、分频和倍频等变换,而且可以使全局时钟的输出达到无抖动延迟。
4. Logic + BUFG的使用方法:
BUFG不但可以驱动IBUFG的输出,还可以驱动其它普通信号的输出。当某个信号(时钟、
使能、快速路径)的扇出非常大,并且要求抖动延迟最小时,可以使用BUFG驱动该信号,
使该信号利用全局时钟资源。但需要注意的是,普通IO的输入或普通片内信号进入全局
时钟布线层需要一个固有的延时,一般在10ns左右,即普通IO和普通片内信号从输入到
BUFG输出有一个约10ns左右的固有延时,但是BUFG的输出到片内所有单元(IOB、CLB、选
择性块RAM)的延时可以忽略不计为“0”ns。
5. Logic + DCM + BUFG的使用方法:
DCM同样也可以控制并变换普通时钟信号,即DCM的输入也可以是普通片内信号。
使用全局时钟资源的注意事项
全局时钟资源必须满足的重要原则是:使用IBUFG或IBUFGDS的充分必要条件是信号从专
用全局时钟管脚输入。换言之,当某个信号从全局时钟管脚输入,不论它是否为时钟信
号,都必须使用IBUFG或IBUFGDS;如果对某个信号使用了IBUFG或IBUFGDS硬件原语,则
这个信号必定是从全局时钟管脚输入的。如果违反了这条原则,那么在布局布线时会报
错。这条规则的使用是由FPGA的内部结构决定的:IBUFG和IBUFGDS的输入端仅仅与芯片
的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。
另外,由于BUFGP相当于IBUFG和BUFG的组合,所以BUFGP的使用也必须遵循上述的原则。

全局时钟资源的例化方法
全局时钟资源的例化方法大致可分为两种:一是在程序中直接例化全局时钟资源,二是
通过综合阶段约束或者实现阶段约束实现对全局时钟资源的使用。
第一种方法比较简单,用户只需按照前面讲述的5种全局时钟资源的基本使用方法编写代
码或者绘制原理图即可。第二方法是通过综合阶段约束或实现阶段的约束完成对全局时
钟资源的调用,这种方法根据综合工具和布局布线工具的不同而异。另外,大多数综合
工具会自动分析时钟信号的扇出数目,在全局时钟资源富裕的情况下,将扇出数目最大
的信号自动指定使用全局时钟资源,这时用户必须检查综合结果是否满足上述使用IBUF
G、IBUFGDS、BUFGP的原则。如果某个信号因扇出很大,而被综合器自动指定使用IBUFG
、IBUFGDS、BUFGP全局时钟资源,而该信号并没有从专用全局时钟管脚输入,在布局布
线时会报错,这时应该在综合时指定该信号不使用全局时钟资源。具体的综合约束命令
和操作因综合工具不同而异,下面仅仅举例Synplify/Synplify Pro和FPGA Express/FP
GA Compiler II中指定不使用全局时钟资源的方法。
在Synplify/Synplify Pro中打开SCOPE(综合约束优化环境),选择约束属性选项卡。选
择约束对象类型(Object Type)为“clock”,然后在约束对象(Object)为设计中的某个
时钟,选择约束属性为“syn_noclockbuf”,设置约束值域(Value)为“1”。图3所示为
在Synplify Pro的SCOPE中指定信号不使用全局时钟资源的方法。
也可以在Synplify/Synplify Pro约束文件(扩展名为SDC)或者源代码中使用约束命令指
定不使用全局时钟资源,如表1所示。
在FPGA Express/FPGA Compiler II中,用鼠标右键单击编译后的芯片图标,在弹出的命
令对话框中选择“Edit Constraints”命令编辑综合约束文件(扩展名为CTL),选择端口
选项卡,指定所需信号的全局时钟域为“DONT USE”。图4所示为在FPGA Express综合约
束编辑器中指定信号不使用全局时钟资源的方法。
也可以在FPGA Express/FPGA Compiler II综合约束文件(扩展名为CTL)中直接使用“po
rt clk global_buffer "DONT USE"”命令指定输入端口信号“clk”不使用全局时钟资
源。
第二全局时钟资源
第二全局时钟资源也叫长线资源,它是分布在芯片的行、列的栅栏(Bank)上,一般采用
铜、铝工艺,其长度和驱动能力仅次于全局时钟资源。与全局时钟相似,第二全局时钟
资源直接同IOB、CLB、选择性块RAM等逻辑单元连接,第二全局时钟信号的驱动能力和时
钟抖动延迟等指标仅次于全局时钟信号。Xilinx的FPGA中一般有比较丰富的第二全局时
钟资源(很多器件有24个第二全局时钟资源),以满足高速、复杂时序逻辑设计的需要。

在设计中一般将频率较高,扇出数目较多的时钟、使能、高速路径信号指定为第二全局
时钟信号。第二全局时钟资源的使用方法比较简单,一般是在约束编辑器的专用约束(M
isc)选项卡中指定所选信号使用低抖动延迟资源“Low Skew”。
也可以直接在指导Xilinx实现步骤的用户约束文件(UCF)中添加“USELOWSKEWLINES”约
束命令。上面在约束编辑器中的操作等效于在用户约束文件中添加如下内容:
NET "sum<0>" USELOWSKEWLINES;
NET "sum<1>" USELOWSKEWLINES;
NET "sum<2>" USELOWSKEWLINES;
全局时钟资源是专用布线资源,它存在于全铜布线层上,用户使用全局时钟资源并不会
影响芯片的其它布线资源。而第二全局时钟资源与之不同,它使用的是芯片内部的布线
资源。在设计的密度非常大(面积利用率高于90%)的情况下,使用所有的第二全局时钟资
源会给设计的布局布线带来负面影响,可能导致芯片布线不成功。



XILINX芯片中不能自动的对时钟进行处理,需要自己进行处理。

1、从FPGA时钟引脚输入的是时钟,需要经过锁相环或者IBUFG+BUFG过一下,才能实现稳定。  
注意IBUFG只能是全局时钟引脚引入的。

2、BUFG处理一些自己产生的时钟,但是只能是reg型的才能处理。普通IO口上,或者是WIRE 型的都处理不了,必须转成REG型的才可以用。

BUFG连接的是芯片中的专用时钟资源,目的是减少信号的传输延时,提高驱动能力,对于时序电路中的关键时钟信号,这是非常重要的,关系到系统设计的成功与否。如果内部产生的时钟,只在局部模块使用,可以考虑不使用BUFG。

IBUFG、BUFG等多个缓存器关于其作用,有资料上写到:“使时钟延迟和抖动最小
大鹏 发表于 2020-9-1 22:19:57 | 显示全部楼层
Xilinx FPGA全局时钟和第二全局时钟资源
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-3-29 17:33 , Processed in 0.068621 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表