一、时钟概述
1、时钟
时钟,即clock信号,是由晶体经过激发产生的振荡电路。模拟端通过各种技术(PLL,DPLL)产生规律、周期性变化的信号给数字端,数字端使用该信号的边沿进行过赋值(procedural assignment)操作。
2、时钟结构概述
7系列FPGA时钟资源通过专门的全局和区域I/O和时钟资源来管理复杂和简单的时钟需求。时钟管理块(CMT)提供时钟频率合成、去倾斜和抖动滤波功能。在设计时钟功能时,不建议使用非时钟资源。
(1)全局时钟树允许同步模块时钟跨越整个FPGA器件。
(2)I/O时钟和区域时钟树允许最多为三个垂直相邻的时钟区域提供时钟。
(3)每个CMT包含一个混合模式时钟管理器(MMCM)和一个锁相环(PLL),位于I/O列旁边的CMT列中。
为了提供时钟,每个7系列器件被划分为时钟域。
(1)时钟域的数量随器件大小而变化,从最小器件的1个时钟域到最大器件中的24个时钟域。
(2)一个时钟域包括50个CLB和一个I/O bank(50个I/O)的区域中的所有同步模块(例如:CLB、I/O、串行收发器、DSP、块RAM、CMT),在它的中心有一个水平时钟行(HROW)。
(3)每个时钟区域从HROW向上和向下跨越25个CLB,并水平跨越器件的每一侧。
3、时钟布线资源概述
每个I/O bank包含支持时钟的输入引脚,可以将用户时钟带到7系列FPGA时钟布线资源上。与专用时钟缓冲器一起,时钟输入管脚将用户时钟引入到:
(1)在同一设备上/下部分的全局时钟线
(2)相同I/O Bank和垂直相邻的I/O Bank的I/O时钟线
(3)相同时钟区域和垂直相邻的时钟区域的区域时钟线
(4)同一时钟区域内的和有限制的情况下的垂直相邻的时钟区域的CMT
其实就是说I/O bank具有输入引脚,支持把用户的时钟引到全局时钟线,I/O时钟线,区域时钟线,CMT上。
3.1 全局时钟缓冲器
每个7系列器件有32条全局时钟线,可以对整个器件中的所有时序资源进行时钟控制并提供控制信号。全局时钟缓冲器(BUFGCTRL,在本用户指南中被简化为BUFG)驱动全局时钟线,而且必须用于访问全局时钟线。每个时钟区域可以使用时钟区域中的12条水平时钟线来支持多达12条这样的全局时钟线。
全局时钟缓冲器(BUFG):
(1)可用作一个时钟使能电路,以使能或禁用跨越多个时钟区域的时钟
(2)可用作glitch-free multiplexer:
在两个时钟源之间选择
从故障时钟源切换
(3)通常由CMT驱动,用于:
调整相对于另一个时钟的时钟延迟
消除时钟分布延迟
3.2 水平时钟缓冲器
水平时钟缓冲器(BUFH/BUFHCE)允许通过水平时钟行访问单个时钟域中的全局时钟线。它也可以作为时钟使能电路(BUFHCE)独立地使能或禁用单个时钟域的时钟。使用每个时钟域中的12条水平时钟线可以支持多达12个时钟。
3.3 区域时钟数和I/O时钟树
每个7系列FPGA都有区域时钟树和I/O时钟树,它们可以为一个时钟区域内所有时序资源提供时钟。每个器件还具有多时钟域缓冲器(BUFMR),允许区域和I/O时钟跨越最多三个垂直相邻的时钟区域。
(1)I/O时钟缓冲器(BUFIO)驱动I/O时钟树,提供对同一I/O bank中所有时序I/O资源的访问。
(2)区域时钟缓冲器(BUFR)驱动区域时钟树,该树驱动同一时钟区域中的所有时钟目的地,并可编程输入时钟频率。
(3)紧邻IOB中的可编程序列化/反序列化器(请参阅UG471 7系列FPGA SelectIO Resources用户指南中的Advanced SelectIO Logic Resources一章),BUFIO和BUFR时钟缓冲区允许源同步系统跨时钟域,而无需使用额外的逻辑资源。
(4)当与相关的BUFR或BUFIO一起使用时,可以使用多时钟区域缓冲器(BUFMR)驱动相邻时钟区域和I/O时钟树。
(5)在一个时钟区域或I/O bank中最多可支持四个唯一的I/O时钟和四个唯一的区域时钟。
高性能时钟路由将CMT的某些输出以非常低的抖动、最小的占空比失真的连接到I/O上。
二、CMT概述(CMT:时钟管理模块)
每个7系类FPGA包含有高达24个CMT资源,每个CMT有一个MMCM和一个PLL组成。MMCMs和PLL用作频率合成器,用于非常宽的频率范围,用作外部或内部时钟的抖动滤波器,以及低偏移时钟。PLL包含MMCM功能的一个子集。7系列FPGA时钟输入连接允许多个资源向MMCM和PLL提供参考时钟。
7系列FPGA MMCMs具有任意方向的无限精细相移能力,可用于动态相移模式。MMCMs在反馈路径或一个输出路径中也有一个小数计数器,使得频率合成能力能够进一步细化。
LogiCORE™ IP时钟向导可用于帮助利用MMCMs和PLL在7系列FPGA设计中创建时钟网络。图形用户界面用于采集时钟网络参数。计时向导选择适当的CMT资源,并以最佳方式配置CMT资源。
三、时钟缓冲,管理,布线
图1是7系列FPGA时钟结构的高级视图。垂直的时钟中心线(时钟主干道)(图中①)把器件划分成相邻的两个左右两个区域,水平的时钟中心线(图中②)把器件分成顶部和底部两侧。时钟主干中的资源被镜像到水平相邻区域的两侧,从而将某些时钟资源扩展到水平相邻区域。顶部和底部(③)分隔两组全局时钟缓冲器(BUFGs),并对它们的连接方式施加了一些限制。但是,BUFGs不属于时钟区域,可以到达器件上的任何时钟点。所有水平时钟资源都包含在时钟区域水平时钟行(HROW)(④)的中心,而垂直的、非区域的时钟资源包含在时钟主干或CMT主干中(图中⑤)。
一个时钟域总是包含每列50个CLB,10块36Kb的BRAM(除非其中的5个BRAM被PCI-E取代),20个DSP Slice和12个BUFH。一个时钟域包含一个CMT(PLL/ MMCM),一个50个 I/O的 bank,一个由四个串行收发器组成的GT Quad,以及一个块RAM列中的PCIe半列。
图二是一个时钟域内可用时钟资源及其基本连接的高层次概述。全局时钟缓冲区可以通过HROW驱动到每个区域,即使其物理空间上不属于那里。水平时钟缓冲区(BUFH)通过HROW驱动到该区域内的每个时钟点。BUFG和BUFH在HROW中共享布线通道。I/O缓冲区(BUFIO)和区域时钟缓冲区(BUFR)位于I/O存储组内。BUFIO只驱动I/O时钟资源,而BUFR则驱动I/O资源和逻辑资源。BUFMR支持BUFIOs和BUFR的多区域链接。支持时钟的输入将外部时钟连接到设备上的时钟资源。某些资源可以通过CMT主干连接到上面和下面的区域。
图3显示了设备右侧单个时钟区域的更详细视图:
图4显示了更详细的全局BUFG和区域BUFH/CMT/CC引脚连接以及一个区域内可用资源的数量(此处显示右侧区域)。
4个时钟输入引脚中的任何一个都可以驱动CMT中的的PLL/MMCM和BUFH。BUFG显示在该区域中,但在物理空间上可以位于时钟主干道中的其他物理位置。BUFG和BUFH共享HROW中的12个布线轨道,可以驱动该区域内的所有时钟点。BUFG也可以驱动BUFH(图1-4中没有显示)。这允许在其他全局时钟分布上单独启用时钟(CE)。一个GT Quad有10条专用路径来驱动CMT和时钟主干道中的时钟缓冲器。位于I/O bank中的BUFRs有四个走线驱动逻辑、CMT和BUFG中的时钟点。CMT可以使用CMT主干网驱动相邻区域中的其他CMT,但有局限性。类似地,时钟输入管脚可以在相同的限制下驱动相邻区域的CMT。具有支持时钟的引脚可以驱动BUFG在设备相同的顶部/底部的任何位置。在CMT主干道中有四个通道支持垂直区域之间的连接。来自一个区域的时钟源可以驱动其自身区域内的时钟缓冲区资源,也可以驱动水平相邻区域内的时钟缓冲区资源。CMT、支持时钟引脚和串行收发器可以通过BUFH将时钟驱动到水平相邻区域.也可以连接到设备相同的顶部/底部的BUFG。
逻辑互连驱动BUFG和BUFH的CE引脚。逻辑互连也可以将时钟驱动到相同的缓冲区,但必须小心,因为时间是不可预测的。
图5显示了BUFR/BUFMR/BUFIO时钟区域详细信息:
每个/O BANK包含4个BUFIO和4个BUFR。每个时钟缓冲器可以被一个特定的具有支持时钟管脚对的输入时钟驱动,也可以由MMCM的特定输出时钟直接驱动。两个支持时钟的输入管脚对,称为MRCCs,支持多区域时钟方案。一个MRCC管脚对可以驱动一个特定的BUFMR,而该BUFMR又可以驱动相同和相邻区域中的BUFIOs和BUFRs,从而促进多区域/bank接口。GT Quad也可以驱动BUFMRs。MMCM <3:0>的输出到BUFR和BUFIO有专用的高性能差分路径。这个特性也被称为高性能时钟(HPC)。
四、总结
Xilinx FPGA时钟包括全局时钟资源、区域时钟资源和I/O时钟资源。
全局时钟:全局时钟是为所有时钟输入设计的专用互连网络,可以覆盖FPGA中的各种资源。通过使用专用时钟缓冲(BUFG)和驱动结构,确保了整个芯片的任意一个触发器的电延时是等长的,并且全局时钟网络可提供低延时和低抖动的时钟,可应用于时钟、快速信号和高扇出信号的布线。全局时钟资源是一种精心设计的布线资源,路线很长且扇出系数很大,一般使用全铜层工艺实现。全局时钟设计采用了专用时钟缓冲与驱动结构,使得全局时钟到达芯片内部所有资源(包括CLB、I/O单元、Block RAM和DSP核等)的时延和抖动都最小。全局时钟网络到FPGA内部的各种资源的采样时钟同时到达,使得信号的时序计算和分析较容易,不会产生不稳定的情况。通常来说,从 FPGA 的任意 IO 引脚输入的普通信号都会先经过一个普通的IO 输入缓冲,当从 FPGA 的专用时钟 IO 引脚输入的时钟信号不仅会经过一个普通的 IO 输入缓冲,紧接着还会经过一个全局低歪斜缓冲资源(全局缓冲),它用于增加时钟的驱动能力,降低时钟歪斜,但是同时会引入10ns 的延时,这对于IO 的时序约束是及其不利的,所以经过全局缓冲后的时钟即使不需要进行分频/倍频/相移等功能时,也要经过一个 PLL。因为 PLL 的普通反馈模式就可以补偿由输入 IO 缓冲和全局缓冲带来的延时,从而降低时钟从专用时钟 IO 引脚到达目的寄存器的延时。这种经过全局缓冲的时钟也不需要额外的时序约束。 需要强调的是,如果外部时钟进入 FPGA 之后没有经过全局缓冲,那么极有可能会导致时钟歪斜过大,从而导致保持时间违例。
区域时钟:区域时钟是驱动时钟区域内所有资源的时钟网络,对于该时钟区域内部的资源,区域时钟具有更好的时钟性能,尤其是在基于源同步接口设计中使用区域时钟网络更加有效。
I/O时钟:I/O时钟是在Virtex-5系列后的FPGA中定义的时钟资源,其高速性能主要用于局部化的I/O串行器/解串器的电路设计,并且可以应用于时钟网络的源同步设计。