微電子技術(shù)的持續(xù)發(fā)展使得FPGA具有更高的系統(tǒng)集成度和工作頻率,。系統(tǒng)性能較大程度上決定于系統(tǒng)的時鐘延遲和偏斜。由于FPGA具有豐富的可編程邏輯資源及時鐘網(wǎng)絡(luò),,隨之而來的時鐘延遲問題使得用戶設(shè)計的性能大打折扣,。FPGA中的DLL模塊可提供零傳播延時,消除時鐘偏斜,,從而進(jìn)一步提高了FPGA的性能和設(shè)計的靈活性,。
PLL是常用的時鐘管理電路,主要是基于模擬電路設(shè)計實(shí)現(xiàn)的,,而DLL主要是基于數(shù)字電路設(shè)計實(shí)現(xiàn)的,。雖然在時鐘綜合能力上比PLL差,但由于具有設(shè)計仿真周期短,,抗干擾性強(qiáng),,以及工藝可移植等特點(diǎn),DLL非常適合在數(shù)字系統(tǒng)架構(gòu)中使用,,這也是FPGA采用DLL作為時鐘管理的原因,。文中將介紹傳統(tǒng)FPGA片內(nèi)延時鎖相環(huán)設(shè)計,并在此基礎(chǔ)上提出具有更快鎖定速度的新延時鎖相環(huán)架構(gòu)OSDLL,。
1 FPGA片內(nèi)DLL結(jié)構(gòu)及工作原理
1.1 DLL架構(gòu)設(shè)計
圖1為FPGA片內(nèi)DLL結(jié)構(gòu)框圖,。圖1中FPGA片內(nèi)用戶設(shè)計的時序邏輯部分在布局布線后,位于芯片中部,,相應(yīng)的時鐘走線較長,。為緩解時鐘緩沖,、重負(fù)載時鐘線的大電容,、線路的傳播延時等因素造成的時鐘偏斜,可以選擇使用DLL模塊進(jìn)行時鐘優(yōu)化管理,。
圖1中,,DLL主要由鑒相器(PD)、可調(diào)延時鏈,、數(shù)字控制邏輯以及時鐘生成模塊組成,。CLKOUT為DLL輸出時鐘,,即時鐘生成模塊的輸出時鐘;CLKS為經(jīng)過時鐘線后到達(dá)時序電路的偏斜時鐘,;CLKFB即為CIKS,,反饋時鐘CLKFB反饋回DLL。DLL的功能為通過在時域中調(diào)節(jié)CLKOUT的相位使得CLKFB與CLKIN同步,,即消除時鐘偏斜,。
1.2 DLL工作原理
DLL的工作過程依賴于控制邏輯的設(shè)計。DLL的控制邏輯主要包括SHIFT控制邏輯和SYN控制邏輯兩部分,,如圖2所示,。DLL的工作過程首先進(jìn)行SHIFT階段,之后進(jìn)行SYN階段,。
從圖2可見,,可調(diào)延時鏈共5條,即一條主可調(diào)延時鏈(延時鏈0,,256個延時單元),,4條子可調(diào)延時鏈(延時鏈1~4,各128個延時單元),。如圖2所示,,4條子延時鏈,SHIFT邏輯和一個鑒相器(PD2)構(gòu)成相移器,。SHIFT階段,,相移器工作。相移器采集第一級子延時鏈的輸入時鐘clk_ph_0和最后一級延時鏈的輸出時鐘clk_ph_360,,根據(jù)鑒相結(jié)果同步調(diào)整4條子可調(diào)延時鏈的延時,,直至clk_ph_O和clk_ph_360同步。經(jīng)過相移器的時鐘延時是一個周期,,從而使得時鐘經(jīng)過相移器中的每個子延時鏈的輸出時鐘相移90°,,對應(yīng)圖2中分別為clk_ph_O,clk_ph_90,,clk_ph_180,,clk_ph_270,clk_ph_360,。這些相移的時鐘可以根據(jù)實(shí)際的需要由時鐘生成模塊產(chǎn)生所需要分頻(CLKDV),,倍頻(CIK2X)或移相時鐘作為輸出時鐘,關(guān)于分頻和倍頻電路,,如文獻(xiàn),。SYN邏輯用于控制將反饋時鐘和輸入時鐘調(diào)整至同步。
整個SHIFT階段和SYN階段都是在各自的控制邏輯模塊控制下工作的,以一定的工作節(jié)拍實(shí)施調(diào)整,,如圖3所示,。
圖2中工作節(jié)拍模塊生成工作節(jié)拍信號(SHIFT_C,SYN_C),。在工作節(jié)拍下,,狀態(tài)機(jī)處于某一狀態(tài),則根據(jù)狀態(tài)的調(diào)整要求依次進(jìn)行如下操作:鑒相,,判斷出輸入時鐘和反饋時鐘的相位關(guān)系為超前或滯后(SHT_U_D)或SYN_U_D),,同時還可以指示兩時鐘是否進(jìn)入鎖定窗(SHT_WIN,SYN_WIN),,如圖l所示,。鑒相器將這些信息送入控制邏輯模塊,在SHIFT階段,,4條延時鏈對應(yīng)各自的可逆計數(shù)器,,負(fù)責(zé)控制延時鏈加減延時單元,各計數(shù)器工作在自己的時鐘域中,,如圖2所示,。根據(jù)鑒相的結(jié)果和所處的狀態(tài)機(jī)狀態(tài),計數(shù)器進(jìn)行計數(shù),,計數(shù)結(jié)果作為延時鏈的譯碼地址,,最后延時鏈經(jīng)過地址譯碼增加/減少一個延時單元,完成一次工作節(jié)拍調(diào)節(jié),,繼而繼續(xù)進(jìn)行下一次調(diào)整,,直到狀態(tài)機(jī)進(jìn)入鎖定狀態(tài)為止。SYN階段工作方式類似,,但只對主延時鏈進(jìn)行調(diào)整,。實(shí)現(xiàn)DLL鎖定,同步建立需滿足公式,,如式(1)所示,。
DSYN+SKEW=mult(P) (1)
式中,DSYN為主延時鏈可以提供的延時,;SKEW為時鐘偏斜,;muh(P)為整數(shù)個輸入時鐘周期。
1.3 抗抖動設(shè)計
如圖2所示,,控制邏輯中JF counter1和JF counter2功能模塊,。用戶可以設(shè)置抗抖動數(shù)值d1,d2,,如圖1所示,,從而對這兩個模塊中的計數(shù)器設(shè)定一個計數(shù)周期,。在DLL鎖定之后這兩個模塊開始工作,,按照計數(shù)設(shè)定值的周期性對鎖定后的時鐘進(jìn)行檢測,。即在計數(shù)器達(dá)到設(shè)定值時,對鎖定后的反饋時鐘和輸入時鐘進(jìn)行鑒相,,判斷相位關(guān)系,,控制可逆計數(shù)器對鎖定后的時鐘進(jìn)行周期性微調(diào)干預(yù)。如圖4所示,,在系統(tǒng)內(nèi)存在干擾時,,會產(chǎn)生時鐘抖動,若抗抖動模塊工作檢測到反饋時鐘超前于輸入時鐘,,則進(jìn)行一次微調(diào),,消除抖動的影響??苟秳釉O(shè)計有助于減少抖動的影響,。同時由于計數(shù)周期可設(shè),使得用戶可以在不同系統(tǒng)工作環(huán)境下,,采用不同的抗抖動設(shè)定值,,以達(dá)到最優(yōu)的防抖效果。