结合下面两个文章复习:
https://blog.csdn.net/weixin_46423500/article/details/127571939
https://blog.csdn.net/qq_41300075/article/details/126437987
一、Xilinx 7系列时钟架构
1、全局时钟架构
下面是以XC7K160TFFG676-2为例。打开vivado,点击open Implemented Design,查看device,我们能够直观的看见芯片被划分为几个时钟区域。

由UG472手册可知:

(1)全局时钟树允许在芯片上对所有的同步元件进行时钟控制。
(2)I/O 和区域时钟树允许对最多三个垂直相邻的时钟区域进行时钟控制。一个外部时钟到来后,如果走的是区域时钟(BUFMR),那么只有该区域的上下两个区域+它自己,只能给这三个区域提供时钟源。
(3)每个CMT 包含一个混合模式时钟管理器(MMCM) 和一个锁相环(PLL),位于I/O列旁边的CMT列中。
每个7系列FPGA芯片都被划分为几个时钟区域。
(1)时钟区域的数量随着芯片大小而变化,最低端的7系列芯片只有一个时钟区域,最高端的7系列芯片有24个时钟区域。
(2)时钟区域包括所有的同步元件(例如:CLB、I/O、串行收发器、DSP、块RAM、CMT等),**一个时钟区域有一个I/O bank(50个I/O),每一列有50个CLB,并在区域的中心有一条水平时钟线(HROW)(该时钟线位宽为12)。**一个I/O bank有2对SRCC,2对MRCC,21对普通差分线。
(3)每个时钟区域在HROW的上下各跨越25个CLB,并在设备的每一侧水平延伸。(也就是说时钟区域中心的一条水平时钟线将每一列CLB对半开了)

每个7系列FPGA芯片都有32条全局时钟线 ,可以为整个设备中的所有需要时钟的资源提供时钟和控制信号。全局时钟缓冲器 (BUFGCTRL,在本用户指南中简化为BUFG )驱动全局时钟线,必须使用BUFG来访问全局时钟线。每个时钟区域最多可以支持12条全局时钟线,使用时钟区域中的12条水平时钟线。即外部时钟源通过走BUFG到达时钟主干道,然后通过占用每个区域的水平时钟行(内部有12根线)到达各个区域的元件,进行提供时钟源。

时钟架构图
时钟主干道(Clock Backbone)和水平时钟行(Horizontal Clock Row),把整个芯片划分成各个时钟域,7系列产品有1-24个时钟区域不等,时钟主干道(Clock Backbone)垂直分布,将时钟资源左右镜像分配,水平时钟行(Horizontal Clock Row,HROW)将时钟区域内的资源垂直分配。每个时钟区域,包含12个BUFH,如下图:


2、区域时钟架构

一个时钟区域的有的一列是50个CLB、有的一列是10个36Kbit的块状RAM(除非有5个36Kbit的块状RAM被集成去用于 PCl Express)、有的一列是20个DSP。**一个时钟区域只有12个BUFH。**有些时钟区域还有一个CMT(1个MMCM + 1个PLL)、一个IO bank(50个IO,分别是2对SRCC、2对MRCC、21对普通IO,每对都是差分信号)、一个高速收发器组(由4个串行收发器组成,也就是一对收,一对发,每对都是差分信号)和以及位于块状RAM列中的半列是PCIe®资源。


以下BUF 可称为"驱动器或缓冲器 "
(1)全局时钟缓冲器(BUFG) :可通过时钟主干道(Clock Backbone)和水平时钟行(HROW)驱动时钟至各个时钟区域。
(2)水平时钟缓冲器(BUFH): 可通过水平时钟行(HROW)驱动时钟至各个时钟区域,能看出BUFG和BUFH共享了水平时钟行(HROW)。
(3)输入输出缓冲器(BUFIO):位于IO Bank内,只驱动IO 时钟。
(4)区域时钟缓冲器(BUFR): 位于IO Bank内,驱动IO 时钟和该区域的逻辑资源。
(5)多区域时钟缓冲器(BUFMR): 负责BUFIO和BUFR的驱动与互联分配,顾名思义也可驱动时钟连接至上下两个相邻的时钟区域。
由figure1-3可以看出,每个时钟区域包含SRCC和MRCC专用时钟引脚各两组,BUFMR时钟源必须是MRCC,而BUFIO和BUFR时钟源可以是MRCC和SRCC。
注意区分时钟区域和区域时钟并不是同一个东西。
一个外部时钟到来后,如果走的是区域时钟(BUFMR),那么只有该区域的上下两个时钟区域+它自己,只能给这三个区域提供时钟源。
一个外部时钟到来后,如果走的是区域时钟(BUFR),那么只能给这1个区域提供时钟源。

