摘 要: 提出了一種采用FPGA實現(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ā)器實現(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點到D點)有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)采樣失效,。
解決上述問題的難點在于預(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ù)延時同步器,。下面給出兩種同步器的實現(xiàn)原理,。
2.1 時鐘延時同步器
圖3所示為時鐘延時同步器,沖突檢測電路檢測輸入數(shù)據(jù)與時鐘沿的相位關(guān)系,,根據(jù)檢測結(jié)果由狀態(tài)機(jī)自適應(yīng)選擇時鐘是否延時,。圖3中時鐘延時單元可實現(xiàn)時間為T的延時,延時單元若為一非門,,該電路就是一個簡單的時鐘上升沿采樣或者下降沿采樣的自適應(yīng)選擇電路,。
該電路具有相對簡單、容易實現(xiàn)的特點,。但是由于時鐘延時只有兩種選擇,,不可能實現(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ù)延時同步器可以實現(xiàn)對數(shù)據(jù)的精確延時,,實現(xiàn)對超高速數(shù)據(jù)或DDR數(shù)據(jù)的鎖存,。但是,由于大量延時單元的使用,,增加了FPGA設(shè)計的復(fù)雜度,,實現(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實現(xiàn)
數(shù)據(jù)延時同步器實現(xiàn)較為復(fù)雜,,尤其對于位數(shù)較多的數(shù)據(jù)總線,需要占用很多資源,,狀態(tài)機(jī)也較復(fù)雜,。但其實現(xiàn)原理與時鐘延時同步器基本相同,本文只給出時鐘延時同步器的實現(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實現(xiàn)
圖7為延時單元電路,,采用FPGA內(nèi)部的LUT4作延時。由于FPGA內(nèi)部布線延時與LUT4延時相比不可忽略,,因此需要對LUT4作相對布局約束,,必要時還要作布線約束。
?
4.2 突檢測單元me_p,,me_n的實現(xiàn)
圖8為沖突檢測單元me_p的原理圖[2],。該電路可以實現(xiàn)兩路輸入信號上升沿的相位檢測,如果輸入信號r1上升沿較r2的上升沿提前,,則g1輸出為‘1’,,g2為‘0’;否則g1輸出為‘0’,,g2為‘1’,。在FPGA實現(xiàn)時,采用基于四輸入查找表(LUT4)的設(shè)計,,對于布局布線要盡可能保持對稱性,,需要加入布局約束、甚至布線約束,。圖9為經(jīng)Synplify綜合后的原理圖,。
沖突檢測單元me_n可以實現(xiàn)輸入信號r1下降沿與輸入信號r2上升沿的相位檢測,原理同me_p,。對于me_n的實現(xiàn),,只要在配置FPGA查找表(LUT)時,將圖9中I0單元(LUT4_7FFF)改為“LUT4_DFFF”即可,。
4.3 狀態(tài)機(jī)的實現(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)的驗證,。采樣頻率在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.