FPGA中的时钟网络资源

时钟信号是时序逻辑的灵魂,也是整个FPGA设计的核心。在某些情况下,它几乎要作用于整个FPGA芯片上的所有寄存器和相关存储单元,而FPGA内部布线资源的时间不可确定性,会使得时钟信号到达各个寄存器的延迟时间有很大出入,因此极易造成时序问题,从而导致系统行为不符合预期。为了避免这种情况,使大规模、高性能、高速度的FPGA设计成为可能,各大厂商都在自己的FPGA芯片中引入了专门的时钟网络资源用于时钟信号的载体。按照应用的区域范围的不同,时钟网络资源一般被分为三大类:

全局时钟网络资源

全局时钟网络资源作用的范围覆盖整个FPGA芯片,它能保证其上所承载的时钟信号到达FPGA芯片上任意两个地方的延迟时间偏差最小。从而能够保证大型的FPGA设计能够被高速的时钟信号所正确驱动。一般来说,全局时钟网络资源是比较珍贵的,一些小型的FPGA中可能仅有几个全局时钟网络,因此在使用的时候一定要节省。

区域时钟网络资源

当FPGA芯片的集成度越来越高,规模大一点的FPGA又被划分为多个区域(一般来说,一个FPGA区域只包含一个IO bank)。与全局时钟网络不同,每一个FPGA区域都有若干个属于自己的区域时钟网络,它所能覆盖的范围是整个区域甚至还包括与本区域相邻的区域。区域时钟网络能保证其上所承载的时钟信号到达FPGA芯片上该时钟网络作用域中任意两个地方的时间偏差最小。这种区域时钟网络资源对于源同步的接口逻辑十分有效。

IO时钟网路资源

前面所述的两种时钟网络资源针对的主要都是FPGA内部的一些资源,例如逻辑资源块、BLOCK RAM、DSP等,而对于接口资源,则有专门的IO时钟网路资源来完成时钟信号承载工作。这主要有三点原因:首先,接口资源中的寄存器数量较少,不需要大型的树状时钟网络来减少时钟到达各个目的地之间的延迟时间差。其次,内部的时钟网络资源由于作用的范围广,所以网络较庞大,一般上面都不能承载频率太高的时钟信号,而一些通信接口的时钟速率很高,远远超出了全局或区域时钟网络的承受范围,因此需要使用专有的IO时钟网络资源。第三,高速的接口逻辑一般都使用专有的接口资源,它的布局布线已经固定,能够力保外部信号到达寄存器的延迟最短,为了配合达到高速度的信号传输,也必须要求我们的时钟信号所走的路径最短,但全局或区域时钟网络的特点是保证时钟到达各个地方的延迟差最小,而不是延迟最短,因此并不适用高速接口的数据情况,那么这种情况下只有使用专有的IO时钟网络资源。