本篇主要讨论Xilinx FPGA中时钟资源:DCM、PLL、MMCM和CMT相关介绍
最常见的完整集合是:DCM, PLL, MMCM,而它们通常被封装在更大的模块中,称为 CMT。
DCM:数字时钟管理器 - 最早期、基础的模块
PLL:锁相环 - 模拟/混合信号模块,比DCM更先进
MMCM:混合模式时钟管理器 - PLL的增强版,功能最全面
CMT:时钟管理通道 - 一个包含MMCM/PLL和辅助资源的物理位置
DCM - 数字时钟管理器
DCM是Xilinx较早一代的时钟管理模块,主要出现在Virtex-4, Spartan-6等老一代器件中。
核心原理:基于数字延迟锁相环。它通过一个可调的数字延迟线来对齐时钟相位,消除时钟偏移。
主要功能: 时钟去偏移:消除FPGA内部全局时钟网络带来的延迟,使时钟边沿与外部输入时钟精确对齐。这是其最核心的功能。 频率综合:可以产生输入时钟的倍频或分频时钟,但灵活性和范围远不如PLL/MMCM。 相位调整:可以产生固定相位偏移(如0°, 90°, 180°, 270°)的时钟。 动态重配置:可以在运行时有限地调整相位和频率。
特点:纯数字实现,抗噪声能力相对较弱,频率综合能力有限,抖动性能一般。在现代设计中已逐渐被淘汰。
PLL - 锁相环 & MMCM - 混合模式时钟管理器
从Virtex-5、7系列及以后的器件开始,更先进的PLL和MMCM成为了绝对主流。可以把MMCM看作是PLL的超集或增强版。
PLL - 锁相环
核心原理:基于模拟/混合信号电路。它使用电压控制振荡器、电荷泵等模拟组件来生成时钟。
主要功能: 频率综合:强大的倍频、分频能力,可以产生范围更广、更精确的输出频率。 抖动滤波:模拟环路本身具有低通滤波特性,能有效过滤输入时钟上的抖动(jitter),提供更干净、更稳定的输出时钟。 时钟 deskew:类似DCM,但性能更好。
特点:混合信号实现,抖动性能优于DCM,频率综合能力强于DCM。
MMCM - 混合模式时钟管理器
MMCM是在PLL基础上发展而来的,是当前Xilinx(AMD)FPGA中最强大、最常用的时钟管理模块。
核心原理:同样基于模拟PLL,但增加了数字功能和更精细的分频器。
相比PLL的增强功能: 更精细的相位调整:MMCM具有相位偏移微调功能,可以以极小的步进(如1/56 of the VCO period)动态、精确地调整输出时钟的相位。这对于源同步接口(如DDR)的时序对齐至关重要。 更灵活的占空比调整:可以精确控制输出时钟的占空比(高电平时间与周期的比例)。 更宽的输出频率范围:通常支持更宽泛的输入和输出频率。
特点:功能最全面的时钟管理单元。几乎所有7系列及更新器件的设计中,首选和使用的都是MMCM。除非资源用尽,否则不会选择功能较弱的PLL或DCM。
简单对比:PLL vs MMCM
MMCM ≈ PLL + 精细相位调整 + 占空比控制
在Ultrascale+等最新器件中,官方文档通常只提MMCM,因为它已经完全包含了PLL的功能。
CMT - 时钟管理通道
CMT不是指一个具体的功能模块,而是一个物理资源块。
在FPGA的芯片布局中,时钟资源不是随意散布的。制造商将相关的时钟管理单元(如MMCM/PLL)和时钟缓冲器(BUFG, BUFH, BUFR等)打包在一起,放在芯片的特定垂直列上。这个“包”就叫做一个CMT。
以7系列FPGA为例,一个CMT包含: 1个MMCM 2个PLL
CMT的布局决定了FPGA内部时钟资源的分布。当你使用一个MMCM时,它所在CMT内的PLL资源就无法再使用了(因为它们共享一些输入路径)。理解CMT有助于在大型设计中规划时钟资源,避免时钟布线拥塞。
总结与对比
设计中的选用建议
现代设计(7系列及以后):无条件首选MMCM。它提供了最强大的功能和最好的性能,能满足几乎所有时钟需求,包括高速串行通信、内存接口等对时序要求极其苛刻的场景。
资源受限时:如果一个设计需要很多时钟管理单元,MMCM用尽后,可以考虑使用同一个CMT内的PLL来完成一些性能要求不高的辅助时钟生成任务。
维护老项目:你只会在维护基于Spartan-6等老器件的项目时才会接触到DCM。在新设计中不应再使用。
总而言之,MMCM 是现代FPGA设计中功能最强大的时钟管理核心,而 CMT 是包含这些核心的物理家园。PLL是MMCM的功能子集,DCM则是已被淘汰的前代技术。