同步與異步復(fù)位以及相關(guān)的亞穩(wěn)態(tài)狀況與設(shè)計可靠性
異步復(fù)位 相比 同步 復(fù)位:
1. 通常情況下(已知復(fù)位信號與時鐘的關(guān)系),最大的缺點在于異步復(fù)位導(dǎo)致設(shè)計變成了異步時序電路,如果復(fù)位信號出現(xiàn)毛刺,將會導(dǎo)致觸發(fā)器的誤動作,影響設(shè)計的穩(wěn)定性。
2. 同時,如果復(fù)位信號與時鐘關(guān)系不確定,將會導(dǎo)致 亞穩(wěn)態(tài) 情況的出現(xiàn)。下面先給出一個例子,然后就亞穩(wěn)態(tài)進行重點討論。
Figure 1 shows an asynchronous race condition where a cLOCk signal is used to reset aflip-flop. When SIG2 is low, the flip-flop is reset to a low state. On the rising edge of SIG2, the designer wants the output to change to the high state of SIG1. Unfortunately, since we don’t know the exact internal timing of the flip-flop or the routing delay of the signal to the clock versus the reset input, weCANnot know whICh signal will arrive first - the clock or the reset. This is a race condition. the clock rising edge appears first, the output will remain low. If the reset signal appears first, the output will go high. A slight change in temperature, voltage, or process may cause an ASIC that works correctly to suddenly work incorrectly.
亞穩(wěn)態(tài)的定義(說明):
在 Howard Johnson 的《High Speed Digital Design: A Handbook of Black Magic》一書中,專門就邏輯電路的亞穩(wěn)態(tài)作了專門的分析。由于 timing margine 不夠,電路的輸入沒有能夠上到所需要的邏輯電平高度,導(dǎo)致邏輯器內(nèi)部不得不花費額外的時間使得輸出達(dá)到所需的穩(wěn)定邏輯狀態(tài),這個額外的時間,我們也叫作決斷時間(resolution time)。在 Johnson舉的例子里,邏輯器件的邏輯電平是用電容來維持的,如果時序不夠,就好像給電容充電不足。
Howard Johnson 在書中(P123 頁-3.11.2)用一個 flip-flop 的例子來說明亞穩(wěn)態(tài)(metastable behavior)。
書中用一個 amplifier,兩個 switch,一個電容來模擬 flip-flop 的工作狀態(tài)。電容用來保存電路的邏輯電平,兩個 switch 狀態(tài)的改變可以模擬數(shù)據(jù)的輸入和 flip-flop 的工作狀態(tài)。在flip-flop開始翻轉(zhuǎn)之前,輸入數(shù)據(jù)的邏輯電平存儲在電容里,然后flip-flop通過一個switch S1斷開與輸入端的連接,同時通過 amplifier(帶有一個正反饋環(huán))開始進行內(nèi)部的翻轉(zhuǎn)機制。
從輸入端 switch S1斷開,和正反饋環(huán)上的 switch S2閉合開始,amplifier 就處于一個冪指數(shù)形式的中間態(tài),或者說是不穩(wěn)定態(tài)(形象地說就是“工作中”),可以用如下式子表達(dá):
V(out)=V(in)exp[kt]。
其中 V(in)表示輸入邏輯的電平,V(out)表示輸出的邏輯電平。k 是一個時間常數(shù),它和 amplifier 的帶寬以及正反饋環(huán)路有關(guān)。
我們看到,如果 flip-flop 在用電容對輸入電壓采樣的時間過短,也就是所謂的時序不夠,就會導(dǎo)致 V(in)的值很小,對于 flip-flop 就需要花很長的時間使得輸出邏輯 V(out)達(dá)到標(biāo)準(zhǔn)電平,也就是說電路處于中間態(tài)的時間變長,使得電路“反應(yīng)”變遲鈍。這就是我們所說的“亞穩(wěn)態(tài)”。
從 Johnoson 的一系列試驗可以看出,隨著 timing margine 不足程度的加深,邏輯電路“反應(yīng)”會越來越慢,當(dāng)超過一定的極限時候,邏輯電路就沒有輸出。
可以說,電路亞穩(wěn)態(tài)的存在,會給時序設(shè)計帶來很多連鎖反應(yīng)。因此 ,對于高速邏輯電路的設(shè)計,充分的 timing margine 是必需的。
以上是個人的一點體會心得,相關(guān)的理論分析和實例可以參閱 Howard Johnson的書。
亞穩(wěn)態(tài) 在設(shè)計中的問題分析
1. 亞穩(wěn)態(tài)與 設(shè)計可靠性
設(shè)計數(shù)字電路時大家都知道 同步 是非常重要的,特別當(dāng)要輸入一個信號到一個同步電路中,但是該信號由另一個時鐘驅(qū)動時,這是要在接口處采取一些措施,使輸入的異步信號同步化,否則電路將無法正常工作,因為輸入端很可能出現(xiàn)亞穩(wěn)態(tài)(Metastability),導(dǎo)致采樣錯誤。這里我們對亞穩(wěn)態(tài)的起因、危害、對可靠性的影響和消除仿真做一些介紹。
2. 亞穩(wěn)態(tài)發(fā)生的原因
在同步系統(tǒng)中,如果觸發(fā)器的 setup time / hold time 不滿足,就可能產(chǎn)生亞穩(wěn)態(tài),此時觸發(fā)器輸出端 Q 在有效時鐘沿之后比較長的一段時間處于不確定的狀態(tài),在這段時間里 Q 端會出現(xiàn)毛刺、振蕩、或固定在某一電壓值,而不一定等于數(shù)據(jù)輸入端 D 的值。這段之間稱為決斷時間(resolution time)。經(jīng)過 resolution time 之后 Q端將穩(wěn)定到 0 或1上,但是究竟是0 還是 1,這是隨機的,與輸入沒有必然的關(guān)系。亞穩(wěn)態(tài)實質(zhì)是介于”0””1”電平之間的一個狀態(tài)。亞穩(wěn)態(tài)是 FF的一個固有特性。正常采樣也會有一個亞穩(wěn)態(tài)時間。當(dāng)建立保持時間滿足時,F(xiàn)F 在經(jīng)歷采樣、亞穩(wěn)態(tài)后,進入一個正確的狀態(tài)。如果建立保持時間不滿足,那么FF會有一個相當(dāng)長的亞穩(wěn)態(tài)時間,最后隨機進入一個固定態(tài)。
3. 亞穩(wěn)態(tài)的危害
由于輸出在穩(wěn)定下來之前可能是毛刺、振蕩、固定的某一電壓值,因此亞穩(wěn)態(tài)除了導(dǎo)致邏輯誤判之外,輸出 0~1 之間的中間電壓值還會使下一級產(chǎn)生亞穩(wěn)態(tài),即導(dǎo)致 meta. stability的傳播。邏輯誤判(由于組合邏輯的 race,導(dǎo)致總線狀態(tài)的不穩(wěn)定)有可能通過電路的特殊設(shè)計減輕危害(如異步 FIFO中 Gray碼計數(shù)器的作用,一次只變化一位),而亞穩(wěn)態(tài)的傳播則擴大了故障面,難以處理。
4. 亞穩(wěn)態(tài)的簡單解決辦法
只要系統(tǒng)中有異步元件,亞穩(wěn)態(tài)就是無法避免的,因此設(shè)計的電路首先要減少亞穩(wěn)態(tài)導(dǎo)致錯誤的發(fā)生,其次要使系統(tǒng)對產(chǎn)生的錯誤不敏感。前者要靠同步來實現(xiàn),而后者根據(jù)不同的設(shè)計應(yīng)用有不同的處理辦法。用同步來減少亞穩(wěn)態(tài)發(fā)生機會的典型電路如圖 1 所示。
圖 1 兩級同步化電路
在圖 1 中,左邊為異步輸入端,經(jīng)過兩級觸發(fā)器同步,在右邊的輸出將是同步的,而且該輸出基本不存在亞穩(wěn)態(tài)。其原理是即使第一個觸發(fā)器的輸出端存在亞穩(wěn)態(tài),經(jīng)過一個 CLK周期后,第二個觸發(fā)器 D 端的電平仍未穩(wěn)定的概率非常小,因此第二個觸發(fā)器 Q 端基本不會產(chǎn)生亞穩(wěn)態(tài)。
注意,這里說的是“基本”,也就是無法“根除”,那么如果第二個觸發(fā)器 Q出現(xiàn)了亞穩(wěn)態(tài)會有什么后果呢?后果的嚴(yán)重程度是由你的設(shè)計決定的,如果系統(tǒng)對產(chǎn)生的錯誤不敏感,那么系統(tǒng)可能正常工作,或者經(jīng)過短暫的異常之后可以恢復(fù)正常工作,例如設(shè)計異步 FIFO時使用格雷碼計數(shù)器當(dāng)讀寫地址的指針就是處于這方面的考慮。如果設(shè)計上沒有考慮如何降低系統(tǒng)對亞穩(wěn)態(tài)的敏感程度,那么一旦出現(xiàn)亞穩(wěn)態(tài),系統(tǒng)可能就崩潰了。
5. 亞穩(wěn)態(tài)與系統(tǒng)可靠性
使用同步電路以后,亞穩(wěn)態(tài)仍然有發(fā)生的可能,與此相連的是平均故障間隔時間MTBF(mean time between failure),亞穩(wěn)態(tài)的發(fā)生概率與時鐘頻率無關(guān),但是 MTBF與時鐘有密切關(guān)系。 有文章提供了一個例子,某一系統(tǒng)在 20MHz時鐘下工作時,MTBF約為 50年,但是時鐘頻率提高到 40MHz 時,MTBF 只有 1 分鐘!可見降低時鐘頻率可以大大減小亞穩(wěn)態(tài)導(dǎo)致系統(tǒng)錯誤的出現(xiàn),其原因在于,時鐘周期如果盡可能的大于 resolution time 可減小亞穩(wěn)態(tài)傳遞到下一級的機會,提高系統(tǒng)的 MTBF,如圖 2 所示。
6. 總結(jié)
亞穩(wěn)態(tài)與設(shè)計可靠性有非常密切的關(guān)系,當(dāng)前對很多設(shè)計來說,實現(xiàn)需要的功能并不困難,難的是提高系統(tǒng)的穩(wěn)定性、可靠性,較小亞穩(wěn)態(tài)發(fā)生的概率,并降低系統(tǒng)對亞穩(wěn)態(tài)錯誤的敏感程度可以提高系統(tǒng)的可靠性。
7. Cures for metastability(摘自 johnson 所書)
* 用反應(yīng)更快的flip-Flop,減少 metastability window。
* 如圖一,引入由同一時鐘驅(qū)動的串接 DFF。
* 降低采樣頻率,給 DFF 更多的時間避開 met astability window( 亞穩(wěn)態(tài) 時間)。
* 使用邊沿變化快速的時鐘信號。
減少亞穩(wěn)態(tài)出現(xiàn)的關(guān)鍵是器件使用比較好的工藝和時鐘周期的余量大一些。好器件工藝的 resolution time會比較短,例如傳統(tǒng)的 TTL電路中,高速的 74F系列就比74LS好;時鐘頻率低一些,出現(xiàn)亞穩(wěn)態(tài)時提供給輸出穩(wěn)定的時間也會多一些,這樣可以減小亞穩(wěn)態(tài)傳播的機會。 同步 系統(tǒng)也存在亞穩(wěn)態(tài),但是相比異步系統(tǒng)來說,比較容易控制,只要 setup/hold time滿足就可以,而對異步系統(tǒng),這個簡單的要求也不容易滿足,這也是同步系統(tǒng)的優(yōu)點之一。
問題解答:
處理異步輸入時,可以使用 2級同步電路,為什么不用 3級或更多級別的電路呢?
答:2級從理論或?qū)嶋H使用都表明有足夠的可靠性了,所以 3級沒有必要。
解釋為什么第二個觸發(fā)器D端的電平仍未穩(wěn)定的概率非常小:
如果一個時鐘周期>resolution time,即:使上一級寄存器有足夠的時間擺脫亞穩(wěn)態(tài)(滿足了建立時間要求),但如果上一級 DFF 采樣錯誤,那么下級 DFF 同樣繼承這個采樣錯誤值,只是不會出現(xiàn)亞穩(wěn)態(tài),杜絕了亞穩(wěn)態(tài)的傳遞。如果要穩(wěn)定的正確采樣,必須引入高速時鐘,
時鐘頻率為原數(shù)據(jù)頻率的 3 倍以上,根據(jù)奈奎斯特采樣定理需要兩倍。