FPGA(二)时钟
7系列FPGA时钟,官方文档参考UG472。
2.1 总体架构

首先垂直时钟中心线(图中标注为Clocking Center,也即Clock Backbone)将器件分为左右两部分;水平时钟中心线(图中标注为Horizontal Center)将器件分为上下两部分。
整个器件被划分为多个Clock Region(时钟区域),如上图阴影部分。
Clock Backbone是全局时钟主干道,为全局时钟布线,包含32个BUFG。
HROW(Horizontal Clock Row)是水平时钟线,将每个时钟区域分成上下两部分。
CMT Backbone可以用于相邻时钟区域的布线,节省全局时钟网络。
此外还有CMT Column(后面会详细讲)、I/O Column(外部时钟输入)、GT Column(内含高速串行收发器)。
2.2 时钟区域

- BUFG(全局时钟缓冲器):通过HROW进入每个时钟区域,可以驱动时钟区域的所有资源。
- BUFH(水平时钟缓冲器):与BUFG共享HROW,也可以驱动时钟区域的所有资源。
- BUFIO(IO时钟缓冲器):在IO Bank内,只能驱动IO资源。
- BUFR(区域时钟缓冲器):在IO Bank内,可以驱动IO和逻辑资源。
- BUFMR(多区域时钟缓冲器):可以通过CMT Backbone驱动上下相邻两个区域的BUFIO和BUFR。
- CC(Clock-Capable):外部时钟输入管脚,其管脚在内部可以连接到BUFG、BUFR、BUFIO、BUFH、MMCM、PLL等。
可以结合vivado中的device视图来理解,标有X0Y0字样的大框就是时钟区域。时钟区域的每一列可以包含50个CLB、10个36K的BRAM或20个DSP,黄色的是CMT,以及最外侧的IO bank。
更细致的连接和驱动关系参考下面这张图,UG472有表格总结。

2.3 CMT
CMT(Clock Management Tiles)包含1个MMCM(Mixed-Mode Clock Manager)和1个PLL(Phase-Locked Loop)。功能为:频率综合(将外部输入的固定频率时钟调理成多路可调节频率的时钟)、去抖动、去偏斜。
抖动(Jitter):由于晶振本身稳定性、电源以及温度变化等原因造成了时钟频率的变化。
偏斜(Skew):同样的时钟产生的多个子时钟信号之间的延时差异,通常是时钟相位上的不确定。
与外部连接如下:

内部结构如下:
MMCM
从2个时钟输入中任选1路,经过PFD(Phase-Frequency Detector)、CP(Charge Pump)、LF(Loop Filter)后产生一定幅度的电压输入到VCO(Vector-Controlled Oscillator),VCO产生频率与输入电压幅度成比例的高频时钟,再被除以M倍并反馈到PFD。

- PLL

总结:PLL是MMCM功能的子集,它们均可实现时钟整数倍的频率综合、去抖、去偏斜,但MMCM还可以实现分数倍的频率综合、反相时钟输出以及动态的时钟相位调整。
2.4 IP核使用
参考下面两张图。一般保持默认即可,注意复位是高有效还是低有效。


