在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模塊來說,其關鍵參數為輸入時鍾頻率范圍、輸出時鍾頻率范圍、輸入/輸出時鍾允許抖動范圍等。
