DCM / DLL / PLL / MMCM区别

对于FPGA工程师来说,DCM / DLL / MMCM / PLL这些词简直每天都能看到,但很多人并不是很清楚它们之间的差异。

在Xilinx的FPGA中,时钟管理器称为Clock Management,简称CMT。我们所用到的DCM / PLL / MMCM都包含在CMT中。

DCM是比较早的FPGA中使用的,某些Sparten-3和Virtex-4,后面的器件不再使用了。在Virtex-4中,CMT包括一个PLL和两个DCM。DCM的核心是DLL,即延迟Locked Loop,它是一个数字模块,可以产生不同相位的时钟,分频,倍频,相位动态调整等,但精度有限。

PLL就是锁相环,这个大家应该都熟悉,时钟倍频,分频,调节相位等都是可以用PLL,而且PLL是一个模拟电路,它产生的频率比DCM更加准备,jitter也更好,但PLL无法动态调整相位。

MMCM是混合模式时钟管理器,它的官方解释是:这是一个PLL,上面加上了DCM的一小部分以进行精细的相移(这就是它的混合模式的原因-PLL是模拟的,但是相移是数字的) 。它是在PLL的基础上加上了相位动态调整功能,因为PLL是模块电路,而动态调相是数字电路,所以叫混合模式。MMCM是在Virtex-6中被约会的,而且Virtex-6中也只有MMCM。

7s FPGA中,最高包含了24个CMT,每个CMT包含一个MMCM和一个PLL。Ultrascale中,一个CMT包含一个MMCM和两个PLL。

MMCM相对PLL的优势就是相位可动态调整,但PLL占用的面积更小。

在Vivado中,在使用Clock Wizard时,我们可以选择使用MMCM或者PLL,而且可以它们的区别也仅仅是下图的红框部分。



本文转自:科学计算technomania,作者: 猫叔,转载此文目的在于传递更多信息,版权归原作者所有。