引言:
从本文开始,我们陆续介绍Xilinx 7系列FPGA的时钟资源架构,熟练掌握时钟资源对于FPGA硬件设计工程师及软件设计工程师都非常重要。本章概述7系列FPGA时钟,比较了7系列FPGA时钟和前几代FPGA差异,总结7系列FPGA中的时钟连接。有关7系列FPGA时钟资源使用的详细信息,请关注后续文章。
时钟资源架构概述
7系列FPGA与前一代FPGA时钟资源差异
- 时钟资源连接概述
1.时钟资源架构概述
1.1 时钟资源概述
7系列FPGA时钟资源通过专用的全局和区域I/O和时钟资源管理符合复杂和简单的时钟要求。时钟管理块(CMT)提供时钟频率合成、减少偏移和抖动过滤等功能。非时钟资源,如本地布线,不推荐用于时钟功能。
- 全局时钟树允许同步模块时钟跨越整个FPGA器件。I/O时钟和区域时钟树允许最多为三个垂直相邻的时钟区域提供时钟。每个CMT包含一个混合模式时钟管理器(MMCM)和一个锁相环(PLL),位于I/O列旁边的CMT列中。
为了提供时钟,每个7系列器件被划分为时钟区域。
- 时钟区域的数量随器件大小而变化,从最小器件的一个时钟区域到最大器件中的24个时钟区域。时钟区域包括50个CLB和一个I/O bank(50个I/O)的区域中的所有同步模块(例如:CLB、I/O、串行收发器、DSP、块RAM、CMT),其中心有一个水平时钟行(HROW)。
每个时钟区域从HROW向上和向下跨越25个CLB,并水平跨越器件的每一侧。
1.2 时钟布线资源概述
每个I/O bank包含支持时钟的输入引脚,将用户时钟带到7系列FPGA时钟路由资源上。与专用时钟缓冲器一起,时钟输入管脚将用户时钟引入到:
- 器件相同上/下半部分的全局时钟线相同I/O Bank和垂直相邻的I/O Bank的时钟线相同时钟区域和垂直相邻的时钟区域的区域时钟线同一时钟区域内的CMT和有限制的情况下的垂直相邻的时钟区域
每个7系列器件有32条全局时钟线,可以对整个器件中的所有时序资源进行时钟控制和提供控制信号。全局时钟缓冲器(BUFGCTRL,在本用户指南中被简化为BUFG)驱动全局时钟线,用于访问全局时钟线。每个时钟区域可以使用时钟区域中的12条水平时钟线来支持多达12条全局时钟线。
全局时钟缓冲器:
- 可用作时钟使能电路,以使能或禁用跨越多个时钟区域的时钟
可用作glitch-free multiplexer:
在两个时钟源之间选择
通常由CMT驱动,用于:
消除时钟分布延迟
- 从故障时钟源切换
- 调整相对于另一个时钟的时钟延迟
水平时钟缓冲器(BUFH/BUFHCE)允许通过水平时钟行访问单个时钟区域中的全局时钟线。它也可以作为时钟使能电路(BUFHCE)独立地使能或禁用跨越单个时钟区域的时钟。使用每个时钟区域中的12条水平时钟线可以支持多达12个时钟。每个7系列FPGA都有区域时钟树和I/O时钟树,可以为一个时钟区域内对所有时序资源提供时钟。每个器件还具有多时钟区域缓冲器(BUFMR),允许区域和I/O时钟跨越最多三个垂直相邻的时钟区域。
- I/O时钟缓冲器(BUFIO)驱动I/O时钟树,提供对同一I/O bank中所有时序I/O资源的访问。区域时钟缓冲器(BUFR)驱动区域时钟树,该树驱动同一时钟区域中的所有时钟目的地,并可编程输入时钟频率。紧邻IOB中的可编程串行器/解串器器(请参阅UG471 7系列FPGA SelectIO Resources用户指南中的高级选择逻辑资源一章),BUFIO和BUFR时钟缓冲区允许源同步系统跨时钟域,而无需使用额外的逻辑资源。当与相关的BUFR或BUFIO一起使用时,可以使用多时钟区域缓冲器(BUFMR)驱动相邻时钟区域和I/O时钟树。在一个时钟区域或I/O bank中最多可支持四个唯一的I/O时钟和四个唯一的区域时钟。
高性能时钟路由将CMT的某些输出以非常低的抖动、最小的占空比失真的连接到I/O上。
1.3 CMT 概述
每个7系列FPGA最多有24个CMTs,每个CMT由一个MMCM和一个PLL组成。MMCMs和PLL用作频率合成器,用于非常宽的频率范围,用作外部或内部时钟的抖动滤波器,以及低偏移时钟。
PLL包含MMCM功能的一个子集。7系列FPGA时钟输入连接允许多个资源向MMCM和PLL提供参考时钟。
7系列FPGA MMCMs具有任意方向的无限精细相移能力,可用于动态相移模式。MMCMs在反馈路径或一个输出路径中也有一个小数计数器,使得频率合成能力能够进一步细化。
LogiCORE™ IP时钟向导可用于帮助利用MMCMs和PLL在7系列FPGA设计中创建时钟网络。图形用户界面用于采集时钟网络参数。计时向导选择适当的CMT资源,并以最佳方式配置CMT资源和关联的时钟路由资源。
1.1.3 时钟缓冲、管理和布线
图1是7系列FPGA时钟结构的高级视图。垂直时钟中心线(①时钟主干线)将器件划分为相邻的左右区域,而水平中心线(②)将器件划分为顶部和底部侧面。时钟主干中的资源被镜像到水平相邻区域的两侧,从而将某些时钟资源扩展到水平相邻区域。顶部和底部(③)分隔两组全局时钟缓冲器(BUFGs),并对它们的连接方式施加了一些限制。但是,BUFGs不属于时钟区域,可以到达器件上的任何时钟点。所有水平时钟资源包含在时钟区域水平时钟行(HROW)(④)的中心,而垂直的、非区域的时钟资源包含在时钟主干或CMT主干中。
图1、7系列FPGA高级时钟结构视图图2是一个时钟区域内可用时钟资源及其基本连接的高层次概述。
图2、时钟区域的基本视图在图中,我们可以看到:
- 全局时钟缓冲器(①)可以通过HROW进入每个区域,即使物理空间上不在该区域。
水平时钟缓冲器(②BUFH)通过HROW驱动该区域的每个时钟点。
BUFGs和BUFHs在HROW中共享路由路径(③)。I/O缓冲器(BUFIO)和区域时钟缓冲器(BUFR)位于I/O bank内部(④)。BUFIO只驱动I/O时钟资源,而BUFR驱动I/O资源和逻辑资源。BUFMR支持BUFIOs和BUFRs的多区域链接。时钟输入(芯片*CC管脚⑤)将外部时钟连接到器件上的时钟资源。某些资源可以通过CMT主干时钟网络(⑥)连接到顶部和底部的区域。
图3显示了器件右边缘单个时钟区域中时钟的更详细视图。在该图中,我们可以看到外部时钟输入管脚SRCC和MRCC进入I/O Bank后可以驱动的时钟资源以及CMT资源与外部互联情况。
图3、单时钟区域(器件右侧)
图4显示了更详细的全局BUFG和区域BUFH/CMT/CC引脚连接以及一个区域内可用资源的数量(此处显示右侧区域)。
图4、BUFG/BUFH/CMT时钟区域细节在图4中,我们可以看到:
- SRCC和MRCC时钟的输入引脚中的任何一个都可以驱动CMT和BUFH中的PLL/MMCM。BUFG显示位于该区域中,但可以实际位于时钟主干的其他位置。BUFG和BUFH在HROW中共享12条路由,可以驱动该区域内的所有时钟点。BUFGs也可以驱动BUFHs(图4中未显示),允许在其他全局时钟分布上单独启用时钟(CE)。一个GT Quad有十个专用的通道来驱动CMT和时钟缓冲器。位于I/O bank中的BUFRs有四个走线驱动逻辑、CMT和BUFG中的时钟点。CMT可以使用CMT主干网驱动相邻区域中的其他CMT,但有局限性。类似地,时钟输入管脚可以在相同的限制下驱动相邻区域的CMT。时钟输入管脚在器件的同一顶部/底部的任何地方可以驱动BUFG。CMT主干网中有四条走线支持垂直区域之间的连接。
逻辑互连驱动BUFG和BUFH的CE引脚。逻辑互连也可以将时钟驱动到相同的缓冲区,但必须小心,因为时间是不可预测的。图5显示了BUFR/BUFMR/BUFIO时钟区域详细信息。
图5、BUFR/BUFMR/BUFIO时钟区域详细信息在图5中,我们可以了解到:
- 每个I/O bank包含四个BUFIO和四个BUFRs。这些时钟缓冲器中的每一个可以由专用的输入时钟管脚对(_CC管脚)驱动,或者可以直接由MMCM的特定输出时钟驱动。两个支持时钟的输入管脚对,称为MRCCs,支持多区域时钟方案。一个MRCC管脚对可以驱动一个特定的BUFMR,而该BUFMR又可以驱动相同和相邻区域中的BUFIOs和BUFRs,从而促进多区域/bank接口。GT Quad也可以驱动BUFMRs。MMCM<3:0>输出有一个专用的高性能差分路径到BUFRs和BUFIO。此功能也称为高性能时钟(HPC)。
图6、7K325T架构布局
尽管所有7系列器件都具有相同的基本架构,但系列和系列内器件之间存在一些架构差异。每7系列FPGA在器件的左边缘至少有一个完整的I/O列。GT可以是7系列FPGA支持的任何一个串行收发器(GTP、GTX,或GTH)。带有GTs的器件要么在器件的右边缘有一个GTs和I/O的混合列(一些Kintex-7器件和一些Artix-7器件),要么在器件的右边缘有一个完整的GT列(一些Kintex-7器件和一些Virtex-7器件)和一个完整的I/O列在器件的右侧。其他Virtex-7器件的左右边缘都有完整的GT列,左右两侧都有完整的I/O列侧面。Artix-7200t器件在时钟列的顶部和底部有GTP收发器。
2. 7系列FPGA时钟与6系列FPGA的区别
7系列FPGA时钟具有与Virtex-6 FPGA类似的结构,并支持许多相同的功能。但是,不同的时钟组件及其功能存在一些架构差异和修改。与Spartan-6 FPGA相比,它在结构和功能上都有一些显著的变化。一些Spartan-6 FPGA时钟原语不再可用,取而代之的是更强大、更简单的结构。
2.1 与Virtex-6 FPGA的不同
- 7系列FPGA基本BUFIO时钟功能没有改变,唯一的例外是BUFIO现在只跨越一个Bank。相邻Bank的直接时钟被一个新的时钟缓冲器所取代。现在每个Bank有四个BUFIO,另外,BUFR的基本目的没有改变。然而,现在BUFR只直接跨越一个时钟区域。现在每个区域有四个BUFRs和四个区域时钟(轨道)。7系列FPGA引入了一种新的缓冲类型:
BUFMR/BUFMRCE。BUFMR/BUFMRCEs驱动BUFIOs和/或BUFRs在同一垂直相邻位置区域。他们还提供相同的多时钟区域/多组时钟路由,可用于支持相同三个时钟区域/组的Virtex-6 FPGA能力.BUFMRCE具有可选择的同步或异步切换功能。7系列FPGA不再支持Virtex-6系列中的全局时钟(GC)输入引脚。每列4个时钟输入引脚/对替换GCs,支持时钟的输入引脚的连接性得到了增强,以支持以前的GC功能。
全局时钟多路复用器BUFGMUX添加了一个属性CLK_SEL_TYP,用于允许两个输入时钟的同步或异步时钟切换(以前仅通过忽略端口可用)。
BUFHCE有一个增强的时钟使能,允许输入时钟的同步或异步使能。
CMT现在包含一个MMCM和一个PLL(MMCM的一个子集),而不是两个MMCM,以及保留的专用内存接口逻辑。CMT列位于SelectIO旁边™ CMT中的列/列组,并具有对I/O的专用访问权限以获得高性能。全局时钟缓冲区仍然位于由驱动的I/O列之间的设备的垂直中心CMTs.直接不再支持CMT内的级联。直接级联到相邻的cmt是可能的,但是由于资源有限而受到限制。级联到相邻CMT之外的其他CMT会导致源和目标MMCMs/pll之间的相位偏移,并且需要特殊的属性设置。
分数除法器不再共享输出计数器。这将释放这些计数器用于其他用途。分数计数器增加了静态相移功能。时钟保持功能不再可用MMCMs支持扩频
2.2 与Spartan-6 FPGA的不同
- Spartan-6体系结构独有的一些Spartan-6 FPGA时钟电路拓扑、功能和块不受支持,已被7系列FPGA时钟功能所取代。7系列设备不直接支持DCM_SP,DCM_CLKGEN, BUFIO2, BUFIO2_2CLK, BUFIO2FB, BUFPLL, and BUFPLL_MCB等特性和功能。PLL是MMCM的一个子集,具有相同的性能(最小CLKIN/PFD和最小/最大VCO频率除外)、一些连接限制和一些降低的功能。与以前的Spartan®FPGA PLL相比,7系列FPGA PLL增加了掉电、输入时钟切换和级联到相邻CMT。PLL与BUFIO或BUFR没有直接连接。在7系列FPGA中,没有直接替代BUFIO2和BUFIO2 clk原句的方法。使用BUFIO和BUFR代替推荐的连接来驱动ILOGIC和Logic。Spartan-6 FPGA BUFIO2专用输入路由从GCLK到CMT和全局时钟缓冲器不再受支持。要迁移到7系列FPGA,请使用来自CCIO引脚的专用输入路由。在7系列FPGA中没有直接等效于Spartan-6 FPGA BUFPLL。要进行迁移,请使用BUFIO和BUFR以及ILOGIC和logic的推荐连接。MMCME2 CLKOUT[0:3]的高性能时钟路由取代了BUFPLL的专用路由。ISERDES和OSERDES电路基于Virtex-6体系结构。在7系列FPGA中,不再需要BUFIO2FB基元。对于MMCM和PLL反馈连接,CLKFBIN可以直接连接到全局时钟缓冲器、输入引脚或CLKFBOUT,具体取决于所使用的反馈。Spartan-6 FPGA仅支持BUFH。7系列FPGA BUFHCE原语添加了禁用时钟的功能,以在由该资源驱动的时钟区域中实现潜在的节能。7系列FPGA新的缓冲区BUFMR/BUFMRCE驱动相同和垂直相邻时钟区域中的BUFIO和/或BUFRs。当与BUFIO或BUFR一起使用时,BUFMR/BUFMRCE允许MRCC输入访问相邻时钟中的BUFIO和BUFR区域。BUFMRCE具有可选择的同步或异步切换功能。
Spartan-6 FPGA设计迁移的一个新原语是BUFR。当与BUFIO一起使用时,BUFRs功能将取代BUFIO2、BUFIO2 clk和BUFPLL功能。在每个时钟区域中有四个BUFR。
Spartan-6 FPGA设计迁移的另一个新原语是BUFIO。当与BUFR一起使用时,BUFIO功能将取代BUFIO2、BUFIO2 clk和BUFPLL功能。与Spartan-6体系结构中的两个DCM和一个PLL不同,7系列FPGA使用的CMT包含一个MMCM、一个PLL和专用内存接口逻辑,这些逻辑在此时保留给Xilinx使用。这些功能现在支持DCM及其相关功能。CMT位于与SelectIO列相邻的单独列中,具有对I/O的专用访问权限。DCM_SP和DCM_CLKGEN不再可用,它们的功能现在在MMCMs和PLL中受支持。
7系列FPGA不再支持全局时钟(GCLK)输入。现在,每一个支持Spartan-6 FPGA GCLK引脚功能的银行都有四个支持时钟的输入引脚。
对于Spartan-6 FPGA设计人员来说,MMCM是一个新的功能块。MMCM增加了分频、精细相移、动态相移、反向时钟输出、CLKOUT6到CLKOUT4级联以及其他一些功能。使用CLKOUT[0:3],MMCMs到BUFIO/BUFR的HPC连接取代了到BUFPLL的直接路由连接。还提供了更广泛的DRP。对于通用高速I/O时钟,使用PLL不再是推荐的CMT功能。PLL与BUFIO或BUFR没有直接连接。不再支持CLKOUT0反馈。将MMCM用于高速I/O接口。级联连接使用有限的CMT主干资源。还有一种新的断电模式。完全支持输入时钟切换。Spartan-6 FPGA和7系列FPGA的工作范围不同。DRP功能仍然可用。DRP功能位置和地址已更改。Spartan-6 FPGA DCM_SP不再受支持。要迁移到7系列FPGA,请使用MMCM和PLL.
Spartan-6 FPGA DCM_CLKGEN在7系列FPGA中不受直接支持。使用MMCM或PLL低带宽输入抖动滤波。还可以使用MMCM或PLL的DRP参考设计来完成M/D值的动态重新编程。
3.时钟连接概述
表1对7系列FPGA时钟连接进行了总结。
表1、7系列FPGA时钟连接总结