可實現(xiàn)快速鎖定的FPGA片內延時鎖相環(huán)設計
摘要:延時鎖相環(huán)(DLL)是一種基于數(shù)字電路實現(xiàn)的時鐘管理技術。DLL可用以消除時鐘偏斜,對輸入時鐘進行分頻、倍頻、移相等操作。文中介紹了FPGA芯片內DLL的結構和設計方案,在其基礎上提出可實現(xiàn)快速鎖定的延時鎖相環(huán)OSDLL設計。在SMIC 0.25μm工藝下,設計完成OSDLL測試芯片,其工作頻率在20~200 MHz,鎖定時間相比傳統(tǒng)架構有大幅降低。
關鍵詞:延時鎖相環(huán);FPGA;快速鎖定
微電子技術的持續(xù)發(fā)展使得FPGA具有更高的系統(tǒng)集成度和工作頻率。系統(tǒng)性能較大程度上決定于系統(tǒng)的時鐘延遲和偏斜。由于FPGA具有豐富的可編程邏輯資源及時鐘網絡,隨之而來的時鐘延遲問題使得用戶設計的性能大打折扣。FPGA中的DLL模塊可提供零傳播延時,消除時鐘偏斜,從而進一步提高了FPGA的性能和設計的靈活性。
PLL是常用的時鐘管理電路,主要是基于模擬電路設計實現(xiàn)的,而DLL主要是基于數(shù)字電路設計實現(xiàn)的。雖然在時鐘綜合能力上比PLL差,但由于具有設計仿真周期短,抗干擾性強,以及工藝可移植等特點,DLL非常適合在數(shù)字系統(tǒng)架構中使用,這也是FPGA采用DLL作為時鐘管理的原因。文中將介紹傳統(tǒng)FPGA片內延時鎖相環(huán)設計,并在此基礎上提出具有更快鎖定速度的新延時鎖相環(huán)架構OSDLL。
1 FPGA片內DLL結構及工作原理
1.1 DLL架構設計
圖1為FPGA片內DLL結構框圖。圖1中FPGA片內用戶設計的時序邏輯部分在布局布線后,位于芯片中部,相應的時鐘走線較長。為緩解時鐘緩沖、重負載時鐘線的大電容、線路的傳播延時等因素造成的時鐘偏斜,可以選擇使用DLL模塊進行時鐘優(yōu)化管理。
圖1中,DLL主要由鑒相器(PD)、可調延時鏈、數(shù)字控制邏輯以及時鐘生成模塊組成。CLKOUT為DLL輸出時鐘,即時鐘生成模塊的輸出時鐘;CLKS為經過時鐘線后到達時序電路的偏斜時鐘;CLKFB即為CIKS,反饋時鐘CLKFB反饋回DLL。DLL的功能為通過在時域中調節(jié)CLKOUT的相位使得CLKFB與CLKIN同步,即消除時鐘偏斜。
1.2 DLL工作原理
DLL的工作過程依賴于控制邏輯的設計。DLL的控制邏輯主要包括SHIFT控制邏輯和SYN控制邏輯兩部分,如圖2所示。DLL的工作過程首先進行SHIFT階段,之后進行SYN階段。
從圖2可見,可調延時鏈共5條,即一條主可調延時鏈(延時鏈0,256個延時單元),4條子可調延時鏈(延時鏈1~4,各128個延時單元)。如圖2所示,4條子延時鏈,SHIFT邏輯和一個鑒相器(PD2)構成相移器。SHIFT階段,相移器工作。相移器采集第一級子延時鏈的輸入時鐘clk_ph_0和最后一級延時鏈的輸出時鐘clk_ph_360,根據(jù)鑒相結果同步調整4條子可調延時鏈的延時,直至clk_ph_O和clk_ph_360同步。經過相移器的時鐘延時是一個周期,從而使得時鐘經過相移器中的每個子延時鏈的輸出時鐘相移90°,對應圖2中分別為clk_ph_O,clk_ph_90,clk_ph_180,clk_ph_270,clk_ph_360。這些相移的時鐘可以根據(jù)實際的需要由時鐘生成模塊產生所需要分頻(CLKDV),倍頻(CIK2X)或移相時鐘作為輸出時鐘,關于分頻和倍頻電路,如文獻。SYN邏輯用于控制將反饋時鐘和輸入時鐘調整至同步。
整個SHIFT階段和SYN階段都是在各自的控制邏輯模塊控制下工作的,以一定的工作節(jié)拍實施調整,如圖3所示。
圖2中工作節(jié)拍模塊生成工作節(jié)拍信號(SHIFT_C,SYN_C)。在工作節(jié)拍下,狀態(tài)機處于某一狀態(tài),則根據(jù)狀態(tài)的調整要求依次進行如下操作:鑒相,判斷出輸入時鐘和反饋時鐘的相位關系為超前或滯后(SHT_U_D)或SYN_U_D),同時還可以指示兩時鐘是否進入鎖定窗(SHT_WIN,SYN_WIN),如圖l所示。鑒相器將這些信息送入控制邏輯模塊,在SHIFT階段,4條延時鏈對應各自的可逆計數(shù)器,負責控制延時鏈加減延時單元,各計數(shù)器工作在自己的時鐘域中,如圖2所示。根據(jù)鑒相的結果和所處的狀態(tài)機狀態(tài),計數(shù)器進行計數(shù),計數(shù)結果作為延時鏈的譯碼地址,最后延時鏈經過地址譯碼增加/減少一個延時單元,完成一次工作節(jié)拍調節(jié),繼而繼續(xù)進行下一次調整,直到狀態(tài)機進入鎖定狀態(tài)為止。SYN階段工作方式類似,但只對主延時鏈進行調整。實現(xiàn)DLL鎖定,同步建立需滿足公式,如式(1)所示。
DSYN+SKEW=mult(P) (1)
式中,DSYN為主延時鏈可以提供的延時;SKEW為時鐘偏斜;muh(P)為整數(shù)個輸入時鐘周期。
1.3 抗抖動設計
如圖2所示,控制邏輯中JF counter1和JF counter2功能模塊。用戶可以設置抗抖動數(shù)值d1,d2,如圖1所示,從而對這兩個模塊中的計數(shù)器設定一個計數(shù)周期。在DLL鎖定之后這兩個模塊開始工作,按照計數(shù)設定值的周期性對鎖定后的時鐘進行檢測。即在計數(shù)器達到設定值時,對鎖定后的反饋時鐘和輸入時鐘進行鑒相,判斷相位關系,控制可逆計數(shù)器對鎖定后的時鐘進行周期性微調干預。如圖4所示,在系統(tǒng)內存在干擾時,會產生時鐘抖動,若抗抖動模塊工作檢測到反饋時鐘超前于輸入時鐘,則進行一次微調,消除抖動的影響??苟秳釉O計有助于減少抖動的影響。同時由于計數(shù)周期可設,使得用戶可以在不同系統(tǒng)工作環(huán)境下,采用不同的抗抖動設定值,以達到最優(yōu)的防抖效果。
2 OSDLL架構設計
以上介紹的是傳統(tǒng)DLL架構下的設計,其具有設計周期相對較短、工藝可移植、抗干擾能力強等特點。由于其控制邏輯的工作特點,從復位狀態(tài)開始,延時鏈復位至O,即可逆計數(shù)器從0開始計數(shù)。DLL按照工作節(jié)拍信號,一拍一拍地進行調整(假設6周期一節(jié)拍),當輸入時鐘頻率較低或者時鐘相差較大時,其鎖定時間將大大增加。取任何固定值作為延時鏈的復位值,同樣存在某一頻率段鎖定時間較長的問題。
針對這一問題,采用one-shot延時計算機制,即完成SHIFT階段后首先利用主延時鏈來計算反饋時OSDLL的特點是復用傳統(tǒng)DLL的延時鏈,one-shot譯碼邏輯相對簡單,沒有過多地增加硬件開銷,同時保持原DLL架構的優(yōu)點,在多頻段都能夠提高鎖定速度,頻率適應性強。與傳統(tǒng)DLL的鎖定時間比較,如圖6所示。圖6中縱坐標代表鎖定時間,橫坐標代表仿真頻率,百分數(shù)表示鎖定時間相差的比鐘上升沿和輸入時鐘上升沿之間的相位差值(假設有效沿是上升沿),這個延時值以延時單元的數(shù)目來表征。將計算后的結果作為SYN邏輯中的可逆計數(shù)器0的初值,如圖2所示,經過譯碼后使得主延時鏈具有一個合理的延時初值。然后DLL進入SYN階段,按照上述的過程進行同步調整。由于大部分的相差在one-shot計算結果付給可逆計數(shù)器時已經消失,DLL只需經過很短的調整周期即可達到同步。這種結構的DLL,稱之為OSDLL。
本設計進行one-shot計算時復用主延時鏈,如圖5為one-shot結構,SHIFT階段完成后在one-shot控制邏輯的控制下首先將圖中的開關轉向1。主延時鏈取8個延時單元為一個one-shot延時計算單元,這樣可以簡化譯碼電路的規(guī)模,同時可以計算出一個合理的延時粗略值,達到硬件增加和功能實現(xiàn)的折中。one-shot工作時首先對主延時鏈進行復位。然后發(fā)出START信號,START信號上升沿同CLKFB同步,STOP信號上升沿同CLKIN同步,START(上升沿后為恒“1”)信號送入延時鏈的輸入端,每個延時計算單元的輸出端作為譯碼器的譯碼輸入,STOP為譯碼器的采樣信號。由于延時單元具有一定的延時值所以,STOP信號有效時,譯碼電路將采集到“11110…000”的一串譯碼輸入值。通過譯碼電路計算出其中“l(fā)”的個數(shù),從而計算出兩時鐘沿之間的延時單元數(shù)目。將計算好的延時單元數(shù)目DELAY_NUM送入數(shù)字控制模塊的可逆計數(shù)器0,如圖2所示。開關轉向0,CLKIN輸入至延時鏈,啟動SYN階段,開始工作。例,可見在各個頻率段,OSDLL都能夠明顯的降低鎖定時間。
基于SMIC O.25 μm工藝,設計OSDLL測試芯片。OSDLL的工作頻率在20~200 MHz之間,工作電壓為2.5 V。圖7為版圖,圖8為版圖后仿真結果。
3 結束語
介紹了DLL架構和工作原理,并基于原DLL結構,加入快速鎖定one-shot模塊。新的DLL結構OSDLL在提高DLL鎖定速度的基礎上,沒有過多的增加硬件資源,保持了原DLL的時鐘綜合能力和抗抖動功能。在SMIC 0.25μm工藝下,設計完成OSDLL測試芯片,其工作頻率在20~200 MHz之間,鎖定時間比傳統(tǒng)架構大幅降低。OSDLL架構集成于FPGA芯片內,可有效地優(yōu)化設計時序,加強系統(tǒng)性能。