一、介紹
在同步系統(tǒng)中,數(shù)據(jù)始終相對于時(shí)鐘具有固定的關(guān)系 當(dāng)該關(guān)系滿足設(shè)備的建立和保持要求時(shí),輸出將在其指定的傳播延遲時(shí)間內(nèi)進(jìn)入有效狀態(tài)。在同步系統(tǒng)中,輸入信號始終滿足觸發(fā)器的時(shí)序要求。因此,不會發(fā)生亞穩(wěn)性。但是,在異步系統(tǒng)中,數(shù)據(jù)和時(shí)鐘之間的關(guān)系不是固定的。因此,會偶爾發(fā)生違反建立時(shí)間和保持時(shí)序的情況。發(fā)生這種建立和保持時(shí)序的情況時(shí),輸出可能會到達(dá)其兩個(gè)有效狀態(tài)(0和1)之間的中間水平,不穩(wěn)定的狀態(tài)(0和1之外的狀態(tài)即亞穩(wěn)態(tài))保持的時(shí)間也是不確定的,直到自己進(jìn)入穩(wěn)態(tài)。
二、亞穩(wěn)態(tài)理論
由于違反了觸發(fā)器的建立和保持時(shí)間,因此會產(chǎn)生亞穩(wěn)定性。在任何設(shè)計(jì)中使用的每個(gè)觸發(fā)器都有指定的建立和保持時(shí)間,或者說是在時(shí)鐘上升沿之前和之后不允許輸入數(shù)據(jù)變化的時(shí)間。如果信號在此時(shí)間窗口內(nèi)確實(shí)發(fā)生變化,則輸出將是未知的或“亞穩(wěn)的”。這種有害狀態(tài)的傳播稱為亞穩(wěn)態(tài)。結(jié)果,觸發(fā)器的輸出會產(chǎn)生毛刺或暫時(shí)保持在亞穩(wěn)狀態(tài),因此需要更長的時(shí)間才能返回到穩(wěn)定狀態(tài)。
當(dāng)觸發(fā)器處于亞穩(wěn)態(tài)時(shí),輸出會在高電平和低電平之間徘徊,導(dǎo)致輸出轉(zhuǎn)換被延遲,并超過指定的時(shí)鐘到輸出延遲(tco)。亞穩(wěn)態(tài)輸出需要花費(fèi)超過tco的額外時(shí)間才能解析為穩(wěn)定狀態(tài),該時(shí)間稱為穩(wěn)定時(shí)間(tMET)。
圖1.1亞穩(wěn)時(shí)序參數(shù)
這已在圖1.1中顯示,但并非每個(gè)違反建立或保持時(shí)間的轉(zhuǎn)換(數(shù)據(jù)轉(zhuǎn)換)都會導(dǎo)致亞穩(wěn)態(tài)輸出。觸發(fā)器進(jìn)入亞穩(wěn)態(tài)的可能性和返回穩(wěn)定狀態(tài)所需的時(shí)間取決于用于制造器件的工藝技術(shù)以及環(huán)境條件。通常,觸發(fā)器將在一兩個(gè)時(shí)鐘周期內(nèi)返回穩(wěn)定狀態(tài)。
觸發(fā)器的操作類似于在無摩擦的山坡上滾動的球,如圖1.2所示。小山的每一側(cè)代表穩(wěn)定狀態(tài)(即高或低),頂部代表亞穩(wěn)態(tài)。假設(shè)球處于穩(wěn)定狀態(tài)(即1或0),并且對球進(jìn)行了足夠的推動(狀態(tài)轉(zhuǎn)換)(沒有違反建立時(shí)間或保持時(shí)間),足以使球越過另一個(gè)穩(wěn)定狀態(tài),則球在指定時(shí)間內(nèi)越過另一個(gè)穩(wěn)定狀態(tài)。
但是,如果推力較小(即違反建立和保持時(shí)間),則球應(yīng)移動到山頂(即輸出亞穩(wěn)態(tài)),停留在那里一段時(shí)間,然后返回任一穩(wěn)定狀態(tài)(即輸出最終變得穩(wěn)定)。球也可能會部分升起然后回來(即輸出可能會產(chǎn)生一些毛刺)。任何一種情況都會增加從時(shí)鐘轉(zhuǎn)換到穩(wěn)定輸出的延遲。
因此,簡單來說,當(dāng)信號在一個(gè)時(shí)鐘域(src_data_out)中發(fā)生變化并在另一個(gè)時(shí)鐘域(dest_data_in)中被采樣時(shí),這將導(dǎo)致輸出變得亞穩(wěn)。這被稱為同步失敗(如圖1.3所示)。
圖1.2觸發(fā)器的亞穩(wěn)態(tài)行為
圖1.3觸發(fā)器中的亞穩(wěn)態(tài)
三、亞穩(wěn)態(tài)窗口
亞穩(wěn)態(tài)窗口被定義為特定的時(shí)間長度,在此期間數(shù)據(jù)和時(shí)鐘均不應(yīng)更改。如果兩個(gè)信號有發(fā)生改變,則輸出可能變?yōu)閬喎€(wěn)態(tài)。如圖1.4所示,建立時(shí)間和保持時(shí)間的組合決定了亞穩(wěn)窗口的寬度。窗口越大,設(shè)備進(jìn)入亞穩(wěn)態(tài)的機(jī)會就越大。在大多數(shù)情況下,較新的邏輯系列具有較小的亞穩(wěn)態(tài)窗口,從而減少了設(shè)備變?yōu)閬喎€(wěn)的機(jī)會。
四、計(jì)算MTBF
系統(tǒng)之間的平均故障間隔時(shí)間(MTBF)是在故障率恒定的特殊情況下故障率的倒數(shù)。這提供了有關(guān)特定觸發(fā)器失敗頻率的信息。對于具有給定時(shí)鐘頻率和異步數(shù)據(jù)邊沿的單級同步器,該邊沿在時(shí)鐘周期內(nèi)具有均勻的概率密度,通過建立和保持時(shí)間窗口與時(shí)鐘邊沿之間的時(shí)間之比,再乘以數(shù)據(jù)邊沿頻率,可以計(jì)算出亞穩(wěn)態(tài)事件的發(fā)生率。
五、避免亞穩(wěn)態(tài)
如第二節(jié)所示,只要違反建立或保持時(shí)間,就會發(fā)生亞穩(wěn)。因此,在以下情況下,信號可能會違反時(shí)序要求:
1、當(dāng)輸入信號是異步信號時(shí)。
2、當(dāng)時(shí)鐘偏斜/偏擺(上升/下降時(shí)間)高于容許極限時(shí)。
3、當(dāng)信號越過工作在兩個(gè)不同頻率或頻率相同但相位和偏斜不同的域時(shí)。
4、當(dāng)組合延遲使得觸發(fā)器數(shù)據(jù)輸入在亞穩(wěn)態(tài)窗口中發(fā)生變化時(shí)
亞穩(wěn)定性可能會導(dǎo)致過度的傳播延遲和后續(xù)的系統(tǒng)故障。所有觸發(fā)器和鎖存器均具有亞穩(wěn)性。這個(gè)問題無法消除。但是有可能降低亞穩(wěn)態(tài)的發(fā)生率
在最簡單的情況下,設(shè)計(jì)人員可以通過讓時(shí)鐘周期足夠長以解決準(zhǔn)穩(wěn)態(tài)以及減少路徑中可能傳播到下一個(gè)觸發(fā)器中的任何延遲邏輯來避免亞穩(wěn)態(tài)??紤]到大多數(shù)現(xiàn)代設(shè)計(jì)的性能要求,這種方法雖然簡單,卻并不實(shí)用。另一種方法是使用同步器。
5.1使用多級同步器
避免亞穩(wěn)態(tài)的最常見方法是在一個(gè)時(shí)鐘域到另一個(gè)時(shí)鐘域的信號上添加一個(gè)或多個(gè)同步觸發(fā)器。如圖1.6所示,這種方法為第一個(gè)同步觸發(fā)器中的亞穩(wěn)態(tài)事件提供了一個(gè)完整的時(shí)鐘周期(第二個(gè)觸發(fā)器的建立時(shí)間除外)以解決自身問題。但是,這確實(shí)增加了同步邏輯觀察輸入的等待時(shí)間。
5.2使用時(shí)鐘升壓電路的多級同步器
多級同步器的一個(gè)限制是系統(tǒng)響應(yīng)異步輸入所花費(fèi)的時(shí)間更長。解決此問題的方法是使用時(shí)鐘倍頻器的輸出為兩個(gè)同步觸發(fā)器提供時(shí)鐘。Altera的FPGA將這種技術(shù)稱為Clock Boost或Clock Doubler(圖1.7)。
這種方法允許系統(tǒng)在一個(gè)系統(tǒng)時(shí)鐘周期內(nèi)響應(yīng)異步輸入,同時(shí)仍能改善MTBF。盡管Clock Boost時(shí)鐘可能會降低MTBF,但這種影響遠(yuǎn)不止于兩個(gè)同步觸發(fā)器的抵消。這兩種方法都不能保證亞穩(wěn)性不能通過同步器。它們只是降低了亞穩(wěn)發(fā)生的可能性。
六、亞穩(wěn)測試電路
每當(dāng)觸發(fā)器對異步輸入進(jìn)行采樣時(shí),小概率的不可預(yù)測延遲總會在觸發(fā)器輸出端呈現(xiàn)出來。這不僅發(fā)生在輸入轉(zhuǎn)換違反建立和保持時(shí)間規(guī)范時(shí),而且還發(fā)生在觸發(fā)器接收新數(shù)據(jù)時(shí)的小的時(shí)序窗口,在這些情況下,觸發(fā)器會進(jìn)入亞穩(wěn)態(tài)。
圖1.8中描述的測試電路用于確定觸發(fā)器的亞穩(wěn)特性。圖1.8顯示了在時(shí)鐘“ clk”的上升沿觸發(fā)的觸發(fā)器“ FFA”的異步輸入“ async_In”。如圖所示,觸發(fā)器“ FFB”和“ FFC”均在時(shí)鐘的下降沿觸發(fā),以便捕獲“ FFA”上的亞穩(wěn)事件。
當(dāng)互補(bǔ)信號在觸發(fā)器“ FFB”和“ FFC”的輸入上傳遞時(shí),無論何時(shí)“ FFA”上發(fā)生亞穩(wěn)態(tài)事件,XNOR門的輸出都將變?yōu)楦唠娖?。此條件在觸發(fā)器“ FFD”的輸出上捕獲,指示已檢測到亞穩(wěn)態(tài)事件。
七、同步器類型
根據(jù)等式 1.1,具有異步輸入的電路的平均故障間隔時(shí)間(MTBF)與可從亞穩(wěn)態(tài)條件恢復(fù)的時(shí)間呈指數(shù)關(guān)系。使用同步器創(chuàng)建時(shí)間緩沖區(qū),以從亞穩(wěn)態(tài)事件中恢復(fù)。
請注意,異步信號絕不能由多個(gè)同步器同步。(這樣做會冒著使多個(gè)同步器的輸出產(chǎn)生不同信號的風(fēng)險(xiǎn))。本節(jié)顯示了兩個(gè)同步器方案A和B。
方案A是常規(guī)方案,當(dāng)異步輸入信號的寬度大于時(shí)鐘周期時(shí),其工作效果最佳(圖1.10)。
請注意,即使異步輸入在設(shè)置間隔之外達(dá)到穩(wěn)定條件,它仍將以兩個(gè)時(shí)鐘周期的延遲進(jìn)行計(jì)時(shí),否則FF1可能會進(jìn)入亞穩(wěn)態(tài)。
如果亞穩(wěn)在少于一個(gè)時(shí)鐘周期內(nèi)得到解決,則FF2將具有穩(wěn)定的輸入,否則需要更深的級聯(lián),如圖1.6所示。
但是,在異步輸入的寬度小于時(shí)鐘周期的情況下,方案A不起作用。在這種情況下,方案B的工作效果最佳,如圖1.11所示。
請注意,在同步器方案B的情況下,第一個(gè)FF(觸發(fā)器)的D輸入連接到VCC,而異步輸入為FF提供時(shí)鐘。該階段中的其他兩個(gè)FF由系統(tǒng)時(shí)鐘或clk直接提供時(shí)鐘。短脈沖將驅(qū)動q1高電平,該信號將在兩個(gè)“clk”邊沿之后傳播到sync_out。因此,這定義了我們的經(jīng)驗(yàn)法則,總結(jié)如下:
當(dāng)信號必須跨越時(shí)鐘域之間的邊界時(shí),請使用同步器。
如果Clk1<Clk2在時(shí)鐘域2的輸入處使用同步器方案A(如圖1.11所示),否則使用同步器方案B。
八、處理亞穩(wěn)態(tài)的建議
(a)使用同步器。
(b)使用更快的觸發(fā)器(更窄的亞穩(wěn)態(tài)窗口TW)。
(c)使用亞穩(wěn)態(tài)硬化觸發(fā)器(專為非常高的帶寬和減少的采樣時(shí)間而設(shè)計(jì),并針對時(shí)鐘域輸入電路進(jìn)行了優(yōu)化)。
(d)級聯(lián)觸發(fā)器作為同步器(兩個(gè)或更多),如圖1.6所示。一串N個(gè)觸發(fā)器的概率為PN(P的N次方),其中P是一個(gè)觸發(fā)器發(fā)生亞穩(wěn)態(tài)故障的機(jī)會。
(e)降低采樣率。
(f)避免輸入dV/dt低的信號