在 Xilinx 的 FPGA 中,时钟管理器称为 Clock Management ,简称 CMT 。常用到的 DCM / PLL / MMCM 都包含在 CMT 中。
PLL 就是锁相环,具有时钟倍频、分频,调节相位等都是可以用 PLL ,而且 PLL 是一个模拟电路,它产生的频率比 DCM 更加准确,jitter 也更好,但 PLL 无法动态调整相位。
1. 鉴频鉴相器
2. 电荷泵
3. 环路滤波器
4. 压控振荡器
PLL 在芯片上的位置
DLL 主要由一个延时线和控制逻辑组成。延时线对时钟输入端 CLKIN 产生一个延时,时钟分布网线将该时钟分配到器件内的各个寄存器和时钟反馈端 CLKFB ;控制逻辑在反馈时钟到达时采样输入时钟以调整二者之间的偏差,实现输入和输出的零延时。
具体工作原理是:控制逻辑在比较输入时钟和反馈时钟的偏差后,调整延时线参数,在输入时钟后不停地插入延时,直到输入时钟和反馈时钟的上升沿同步,锁定环路进入“锁定”状态,只要输入时钟不发生变化,输入时钟和反馈时钟就保持同步。DLL 可以被用来实现一些电路以完善和简化系统级设计,如提供零传播延迟,低时钟相位差和高级时钟区域控制等。
DLL 与 PLL 的主要不同在于 DLL 用延时线代替了 PLL 的压控振荡器,延时线产生输入时钟的延时输出。时钟分布网络把时钟送到内部寄存器的时钟端口,控制逻辑对输入时钟和反馈时钟进行抽样、比较,调整延时线。两者的实现方式如下图所示。
DCM 是比较早的 FPGA 中使用的,某些 Sparten-3 和 Virtex-4 ,后面的器件不再使用了。在 Virtex-4 中,CMT 包括一个P LL 和两个 DCM 。DCM 的核心是 DLL ,即延迟 Locked Loop ,它是一个数字模块,可以产生不同相位的时钟,分频,倍频,相位动态调整等,但精度有限。
DCM 在芯片上的位置
MMCM 是混合模式时钟管理器,它的官方解释是:这是一个 PLL ,上面加上了 DCM 的一小部分以进行精细的相移(这就是它的混合模式的原因 PLL 是模拟的,但是相移是数字的) 。它是在 PLL 的基础上加上了相位动态调整功能,因为 PLL 是模块电路,而动态调相是数字电路,所以叫混合模式。
MMCM相对PLL的优势就是相位可动态调整,但 PLL 占用的面积更小。
MMCM 在芯片上的位置
https://www.xilinx.com/support/documentation/ip_documentation/pll_module.pdf
https://www.xilinx.com/support/documentation/user_guides/ug572-ultrascale-clocking.pdf
https://www.xilinx.com/support/documentation/user_guides/ug472_7Series_Clocking.pdf
https://www.xilinx.com/support/documentation/application_notes/xapp462.pdf
www.xilinx.com/support/documentation/ip_documentation/mmcm_module.pdf