CMT是非常重要的時鍾資源,如果時鍾信號像血液的話,CMT就像是循環系統,MRCC和SRCC將外部時鍾引入,但是需要經過處理才能被其他部件所使用。時鍾信號在運行過程中,還會發生各種負面的變化,例如jitter(抖動)時鍾頻率發生變化,偏移(到達不同部件時間不同)和占空比失真(一個周期內部不對稱)。從CMT(Clock Management Tile)的名字也可以看出來。一個CMT包括了一個MMCM(Mixed-mode Clock Manager)和一個PLL(Phase-locked loop)。PLL的功能是MMCM的一個子集。MMCM的上一代就叫做DCM(digital clock manager)。下圖是CMT支持的輸出輸出。
7系列的設備支持最多24個CMT,MMCM和PLL可以用作頻率合成器,去抖動和偏斜。7系列的PLL是基於MMCM簡化設計的,而並非上一代PLL的升級。MMCM的額外功能有
- 通過CLKOUT[0:3]直連BUFR或者BUFIO的HPC(high performance clock)
- 時鍾反向輸出(CLKOUT[0:3]B)
- CLKOUT6
- CLKOUT4_CASCADE (級聯)
- Fractional divide for CLKOUT0_DIVIDE_F (分頻)
- Fractional multiply for CLKFBOUT_MULT_F (倍頻)
- Fine phase shifting (精細相移)
- Dynamic phase shifting (動態相移)
以下是MMCM的結構圖
輸入多路復用器從IBUFG,BUFG,BUFR,BUFH,GT(僅CLKIN)或interconnect(不推薦)中選擇參考時鍾和反饋時鍾。每個時鍾輸入都有一個可編程的計數器分頻器(D)。相頻檢測器(PFD)比較輸入(參考)時鍾和反饋時鍾的上升沿的相位和頻率。If a minimum High/Low pulse is maintained, the duty cycle is ancillary ? PFD用於生成與兩個時鍾范圍內的相位和頻率成比例的信號。該信號驅動Charge pump(CP)和loop filter(LF)生成VCO的參考電壓。PFD會向電荷泵和環路濾波器產生一個上升或下降信號,以確定VCO應該以更高還是更低的頻率工作。當VCO的頻率過高時,PFD會激活一個下降信號,從而導致控制電壓降低,從而降低VCO的工作頻率。當VCO的頻率太低時,上升信號將增加電壓。 VCO產生八個輸出相位和一個可變相位以實現精細相移。每個輸出相位都可以作為輸出計數器的參考時鍾。每個計數器都可以獨立編程。為了實現頻率合成,還額外提供了一個M,這個計數器負責控制反饋時鍾。另外除了整數倍的分頻輸出計數,MMCM還為CLKOUT0和CLKBOUT增加了分數計數器。下圖書PLL的詳細結構圖。
比較之后可以發現,大體結構相同,區別在於:
- 沒有CLKOUT[0:3]B,反相輸出
- 只有八個輸出相位,沒有可變相位,無法實現精細相移
- 沒有分數計數器,無法實現分數倍頻率合成
- 少一個CLKOUT6
接下來是MMCM和PLL的一般用法
從圖的名字也可以看出來這是用了兩個BUFG來去除時鍾網絡的偏移。一個CLKOUT用來驅動邏輯資源,而另一個反饋時鍾用來精確控制輸出和輸出時鍾之間的相位關系,右邊的波形圖展示了輸入和輸出需要相位對齊時的情況。
上圖是全局時鍾,下圖是用BUFH做的。
當MMCM被用作頻率合成和抖動過濾並且對輸出和輸入的相位沒有要求時,可以用內部信號作為反饋信號。此時MMCM的性能會更好,因為反饋時鍾沒有經過其他電源供電的元件,因此也就沒有其他電源的噪聲。但是從CLKIN和BUFG的噪聲還是照常。
MMCM也能被用來生成一個無延遲的buffer clcok, 如下圖。無延遲的buffer可以吧一個時鍾信號扇出給多個目的地,並且信號之間的偏移很小。
該設計主要是反饋信號的延遲要和輸出信號一致,反饋信號要匹配輸出信號,從而使得CLKIN和CLKBIN的相位一致。但是有時候輸出信號路線上的電容和反饋路線上的電容不一樣大,這樣的話信號邊沿的斜率就會不同。