跨越鴻溝:同步世界中的異步信號
只有最初級的邏輯電路才使用單一的時鐘。大多數(shù)與數(shù)據(jù)傳輸相關的應用都有與生俱來的挑戰(zhàn),即跨越多個時鐘域的數(shù)據(jù)移動,例如磁盤控制器、CDROM/DVD 控制器、調制解調器、網卡以及網絡處理器等。當信號從一個時鐘域傳送到另一個時鐘域時,出現(xiàn)在新時鐘域的信號是異步信號。
本文引用地址:http://m.butianyuan.cn/article/268638.htm在現(xiàn)代 IC、ASIC 以及 FPGA 設計中,許多軟件程序可以幫助工程師建立幾百萬門的電路,但這些程序都無法解決信號同步問題。設計者需要了解可靠的設計技巧,以減少電路在跨時鐘域通信時的故障風險。
基礎
從事多時鐘設計的第一步是要理解信號穩(wěn)定性問題。當一個信號跨越某個時鐘域時,對新時鐘域的電路來說它就是一個異步信號。接收該信號的電路需要對其進行同步。同步可以防止第一級存儲單元(觸發(fā)器)的亞穩(wěn)態(tài)在新的時鐘域里傳播蔓延。
亞穩(wěn)態(tài)是指觸發(fā)器無法在某個規(guī)定時間段內達到一個可確認的狀態(tài)。當一個觸發(fā)器進入亞穩(wěn)態(tài)時,既無法預測該單元的輸出電平,也無法預測何時輸出才能穩(wěn)定在某個正確的電平上。在這個穩(wěn)定期間,觸發(fā)器輸出一些中間級電平,或者可能處于振蕩狀態(tài),并且這種無用的輸出電平可以沿信號通道上的各個觸發(fā)器級聯(lián)式傳播下去。
對任何一種觸發(fā)器,在時鐘觸發(fā)沿前后的一個小時間窗口內,輸入信號必須穩(wěn)定。這一時間窗口是多種因素的函數(shù),包括觸發(fā)器設計、實現(xiàn)技術、運行環(huán)境以及無緩沖輸出上的負載等。輸入信號陡峭的邊沿可以將此窗口減至最小。隨著時鐘頻率的升高,會出現(xiàn)更多有問題的時間窗口,而隨著數(shù)據(jù)頻率的提升,這種窗口的命中概率則會增加。
FPGA 制造商和 IC 晶片廠用“MTBF”來標識合格的觸發(fā)器,并且確定它們的特性。“MTBF”(平均無故障時間)用統(tǒng)計方法描述了一個觸發(fā)器的亞穩(wěn)態(tài)特性,即確定某個觸發(fā)器出現(xiàn)故障的概率。在計算 MTBF 時,制造商部分基于輸入信號改變導致觸發(fā)器不穩(wěn)定期間的時間窗口長度。另外,MTBF 的計算還使用了輸入信號的頻率以及驅動觸發(fā)器的時鐘頻率。
在一個 ASIC 或 FPGA 庫中,每種觸發(fā)器都有時序要求,以幫助你確定容易出問題的窗口。“建立時間”(Setup time)是指在時鐘沿到來之前,觸發(fā)器輸入信號必須保持穩(wěn)定的時間。“保持時間”(Hold time)則是指在時鐘沿之后,信號必須保持穩(wěn)定的時間。這些指標通常比較保守,以應對電源電壓、工作溫度、信號質量以及制造工藝等各種可能的差異。如果一個設計滿足了這些時序要求,則觸發(fā)器出現(xiàn)錯誤的可能性可以忽略不計。
現(xiàn)代 IC 與 FPGA 設計中使用的綜合工具可以保證設計能滿足每個數(shù)字電路觸發(fā)器對建立與保持時間的要求。然而,異步信號卻給軟件提出了難題。對新的時鐘域來說,從其它時鐘域傳來的信號是異步的。大多數(shù)綜合工具在判定異步信號是否滿足觸發(fā)器時序要求時遇到了麻煩。因為它們不能確定觸發(fā)器處于非穩(wěn)態(tài)的時間,所以它們也就不能確定從一個觸發(fā)器通過組合邏輯到達下一個觸發(fā)器的總延遲時間。所以,最好的辦法是使用一些電路來減輕異步信號的影響。
信號同步
信號同步的目的是防止新時鐘域中第一級觸發(fā)器的亞穩(wěn)態(tài)信號對下級邏輯造成影響。簡單的同步器由兩個觸發(fā)器串聯(lián)而成,中間沒有其它組合電路。這種設計可以保證后面的觸發(fā)器獲得前一個觸發(fā)器輸出時,前一個觸發(fā)器已退出了亞穩(wěn)態(tài),并且輸出已穩(wěn)定。設計中要注意將兩個觸發(fā)器放得盡可能近,以確保兩者間有最小的時滯(clock skew)。
IC 制造廠提供同步單元,幫助完成信號同步工作。這些單元通常包括一個有非常高增益的觸發(fā)器,它比普通觸發(fā)器耗電更高,也比較大。這種觸發(fā)器降低了對輸入信號建立-保持時間的要求,并且當輸入信號導致亞穩(wěn)態(tài)時,它可以防止出現(xiàn)振蕩。另一種同步器單元包括兩個觸發(fā)器,省去了將兩個單獨觸發(fā)器靠近放置的工作,也防止設計人員誤在兩個觸發(fā)器間加入任何其它的組合邏輯。
為了使同步工作能正常進行,從某個時鐘域傳來的信號應先通過原時鐘域上的一個觸發(fā)器,然后不經過兩個時鐘域間的任何組合邏輯,直接進入同步器的第一個觸發(fā)器中(圖 1)。這一要求非常重要,因為同步器的第一級觸發(fā)器對組合邏輯所產生的毛刺非常敏感。如果一個足夠長的信號毛刺正好滿足建立-保持時間的要求,則同步器的第一級觸發(fā)器會將其放行,給新時鐘域的后續(xù)邏輯送出一個虛假的信號。
圖1,在一個全同步器電路中,從某個時鐘域傳來的信號應先通過原時鐘域上的一個觸發(fā)器,然后不經過原觸發(fā)器和同步器的第一個觸發(fā)器兩個時鐘域間的任何組合邏輯,直接進入同步器的第一個觸發(fā)器中。
一個經同步后的信號在兩個時鐘沿以后就成為新時鐘域中的有效信號。信號的延遲是新時鐘域中的一到兩個時鐘周期。一種粗略的估算方法是同步器電路在新時鐘域中造成兩個時鐘周期的延遲,設計者需要考慮同步延遲將對跨時鐘域的信號時序造成的影響。
同步器有許多種設計方法,因為一種同步器不能滿足所有應用的
需求。同步器的類型基本上有三種:電平、邊沿檢測和脈沖(表 1)。雖然還存在著其它類型的同步器,但這三種類型的同步器可以解決設計者遇到的多數(shù)應用問題。在電平同步器中,跨時鐘域的信號在新時鐘域中要保持高電平或低電平兩個時鐘周期以上。這種電路的要求是,在再次成為有效信號前,信號需要先變成無效狀態(tài)。每一次信號有效時,接收邏輯都會把它看作一個單個事件,而不管信號的有效狀態(tài)保持了多久。這種電路是所有同步器電路的核心。
表 1
邊沿檢測同步器在電平同步器的輸出端增加了一個觸發(fā)器(圖 2)。新增觸發(fā)器的輸出經反相后和電平同步器的輸出進行與操作。這一電路會檢測同步器輸入的上升沿,產生一個與時鐘周期等寬、高電平有效的脈沖。如果將與門的兩個輸入端交換使用,就可以構成一個檢測輸入信號下降沿的同步器。將與門改為與非門可以構建一個產生低電平有效脈沖的電路。
圖2,邊沿檢測同步器在電平同步器的輸出端增加了一個觸發(fā)器。
當一個脈沖進入更快的時鐘域中時,邊沿檢測同步器可以工作得很好。這一電路會產生一個脈沖,用來指示輸入信號上升或下降沿。這種同步器有一個限制,即輸入脈沖的寬度必須大于同步時鐘周期與第一個同步觸發(fā)器所需保
持時間之和。最保險的脈沖寬度是同步器時鐘周期的兩倍。如果輸入是一個單時鐘寬度脈沖進入一個較慢的時鐘域,則這種同步器沒有作用,在這種情況下,就要采用脈沖同步器。
脈沖同步器的輸入信號是一個單時鐘寬度脈沖,它觸發(fā)原時鐘域中的一個翻轉電路(圖 3)。每當翻轉電路接收到一個脈沖時,它就會在高、低電平間進行轉換,然后通過電平同步器到達異或門的一個輸入端,而另一個信號經一個時鐘周期的延遲進入異或門的另一端,翻轉電路每轉換一次狀態(tài),這個同步器的輸出端就產生一個單時鐘寬度的脈沖。
圖3,脈沖同步器的輸入信號是一個單時鐘寬度脈沖,它觸發(fā)原時鐘域中的一個翻轉電路
脈沖同步器的基本功能是從某個時鐘域取出一個單時鐘寬度脈沖,然后在新的時鐘域中建立另一個單時鐘寬度的脈沖。脈沖同步器也有一個限制,即輸入脈沖之間的最小間隔必須等于兩個同步器時鐘周期。如果輸入脈沖相互過近,則新時鐘域中的輸出脈沖也緊密相鄰,結果是輸出脈沖寬度比一個時鐘周期寬。當輸入脈沖時鐘周期大于兩個同步器時鐘周期時,這個問題更加嚴重。這種情況下,如果輸入脈沖相鄰太近,則同步器就不能檢測到每個脈沖。
模擬信號相關文章:什么是模擬信號
電路相關文章:電路分析基礎
脈沖點火器相關文章:脈沖點火器原理
評論