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