在xilinx系列的FPGA中,内部时钟通常由DCM或者PLL产生。PLL与DCM功能上非常相似,都可以实现倍频,分频等功能,但是他们实现的原理有所不同。
首先,需要知道,不管是DCM还是PLL,都是属于CMT(时钟管理模块),对于不同的芯片,CMT的个数也是不一样的,就以作者所用的45T来说:
也就是说,45T芯片共有4个PLL和8个DCM。
DCM,它的全名叫做数字时钟管理器,它是基于数字抽样方式,在输入时钟和反馈时钟之间插入延迟,使输入时钟和反馈时钟的上升时间一致。它的输出为
DCM=CLK0+CLK90+CLK180+CLK270+CLK2X+CLK2X180+CLKDV+CLKFX+CLKFX180
上面公式中的各个时钟定义如下图所示:
其中,CLKDV的含义我也不太明白,欢迎大神指教~
额,简单介绍了一下DCM,有点跑题了,下面登场的是我们今天的主角PLL,大家掌声欢迎。
PLL,学名叫做模拟锁相环,其核心部件为VCO,即压控振荡器。它能在400-1080MHZ之间摆动,其输出频率由D,M,O三个参数来决定,Spartan-6最多可以有6个输出。关于PLL的官方介绍如下:
在实际工程中,你可以选择用IP Wizard来生成,如下图
不过,如果你嫌麻烦的话,也可以直接copy原语。
这里总结一下DCM与PLL的区别,仅以鄙人目前浅陋的见识:
(1)DCM只支持90、180、270相位,但PLL这方便更灵活宽泛
(2)DCM只支持2~16的小数分频,以及2倍频,但是PLL这方面更灵活宽泛
(3)DCM是用数字延时模块调理时钟,是纯数字的东西,用的灵活,占得面积小,噪声和jitter相对PLL大一些。
(4)PLL是模拟的,比DCM要浮躁,出来的钟也质量也高,但是比较复杂,占的面积也比DCM大
深入了解DCM:是基于Xilinx的其他系列器件所采用的数字延迟锁相环(DLL,Delay Locked Loop)模块。在时钟的管理与控制方面,DCM与DLL相比,功能更强大,使用更灵活。DCM的功能包括消除时钟的延时、频率的合成、时钟相位的调整等系统方面的需求。DCM的主要优点在于:
①实现零时钟偏移(Skew),消除时钟分配延迟,并实现时钟闭环控制;
②时钟可以映射到PCB上用于同步外部芯片,这样就减少了对外部芯片的要求,将芯片内外的时钟控制一体化,以利于系统设计。对于DCM模块来说,其关键参数为输入时钟频率范围、输出时钟频率范围、输入/输出时钟允许抖动范围等。