摘 要:本文提出了多時鐘域邏輯設計中的一般問題,介紹了異步電路設計中同步化處理的重要作用,分析了觸發(fā)器失效的原因和幾種可行的解決亞穩(wěn)態(tài)失效的方法。
關鍵詞:多時鐘域;異步電路;亞穩(wěn)態(tài);同步器
引言
在數(shù)字電路設計中,大部分設計都是同步時序設計,所有的觸發(fā)器都是在同一個時鐘節(jié)拍下進行翻轉。這樣就簡化了整個設計,后端綜合、布局布線的時序約束也不用非常嚴格。但是在設計與外部設備的接口部分時,大部分外部輸入的信號與本地時鐘是異步的。在SoC設計中,可能同時存在幾個時鐘域,信號的輸出驅動和輸入采樣在不同的時鐘節(jié)拍下進行,可能會出現(xiàn)一些不穩(wěn)定的現(xiàn)象。本文分析了在跨時鐘域信號傳遞時可能會遇見的問題,并介紹了幾種處理異步時鐘域接口的方法。
圖1 多時鐘域的信號傳遞
圖2 異步信號傳輸通過不同路徑
圖3 同步器的構建和使用
圖4 兩級采樣的同步器
圖5 一級采樣的同步器故障
圖6 兩級采樣的同步器
亞穩(wěn)態(tài)
當觸發(fā)器的建立時間和保持時間要求沒有得到滿足時,觸發(fā)器就會進入一個界于邏輯1和邏輯0之間的第三種狀態(tài),即亞穩(wěn)態(tài)。
理想的觸發(fā)器是在時鐘邊沿到達的那個時刻采樣數(shù)據(jù)。但是在實際電路中,時鐘的跳變具有一定的斜率,電路采樣、保存、傳遞數(shù)據(jù)也需要一定的時間。如果在數(shù)據(jù)還未穩(wěn)定時進行采樣,就可能會導致亞穩(wěn)態(tài)的發(fā)生。
平均無故障時間MTBF(Mean time between failures)是指任意兩次故障出現(xiàn)的間隔時間的期望值。一個系統(tǒng)亞穩(wěn)態(tài)的MTBF是和系統(tǒng)頻率、器件速度相關的指數(shù)函數(shù):
公式中的tr是有效的亞穩(wěn)態(tài)最大分辨時間,是指觸發(fā)器能夠保持亞穩(wěn)態(tài)輸出,并不會引起故障的時間。f是觸發(fā)器的時鐘頻率。是異步輸入每秒變化的次數(shù)。To和是由觸發(fā)器的電氣特性決定的參數(shù),可用于表征觸發(fā)器翻轉速度的快慢。增加tr,或者減小To、、或f都可以加大MTBF,即使兩次故障出現(xiàn)的時間間隔加大。但在一般情況下,系統(tǒng)中的tr和f是固定的,故只能通過減小To、t或a來改善系統(tǒng)。降低輸入信號的變化頻率a可以滿足建立時間和保持時間的要求。而To、t是器件的固有性質,只有用速度更快的器件才能減小它們。
多時鐘域下同步器的設計與分析
當在某個時鐘邊沿采樣一個變化的數(shù)據(jù)信號時,時鐘邊沿和數(shù)據(jù)變化這兩個事件出現(xiàn)的先后順序將決定結果。這兩個事件出現(xiàn)先后的差異越小,判斷哪個事件先到來所花的時間就越多。當兩個事件到來太接近時,就會使判決所花的時間超過規(guī)定的分辨時間,從而導致故障發(fā)生。
異步信號傳輸?shù)膯栴}分析
如果信號跨越不同的時鐘域,就有可能會出現(xiàn)不滿足建立時間和保持時間的情況。如圖1所示,信號A經(jīng)過組合邏輯傳遞到模塊B中的觸發(fā)器,若信號A到達時間與模塊B的時鐘邊沿非常接近,模塊B中的觸發(fā)器就會工作在不確定的亞穩(wěn)態(tài)。如果這個亞穩(wěn)態(tài)持續(xù)了一個周期,就會影響到下一級的觸發(fā)器,最終產(chǎn)生連鎖反應,使整個芯片的功能發(fā)生混亂。
另外一種可能出現(xiàn)的現(xiàn)象如圖2所示,由于在實際電路中存在延時,圖中采樣同一個異步信號的兩個D觸發(fā)器無法按理想狀況接收到時鐘信號和輸入信號。因此,當異步輸入在時鐘邊沿發(fā)生變化時,會出現(xiàn)在一段時間內,兩個觸發(fā)器的輸出值SYN1和SYN2不一致的情況。這種不一致將會導致系統(tǒng)出現(xiàn)不正確的操作。
另外,圖2中組合邏輯電路中的不同通路不可避免的具有不同的延時,因此,產(chǎn)生不一致結果的可能性就更大,這種情況在有異步信號輸入的狀態(tài)機里特別普遍。例如,某個VME總線接口芯片,用于完成VME總線時序到MC6000系列CPU時序的轉換。CPU時鐘是50MHz,VME總線系統(tǒng)的時鐘是64MHz。VME總線是異步總線,存在很多跨越時域的握手信號,如果不使用同步器對與狀態(tài)機的狀態(tài)變量相關的信號進行同步化處理,就會出現(xiàn)故障。
同步器在多時鐘域設計中的應用
同步器的功能是采樣異步輸入信號,并使產(chǎn)生的輸出信號滿足同步系統(tǒng)的建立時間和保持時間的要求。簡單的同步器一般采用D觸發(fā)器來構成。圖3中,D觸發(fā)器的每一個時鐘觸發(fā)沿采樣異步輸入信號,并產(chǎn)生一個同步后的輸出信號。要構建更好的同步器可以采用更快速的觸發(fā)器,減小采樣保持時間,使器件能夠更快地采樣到信號;或者增加MTBF方程中的tr值,等信號穩(wěn)定后再采樣,這可以通過延時采樣來實現(xiàn)。
圖4為最常用的一種同步器,與一級同步相比,兩級同步能夠更可靠地避免亞穩(wěn)態(tài)的出現(xiàn),而三級以上同步器的效果并不能提高多少。
同步器故障分析
如果同步器的建立時間和保持時間得不到滿足,那么觸發(fā)器同樣會進入亞穩(wěn)態(tài)。這個亞穩(wěn)態(tài)通過不同的延時傳到組合邏輯中,一部分電路把這個信號識別為邏輯1,一部分又將其識別為邏輯0,也會導致系統(tǒng)邏輯的混亂。
下面將比較一下一級同步器和兩級采樣同步器的差異。
一級同步器如圖5所示,aclk時鐘域產(chǎn)生的信號adat的變化與bclk時鐘域時鐘的邊沿采樣太接近,未滿足采樣保持時間。同步器故障導致輸出出現(xiàn)亞穩(wěn)態(tài),且在下一個時鐘邊沿到來之前,不會變成穩(wěn)態(tài)。此輸出傳遞到后面的組合邏輯中,導致系統(tǒng)混亂。
兩級同步器如圖6所示,當?shù)谝患売|發(fā)器采樣異步輸入之后,允許輸出出現(xiàn)的亞穩(wěn)態(tài)可以長達一個周期,在這個周期內,亞穩(wěn)態(tài)特性減弱。在第二個時鐘沿到來時,第二級同步器采樣,之后才把該信號傳遞到內部邏輯中去。第二級輸出是穩(wěn)定且已被同步了的。如果在第二級采樣時第一級的輸出仍然處于很強的亞穩(wěn)態(tài),將會導致第二級同步器也進入亞穩(wěn)態(tài),但這種故障出現(xiàn)的概率比較小。
兩級同步器總體的故障概率是一級同步器故障概率的平方。例如,對74LS74系列器件來說, TO=0.4s,t=1.5ns,建立時間ts=20ns。設時鐘頻率為10MHz,則同步器分辨時間tr=80ns。若異步信號變化頻率a=100kHz,則一級同步器的平均無故障時間為:
兩級同步器的MTBF為[MTBF(80ns)]2=1.296×1023s。在大部分的同步化設計中,兩級同步器足以消除所有可能的亞穩(wěn)態(tài)了。
結語
在異步設計時,同步化和亞穩(wěn)態(tài)的問題是難以避免的。本文對該類問題做了較為詳細的分析。文中介紹的同步器解決亞穩(wěn)態(tài)和同步化的方案簡單、可行性較高,能夠滿足絕大部分的邏輯設計。