"); //-->
1.全局时钟树和全局时钟缓冲器
全局时钟网络是一个很长且扇出也很大的网络,所以一定不是最短的路径。它会有相对较大的延时,其优点在于Skew很小。即通过全局时钟网络到FPGA内部的各种资源时,时钟沿同时到达。这样对于一个同步的系统,时序的计算和分析会很容易。
FPGA的全局时钟路径需要专用时钟驱动器,如图1中的全局时钟缓冲器Global Clockbuffer(BUFG),时钟信号只有经过BUFG之后才可以驱动全局时钟网络。
BUFG的例化请参考Xilinx的ISE设计工具内包含的《器件库指南》。这里需要指出的是IBUFG和BUFG不同,IBUFG是全局时钟的引脚的缓冲器,是和其他普通管脚的IBUF对应的;而BUFG是内部的全局时钟的缓冲器。
2.数字时钟管理器(DCM)和模拟锁相环(PLL)
DOM和PLL都可以用来做频率合成和相位调整,目前在Xilinx高端的Virtex-5中才有PLL,DOM是一直都存在于Xilinx高低端的FPGA中的。
(1)DOM和PLL都有其工作的时钟频率的范围,应参考具体器件的手册决定是否可以采
用DOM和PLL。
(2)注意DOM的phase shift为所有的DOM的输出均增加一定的相位偏移。
(3)DOM及PLL的级联,无论采用何种级联方式,注意复位电路的设计,原则就是要在DOM或PLL的输入时钟稳定之后给出该DOM或PLL的复位脉冲。
3.片内时钟设计时需注意的几个方面
(1)所有的时钟尽量都要使用全局的时钟树资源,如果全局时钟资源不够,需要用到长线资源或本地走线资源的话,多留意时序报告中的clock skew,注意保持时间(hold time)问题。
(2)通常情况下尽量使用内部的DCM及PLL等来产生各种频率的时钟,避免使用内部逻辑生成的时钟,因为它们可能引起设计中的功能和时序问题。由组合逻辑产生的时钟会引入毛刺造成功能问题,而引入的延迟则会导致时序问题。如果用组合逻辑的输出作为时钟信号或异步复位信号,那么在设计中就会出现毛刺。在同步设计中,寄存器输入数据的毛刺是很正常的,对设计没有什么影响。然而时钟输入(或寄存器异步输入)上的毛刺或脉冲则会导致严重的后果,窄毛刺可能违反了寄存器的最小脉冲宽带要求。如果当毛刺到达时钟输入时寄存器的输入数据正在变化,则无法满足建立和保持时序要求。即使设计没有违反时序需求,寄存器输出也可能会出现变化,造成设计中其他部分的功能不正常。用于生成内部时钟的组合逻辑也会增加时钟线的延迟,在一些设计中时钟线上的逻辑延迟可能会造成时钟偏移大于两个寄存器之间的数据通道的长度,从而造成hold time违反的问题。
如果一定需要由内部逻辑来生成时钟信号的话,必须采用寄存器输出。同时为了减小时钟域上的时钟偏移,应把生成的时钟指定到FPGA一个高扇出和低Skew的时钟分配树上,即为该输出信号分配全局时钟缓冲器(BUFG)或第2全局时钟资源来实现。
(3)在逻辑设计时经常将主时钟分频,以产生所需的各种频率的时钟信号。对这种需求,建议一定要采用DOM或PLL,以保证时钟信号的稳定。如果采用逻辑来实现分频器,则一定要采用同步寄存器来实现。
(4)在FPGA设计中选择时钟信号时,如果器件中存在BUFGMUX缓冲器,一定采用BUFGMUX来实现,这样可以避免产生时钟信号的毛刺;对于没有BUFGMUX的器件,需要采用同步和复位控制电路来实现,避免毛刺产生。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。