无论是用可编程逻辑元件,还是用全定制元件实现任何数字电路,设计不良的时钟在极限温度、电压或制造工艺偏差的情况下将导致系统错误的行为,所以可靠的时钟设计是非常关键的。在FPGA设计时通常采用以下四种时钟:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。
一、全局时钟
全局时钟是最简单和最可预测的时钟。FPGA一般都具有专门的全局时钟引脚,在项目中应尽量采用全局时钟,它能够提供元件中最短的时钟到输出的延时。
二、门控时钟
在许多应用中,整个设计项目都采用外部的全局时钟是不可能或者不实际的,所以常用阵列时钟构成门控时钟。
每当用组合逻辑来控制触发器时,通常都存在着门控时钟。在使用门控时钟时,应仔细分析时钟,以避免毛刺的影响。如果设计满足下述两个条件,则可以保证时钟信号不出现危险的毛刺,门控时钟既可以像全局时钟一样可靠的工作。
(1)驱动时钟的逻辑必须只包含一个“与门”或“或门”,如果采用任何附加逻辑,就会在某些工作状态下出现由于逻辑竞争而产生的毛刺。
(2)逻辑门的一个输入作为实际的时钟,而该逻辑门所有其他输入必须当成地址或控制线,他们遵守相对于时钟的建立和保持时间的约束。
图8.19给出了一个不可靠的门控时钟的例子。3位同步加法计数器RCO输出用来作为 触发器的时钟端,由于计数器的多个输出都起到了时钟的作用,违反了可靠门控时钟所需的条件之一。
图8.20给出了一种可靠的全局时钟控制电路,即用RCO来控制D触发器的使能输人。这个改进并不需要增加FPGA的逻辑单元,但可靠得多。
三、多级逻辑时钟
当产生门控时钟的组合逻辑超过一级,即超过单个的“与门”或”或门”时,该设计项目的可靠性将变得很差。在这种情况下,即使样机或仿真结果没有显示出静态险象,但实际上仍然可能存在危险,所以不应该用多级组合逻辑作为触发器的时钟端。
四、行波时钟
所谓行波系统是指一个触发器的输出用作另一个触发器的时钟输入。如果仔细设计,行波时钟可以像全局时钟一样可靠,但是行波时钟使得与电路有关的定时计算变得复杂。行波时钟在行波链上各种触发之间产生较大的时间偏移,并且会超出最坏情况下的建立时间、保持时间和电路中时钟到输出的延时,使系统的实际速度下降。
五、时钟歪斜现象及解决办法
时钟歪斜是FPGA设计中最严重的问题之一。电路中控制各元件同步运行的时钟源到各元件的距离相差很大,时钟歪斜就是在系统内不同元件处检测到有效的时钟跳变沿所需的时间差异。时钟歪斜严重影响电路的同步,如果不加以处理,往往会造成电路的时序紊乱。
减少时钟歪斜的方法有以下几种:
(1)采用适当的时钟缓冲器,严重的时钟歪斜往往是由于在FPGA内的时钟及其他全局控制线(如控制线)使负载过重造成的,在信号线上接一串线性缓冲器,使驱动器强度逐步增大,可以消除时钟歪斜。
(2)采用FPGA内的PLL模块可以对输入时钟进行很好的分频和倍频,从而使时钟歪斜减到最低程度。
(3)H树法:H树是一种非常规整的分配网络,它的时钟延迟是可以预测的。H树是一种递归结构,第一级1个H树,第二级4个小H树;H树的线宽可以根据负载电容的大小进行计算,以平衡整个H树的时钟歪斜。H树中可以增加缓冲器,以增加驱动能力;延迟与分支的长度有关,所以存储单元要成组接在H树上位置距离相同的地方。
(4)平衡树是一种由布局布线工具产生的树,存储单元成组的接在平衡树上。成组的用来引导布局,而平衡树可以根据存储单元组的相对延迟来生成。平衡树是一种形状不规则的树,但是可以平衡各个组的时钟歪斜。平衡树同样可以增加缓冲器,以增加驱动能力,平衡树的线宽同样可以根据负载电容的大小进行计算,以平衡整个树的时钟歪斜。