Figure1-4描述的BUFG、BUFH、CMT的互联细节,MRCC和SRCC引脚(统称为CC)不再区分,说明两者均可驱动BUFG、BUFH和CMT资源。
(1)红色时钟总线 :时钟输入经四个CC引脚连接到BUFG和BUFH的输入端,也可直接连接至本时钟区域的CMT(PLL和MMCM),驱动上下相邻的时钟区域CMT时,需经过CMT Backbone。
(2)黑色时钟总线 :在水平时钟行(HROW)内由BUFG和BUFH输出共享,可作为至PLL和MMCM的输入并驱动区域内所有的逻辑资源(包括高速收发器域,GT Quad),CMT输出也可以驱动BUFG和BUFH,本区域CMT输出驱动上下相邻的区域CMT时,需要经过CMT Backbone。(注意:从GT Quad输出的时钟不可直接连接到MMCM,需要经过BUFH或BUFG)
(3)黄色时钟总线 :由GT Quad输出可驱动BUFG、BUFH和CMT。
(4)绿色时钟总线 :表示BUFR输出时钟总线,BUFR位于IO Bank内,可驱动BUFG、BUFH、CMT和区域内逻辑资源。
另外,BUFG和BUFH包含CE选择使能功能,由逻辑部分控制BUFG和BUFH工作。

Figure1-5描述的是BUFR、BUFMR、BUFIO的互联细节。
每个IO Bank包含4个BUFR和4个BUFIO,两者时钟输入来源包括MMCM输出(CLKOUT0-3)、SRCC与MRCC、BUFMR(本域和上下邻域)输出。
BUFMR输入时钟源 可来自GT Quad或MRCC**(注意不可SRCC)** ,BUFMR输出连接至CMT Backbone提供至上下邻近时钟区域或供至本IO Bank的BUFR、BUFIO资源,这也是SRCC与MRCC路径的最大区别。
二、时钟布线资源-CC引脚

总结:
CC 引脚(Clock-Capable Inputs)是 FPGA 专用时钟输入引脚,外部输入时钟只能通过 CC 引脚接入,不能使用普通 IO引脚;因为普通 IO 不能将时钟信号送入 FPGA 内部全局时钟树。
每个 IO Bank 包含 50 个普通 IO,同时内置 4 组 CC 引脚:2 组 MRCC、2 组 SRCC,每组 CC 引脚包含 P、N 差分管脚,支持差分时钟输入或者单端时钟输入。
**当输入单端时钟时,必须从P引脚输入,该CC组引脚的N脚不能再作为另一个单端时钟输入,而是只能作为普通IO。**如果不用作时钟输入引脚,也可直接作为普通用户IO使用,用法与其他IO相同。
CC 引脚分为 MRCC(Multi-region clock-capable I/O)(多区域时钟输入引脚)与 SRCC(Single-region clock-capable I/O)(单区域时钟输入引脚)。二者核心差异在于可连接的时钟缓冲器不同: MRCC 能够连接 BUFMR 多区域时钟缓冲器,BUFMR 具备扩展能力,可将当前 Bank 的时钟传输至其他 Bank;而 SRCC 无法驱动 BUFMR,时钟信号仅能在本 Bank 相关时钟区域内使用。只有 CC 类专用引脚才能把片外时钟引入 FPGA 内部全局时钟资源,其余普通 IO 不具备该能力。

时钟功能或引脚



三、时钟资源
1、BUFGCTRL

2、BUFG

3、BUFGMUX

4、BUFR

5、BUFMR

6、BUFH

四、时钟管理模块CMT-Clock Management Tile
1、MMCM混合模式时钟管理器
7系列FPGA包括多个CMT,每个CMT由一个MMCM(混合时钟管理器)和一个PLL(锁相环)组成。MMCM除了包含PLL的频率合成功能外,MMCM还支持精密动态相移。
CMT概括功能:时钟频率产生分配,时钟相位锁定与调整,去抖动及偏斜。



2、PLL锁相环


配置IP核

推荐是以DRP接口,比较简单。

较为复杂,引脚很多,一般用于zyqn系列。
动态重配置:就是PLL在运行过程中,让其时钟发生改变。
动态重配置应用场景:
1、在不重启或重编程整个FPGA的情况下,实时地、按需地改变工作时钟。
2、通过不断修正PLL时钟的相位,直到时钟上升沿稳定采集数据,满足建立时间。