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