CLKDLL使用帶來的思考
一直以為DCM和DLL說得都是一個東西,使用了才知道Xilinx的時鐘管理策略還真得蠻多的,雖說基本的原理上都有點大同小異。
本文引用地址:http://m.butianyuan.cn/article/191326.htm
圖1
先說DCM,字面上理解就是數字時鐘管理單元,主要完成時鐘的同步、移相、分頻、倍頻和去抖動等。而DLL是數字延遲鎖相環(huán)的意思,是通過長的延時線達到對時鐘偏移量的調節(jié),而這個調節(jié)是通過比對反饋回來的時鐘信號實現同步輸出的。DCM實際上不止DLL結構這么簡單,它還包括了DFSDPSDSS等組件。官方的說法如下:
The digital clock manager (DCM) component implements a clock delay locked loop (DLL), a digital frequency synthesizer (DFS), digital phase shifter (DPS), and a digital spread spectrum (DSS).
Xilinx早期的Virtex器件不提供DCM資源,只有CLKDLL,這個CLKDLL實現的時鐘輸出相對單一,但是基本的時鐘偏斜的優(yōu)化效果還是可以達到的。簡單的插入語言模板進行例化就可以了。需要注意的是時鐘反饋信號CLKFB不能夠直接和時鐘輸出CLK0連接,必須讓CLK0先BUFG一下??梢匀缦逻M行例化(不使用的時鐘可以空著):
CLKDLL #(
.CLKDV_DIVIDE(2.0), // Divide by: 1.5,2.0,2.5,3.0,4.0,5.0,8.0 or 16.0
.DUTY_CYCLE_CORRECTION(TRUE), // Duty cycle correction, TRUE or FALSE
.FACTORY_JF(16'hC080), // FACTORY JF Values
.STARTUP_WAIT(FALSE) // Delay config DONE until DLL LOCK, TRUE/FALSE
)
CLKDLL_inst (
.CLK0(clk0), // 0 degree DLL CLK output
.CLK180(clk180), // 180 degree DLL CLK output
.CLK270(clk270), // 270 degree DLL CLK output
.CLK2X(clk2x), // 2X DLL CLK output
.CLK90(clk90), // 90 degree DLL CLK output
.CLKDV(clkdv), // Divided DLL CLK out (CLKDV_DIVIDE)
.LOCKED(locked), // DLL LOCK status output
.CLKFB(clk00), // DLL clock feedback
.CLKIN(clk), // Clock input (from IBUFG, BUFG or DLL)
.RST(!rst_n) // DLL asynchronous reset input
);
評論