劉勇 重慶電子工程職業(yè)學(xué)院
基于FPGA的數(shù)據(jù)采集系統(tǒng)中跨時(shí)鐘域設(shè)計(jì)的研究
劉勇 重慶電子工程職業(yè)學(xué)院
隨著數(shù)字電路系統(tǒng)設(shè)計(jì)復(fù)雜性的增加,一個(gè)系統(tǒng)中存在多個(gè)時(shí)鐘域,而信號(hào)在不同的時(shí)鐘域之間進(jìn)行傳遞時(shí)會(huì)帶來由跨時(shí)鐘域引起的亞穩(wěn)態(tài),從而導(dǎo)致對(duì)下一級(jí)邏輯電路的影響。本文論述了在基于FPGA的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)中對(duì)跨時(shí)鐘域信號(hào)處理的幾種方式,從而盡可能的保證了信號(hào)在跨時(shí)鐘域設(shè)計(jì)中的穩(wěn)定性。
數(shù)字電路 跨時(shí)鐘域 FPGA 亞穩(wěn)態(tài)
隨著數(shù)字電路設(shè)計(jì)復(fù)雜度的提高,設(shè)計(jì)中存在多個(gè)時(shí)鐘域變得越來越普遍。由于多時(shí)鐘的異步系統(tǒng)內(nèi)含有多個(gè)時(shí)鐘源的頻率和相位存在差異,當(dāng)信號(hào)跨時(shí)鐘域時(shí)就可能違背建立時(shí)間和保持時(shí)間的要求,出現(xiàn)亞穩(wěn)態(tài)的現(xiàn)象。數(shù)字設(shè)計(jì)中沒有EDA工具能夠智能的去考慮和解決電路中的跨時(shí)鐘域引起的亞穩(wěn)態(tài)問題,而需要工程師了解可靠性設(shè)計(jì)從而減小電路中跨時(shí)鐘域同步失敗的危險(xiǎn)??鐣r(shí)鐘域同步問題可以分為兩類:一是信號(hào)的跨時(shí)鐘域同步;二是數(shù)據(jù)的跨時(shí)鐘域同步。在該數(shù)據(jù)采集系統(tǒng)中存在大量的跨時(shí)鐘域設(shè)計(jì),本文重點(diǎn)討論信號(hào)的跨時(shí)鐘域同步問題。
在數(shù)字電路中,觸發(fā)器正常工作必須滿足保持時(shí)間(Hold time)和建立時(shí)間(Setup time)。保持時(shí)間指在時(shí)鐘沿之后,信號(hào)必須保持穩(wěn)定的時(shí)間。建立時(shí)間指在時(shí)鐘沿到來之前,觸發(fā)器輸入信號(hào)必須保持穩(wěn)定的時(shí)間。因此,要使一個(gè)信號(hào)正確進(jìn)入觸發(fā)器,信號(hào)就必須滿足建立時(shí)間與保持時(shí)間的規(guī)則,如果輸入信號(hào)不滿足,觸發(fā)器的輸出信號(hào)則會(huì)進(jìn)入亞穩(wěn)態(tài)。
信號(hào)同步的目的是防止新時(shí)鐘域中第一級(jí)觸發(fā)器的亞穩(wěn)態(tài)信號(hào)對(duì)下一級(jí)邏輯造成影響。簡單的同步由兩個(gè)觸發(fā)器串聯(lián)而成,中間沒有其他組合電路。這種設(shè)計(jì)可以保證后面的觸發(fā)器獲得前一個(gè)觸發(fā)器輸出時(shí),前一個(gè)觸發(fā)器已退出了亞穩(wěn)態(tài),并且輸出已穩(wěn)定。設(shè)計(jì)中要注意將兩個(gè)觸發(fā)器放得盡可能近,以確保兩者間有最小的時(shí)滯(clock skew)。在信號(hào)的跨時(shí)鐘域設(shè)計(jì)中主要有三種類型:
①電平同步。電平同步適合用于信號(hào)從低時(shí)鐘域到高時(shí)鐘域的同步,跨時(shí)鐘域的信號(hào)在新時(shí)鐘域中要保持高電平或低電平兩個(gè)時(shí)鐘周期以上。這種電路的要求是,在再次成為有效信號(hào)前,信號(hào)需要先變成無效狀態(tài)。每一次信號(hào)有效時(shí),接收邏輯都會(huì)把它看作一個(gè)單個(gè)事件,而不管信號(hào)的有效狀態(tài)保持了多久。
②邊沿檢測同步。邊沿檢測同步器在電平同步器的輸出端增加了一個(gè)觸發(fā)器,新增觸發(fā)器的輸出經(jīng)反相后和電平同步器的輸出進(jìn)行與操作。這一電路會(huì)檢測同步器輸入的上升沿,產(chǎn)生一個(gè)與時(shí)鐘周期等寬、高電平有效的脈沖。如果將與門的兩個(gè)輸入端交換使用,就可以構(gòu)成一個(gè)檢測輸入信號(hào)下降沿的同步器。
③脈沖同步。脈沖同步器的輸入信號(hào)是一個(gè)單時(shí)鐘寬度脈沖,它觸發(fā)原時(shí)鐘域中的一個(gè)翻轉(zhuǎn)電路。每當(dāng)翻轉(zhuǎn)電路接收到一個(gè)脈沖時(shí),它就會(huì)在高、低電平間進(jìn)行轉(zhuǎn)換,然后通過電平同步器到達(dá)異或門的一個(gè)輸入端,而另一個(gè)信號(hào)經(jīng)一個(gè)時(shí)鐘周期的延遲進(jìn)入異或門的另一端。
在FPGA的數(shù)據(jù)采集系統(tǒng)中,由于MCU工作的時(shí)鐘頻率是USB提供的30MHz,而IF模塊邏輯工作在DDR2控制器提供的125MHz頻率下,同時(shí)數(shù)據(jù)采集輸入輸出接口時(shí)鐘為62.5MHz和50MHz。因此MCU與IF模塊之間的控制信號(hào)存在跨時(shí)鐘域的問題,即xx_begin信號(hào)是從MCU的時(shí)鐘域到DDR2的時(shí)鐘域,而xx_ done信號(hào)恰好相反。在本系統(tǒng)設(shè)計(jì)的過程中xx_begin信號(hào)電平同步設(shè)計(jì),而xx_done信號(hào)脈沖同步設(shè)計(jì)。
在多時(shí)鐘域系統(tǒng)設(shè)計(jì)中,跨時(shí)鐘域信號(hào)的處理關(guān)系到系統(tǒng)設(shè)計(jì)的穩(wěn)定性,如何有效的避免信號(hào)在跨時(shí)鐘域時(shí)引起的亞穩(wěn)態(tài)是現(xiàn)代大規(guī)模復(fù)雜數(shù)字電路和FPGA系統(tǒng)設(shè)計(jì)的難點(diǎn)和重點(diǎn)。
本文通過在基于FPGA數(shù)據(jù)采集系統(tǒng)中的實(shí)踐表明,文中所述的三種時(shí)鐘域電路能夠有效處理信號(hào)跨時(shí)鐘域傳遞的問題。但是在實(shí)際使用的過程中要結(jié)合三種電路的應(yīng)用范圍和限制,以及結(jié)合實(shí)際設(shè)計(jì)與實(shí)際需求來選擇。
[1]Paradigm Works Inc.Crossing the abyss-asynchronous signal in a synchronous world.
[2]鄒晨 ZOU Chen. FPGA設(shè)計(jì)中跨時(shí)鐘域信號(hào)同步方法. 航空計(jì)算技術(shù) 2014[4]
[3]吳小蕻.跨時(shí)鐘域若干問題的研究同步與亞穩(wěn)態(tài)[D].合肥:中國科學(xué)技術(shù)大學(xué),2008
[4]廖艷,王廣君,高楊.FPGA異步時(shí)鐘設(shè)計(jì)中的同步策略[J].自動(dòng)化技術(shù)與用,2006,25(1):67-68
[5]Xilinx Virtex-5 User Guide [M]. Xilinx Inc., 2008
[6]Xilinx Memory Interface Generator(MIG) User Guide[M]. Xilinx Inc., 2008
[7]Xilinx Inc.Constraints Guide.Release 10.1
劉勇(1983-),男,漢族,重慶沙坪壩人,重慶電子工程職業(yè)學(xué)院應(yīng)用電子學(xué)院,講師。