摘 要: 提出了一種采用FPGA實(shí)現(xiàn)自適應(yīng)同步器" title="同步器">同步器的設(shè)計。該同步器利用采樣時鐘與輸入數(shù)據(jù)的周期特性,預(yù)測時鐘與數(shù)據(jù)的相位關(guān)系,自適應(yīng)地選擇時鐘上升沿" title="上升沿">上升沿或下降沿鎖存,使數(shù)據(jù)變化避開時鐘沿的亞穩(wěn)態(tài)窗,降低出現(xiàn)亞穩(wěn)態(tài)的概率。該同步器設(shè)計選用Xilinx公司的FPGA,應(yīng)用Synplify綜合工具和ISE提供的約束功能,僅用16個SLICE資源。
關(guān)鍵詞: 自適應(yīng)同步器" title="自適應(yīng)同步器">自適應(yīng)同步器 亞穩(wěn)態(tài) FPGA
在許多高速數(shù)據(jù)采集系統(tǒng)中,數(shù)據(jù)正確鎖存是設(shè)計者必須要面對的問題。特別是在內(nèi)部時鐘與外部時鐘采用同一個時鐘源的基于FPGA的高速數(shù)據(jù)采集系統(tǒng)中,由于走線延時、器件延時、FPGA輸入管腳延時,導(dǎo)致FPGA輸入數(shù)據(jù)與FPGA內(nèi)部時鐘的相對相位關(guān)系不確定;在時鐘頻率可變的情況下,相對相位關(guān)系還會隨頻率變化。在FPGA內(nèi)部一般采用D觸發(fā)器實(shí)現(xiàn)對輸入數(shù)據(jù)的采樣。為了避免亞穩(wěn)態(tài)[3],D觸發(fā)器要求輸入數(shù)據(jù)相對時鐘沿滿足一定的建立、保持時間,即輸入數(shù)據(jù)與FPGA內(nèi)部時鐘要滿足一定的相位關(guān)系。由于輸入數(shù)據(jù)與采樣時鐘相對相位的不確定性,就有可能不滿足FPGA內(nèi)部D觸發(fā)器的建立、保持時間,出現(xiàn)亞穩(wěn)態(tài)。針對上述情況,本文給出在FPGA中可以自適應(yīng)地選擇時鐘上升沿或下降沿采樣的自適應(yīng)同步器電路設(shè)計。該電路能夠檢測鎖存時鐘上升沿與輸入數(shù)據(jù)跳變的相位關(guān)系,由檢測結(jié)果選擇上升沿采樣或下降沿采樣,使數(shù)據(jù)變化避開時鐘沿的亞穩(wěn)態(tài)窗[1],降低出現(xiàn)亞穩(wěn)態(tài)的概率。
1 某雷達(dá)數(shù)據(jù)采集系統(tǒng)簡介
圖1所示為某雷達(dá)系統(tǒng)數(shù)據(jù)采集原理圖,該雷達(dá)系統(tǒng)有兩種帶寬,要求兩種采樣頻率" title="采樣頻率">采樣頻率,采樣時鐘由FPGA產(chǎn)生。設(shè)計采用了ECL輸出電平標(biāo)準(zhǔn)的ADC,F(xiàn)PGA輸入輸出采用LVTTL標(biāo)準(zhǔn)。因此,F(xiàn)PGA輸出時鐘以及ADC數(shù)據(jù)送入FPGA均需要采用電平轉(zhuǎn)換芯片。這樣,F(xiàn)PGA輸出時鐘的上升沿到相應(yīng)FPGA輸入管腳上升沿之間(圖1中C點(diǎn)到D點(diǎn))有8~9ns的延時。相同的延時,不同的采樣頻率,輸入數(shù)據(jù)與采樣時鐘的相對相位不同;而且由于FPGA內(nèi)部布線延時的不確定性,采樣時鐘與輸入數(shù)據(jù)的相對相位會隨著每次重新布局布線而改變,這兩種情況都可能導(dǎo)致不滿足D觸發(fā)器的建立、保持時間,導(dǎo)致采樣失效。
如圖2所示,在FPGA內(nèi)部若采用上升沿鎖存數(shù)據(jù),對于115MHz采樣頻率可以保證正確采樣,對于85MHz的采樣頻率,有可能出現(xiàn)采樣失效;反之,若采用下降沿鎖存數(shù)據(jù),115MHz的采樣頻率可能出現(xiàn)采樣失效。
解決上述問題的難點(diǎn)在于預(yù)測輸入數(shù)據(jù)與采樣時鐘的相位關(guān)系,從而選擇合適的采樣時鐘沿。采用圖1所示的采樣方案,經(jīng)常出現(xiàn)某一種采樣頻率采樣失效的情況,如115MHz采樣頻率采樣正常,而85MHz采樣頻率采樣失效。自適應(yīng)同步器可以預(yù)測采樣時鐘與輸入數(shù)據(jù)的相位關(guān)系,自適應(yīng)地選擇上升沿或下降沿采樣,降低出現(xiàn)亞穩(wěn)態(tài)的概率。
2 自適應(yīng)同步器原理
自適應(yīng)同步器能夠預(yù)測采樣時鐘上升沿與輸入數(shù)據(jù)的相位關(guān)系。如果相位關(guān)系不能滿足D觸發(fā)器的建立、保持時間,則自適應(yīng)同步器能自適應(yīng)地對數(shù)據(jù)或者時鐘作延時調(diào)整,直到滿足建立、保持時間。
根據(jù)同步器延時調(diào)整對象不同,同步器可以分為時鐘延時" title="時鐘延時">時鐘延時同步器和數(shù)據(jù)延時同步器。下面給出兩種同步器的實(shí)現(xiàn)原理。
2.1 時鐘延時同步器
圖3所示為時鐘延時同步器,沖突檢測電路檢測輸入數(shù)據(jù)與時鐘沿的相位關(guān)系,根據(jù)檢測結(jié)果由狀態(tài)機(jī)自適應(yīng)選擇時鐘是否延時。圖3中時鐘延時單元可實(shí)現(xiàn)時間為T的延時,延時單元若為一非門,該電路就是一個簡單的時鐘上升沿采樣或者下降沿采樣的自適應(yīng)選擇電路。
該電路具有相對簡單、容易實(shí)現(xiàn)的特點(diǎn)。但是由于時鐘延時只有兩種選擇,不可能實(shí)現(xiàn)相位的精確匹配,很難適應(yīng)一些超高速電路的需求。該電路一般選取數(shù)據(jù)總線中的某一位做相位匹配,因此要求數(shù)據(jù)總線上各位數(shù)據(jù)延時盡可能相等。
2.2 數(shù)據(jù)延時同步器
圖4所示電路為數(shù)據(jù)延時同步器,輸入數(shù)據(jù)經(jīng)過若干級延時單元的延時,沖突檢測電路檢測時鐘上升沿與各級延時數(shù)據(jù)的相位關(guān)系,由狀態(tài)機(jī)選擇較為理想的延時數(shù)據(jù)。
數(shù)據(jù)延時同步器可以實(shí)現(xiàn)對數(shù)據(jù)的精確延時,實(shí)現(xiàn)對超高速數(shù)據(jù)或DDR數(shù)據(jù)的鎖存。但是,由于大量延時單元的使用,增加了FPGA設(shè)計的復(fù)雜度,實(shí)現(xiàn)較為困難。
3 自適應(yīng)同步器在采樣系統(tǒng)中的應(yīng)用
圖5所示電路為自適應(yīng)同步器在圖1所示的某雷達(dá)采樣系統(tǒng)中的應(yīng)用。圖5中采樣時鐘、D觸發(fā)器組與圖1中相同,只是圖5中D觸發(fā)器組的時鐘改為同步時鐘,BUFG為Xilinx FPGA內(nèi)部的全局時鐘緩沖。自適應(yīng)同步器檢測同步時鐘與數(shù)據(jù)最低位data[0]的相對相位,自適應(yīng)地選擇采樣時鐘,達(dá)到同步輸入數(shù)據(jù)的目的。由于數(shù)據(jù)總線只選取其中一位data[0],因此要求總線上各位數(shù)據(jù)延時盡可能相等。
4 自適應(yīng)同步器的FPGA實(shí)現(xiàn)
數(shù)據(jù)延時同步器實(shí)現(xiàn)較為復(fù)雜,尤其對于位數(shù)較多的數(shù)據(jù)總線,需要占用很多資源,狀態(tài)機(jī)也較復(fù)雜。但其實(shí)現(xiàn)原理與時鐘延時同步器基本相同,本文只給出時鐘延時同步器的實(shí)現(xiàn)。圖6所示電路為自適應(yīng)同步器,其中del為延時單元,延時時間計為T_del;me_p為data上升沿與時鐘上升沿的沖突檢測模塊,me_n為data下降沿與時鐘上升沿的沖突檢測模塊;fsm為有限狀態(tài)機(jī)。當(dāng)data跳變發(fā)生在時鐘上升沿[-T_del,T_del]時間之內(nèi)時,電路輸出sel有效。
4.1 延時單元的FPGA實(shí)現(xiàn)
圖7為延時單元電路,采用FPGA內(nèi)部的LUT4作延時。由于FPGA內(nèi)部布線延時與LUT4延時相比不可忽略,因此需要對LUT4作相對布局約束,必要時還要作布線約束。
?
4.2 突檢測單元me_p,me_n的實(shí)現(xiàn)
圖8為沖突檢測單元me_p的原理圖[2]。該電路可以實(shí)現(xiàn)兩路輸入信號上升沿的相位檢測,如果輸入信號r1上升沿較r2的上升沿提前,則g1輸出為‘1’,g2為‘0’;否則g1輸出為‘0’,g2為‘1’。在FPGA實(shí)現(xiàn)時,采用基于四輸入查找表(LUT4)的設(shè)計,對于布局布線要盡可能保持對稱性,需要加入布局約束、甚至布線約束。圖9為經(jīng)Synplify綜合后的原理圖。
沖突檢測單元me_n可以實(shí)現(xiàn)輸入信號r1下降沿與輸入信號r2上升沿的相位檢測,原理同me_p。對于me_n的實(shí)現(xiàn),只要在配置FPGA查找表(LUT)時,將圖9中I0單元(LUT4_7FFF)改為“LUT4_DFFF”即可。
4.3 狀態(tài)機(jī)的實(shí)現(xiàn)
圖10為自適應(yīng)同步器狀態(tài)機(jī),輸入為conflict,輸出為sel。狀態(tài)機(jī)共8個狀態(tài),狀態(tài)為S0、S1、S2、S3時,輸出為‘0’,選擇圖(5)所示‘sam_clk’;否則輸出為‘1’,選擇‘sam_clk’的反向時鐘‘~sam_clk’;中間態(tài)S0、S1、S2以及S4、S5、S6可以有效防止?fàn)顟B(tài)機(jī)振蕩。圖10中′x′表示任意狀態(tài)。
上述自適應(yīng)同步器已經(jīng)過圖1所示的雷達(dá)采樣系統(tǒng)的驗(yàn)證。采樣頻率在20MHz到140MHz范圍內(nèi)變化時,未出現(xiàn)采樣失效。
參考文獻(xiàn)
[1] FOLEY C,Characterizing metastability proc.2nd IEEE Symp.Adv.Res.Asynchronous circuits and systems,1996.
[2] SEMIAT Y,GINOSAR R.Timing measurements of synchronization circuits,Proc.9th IEEE Int.Symp.on? asynchronous circuits and systems(ASYNC′03),2003.
[3] DALLY W J,POULTON J W.Digital systems engineering.Cambridge University Press,1998.
[4] BAETONIU C,YEOH T Y.Dynamic phase alignment using asynchronous data capture XAPP697 (v1.2).January 7,2005.www.xilinx.com.
[5] SAWYER N.Data to clock phase alignment? XAPP225(v1.1).April 4,2002.www.xilinx.com.