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

圖1,在一個(gè)全同步器電路中,從某個(gè)時(shí)鐘域傳來(lái)的信號應先通過(guò)原時(shí)鐘域上的一個(gè)觸發(fā)器,然后不經(jīng)過(guò)原觸發(fā)器和同步器的第一個(gè)觸發(fā)器兩個(gè)時(shí)鐘域間的任何組合邏輯,直接進(jìn)入同步器的第一個(gè)觸發(fā)器中。
一個(gè)經(jīng)同步后的信號在兩個(gè)時(shí)鐘沿以后就成為新時(shí)鐘域中的有效信號。信號的延遲是新時(shí)鐘域中的一到兩個(gè)時(shí)鐘周期。一種粗略的估算方法是同步器電路在新時(shí)鐘域中造成兩個(gè)時(shí)鐘周期的延遲,設計者需要考慮同步延遲將對跨時(shí)鐘域的信號時(shí)序造成的影響。
同步器有許多種設計方法,因為一種同步器不能滿(mǎn)足所有應用的
需求。同步器的類(lèi)型基本上有三種:電平、邊沿檢測和脈沖(表 1)。雖然還存在著(zhù)其它類(lèi)型的同步器,但這三種類(lèi)型的同步器可以解決設計者遇到的多數應用問(wèn)題。在電平同步器中,跨時(shí)鐘域的信號在新時(shí)鐘域中要保持高電平或低電平兩個(gè)時(shí)鐘周期以上。這種電路的要求是,在再次成為有效信號前,信號需要先變成無(wú)效狀態(tài)。每一次信號有效時(shí),接收邏輯都會(huì )把它看作一個(gè)單個(gè)事件,而不管信號的有效狀態(tài)保持了多久。這種電路是所有同步器電路的核心。

表 1
邊沿檢測同步器在電平同步器的輸出端增加了一個(gè)觸發(fā)器(圖 2)。新增觸發(fā)器的輸出經(jīng)反相后和電平同步器的輸出進(jìn)行與操作。這一電路會(huì )檢測同步器輸入的上升沿,產(chǎn)生一個(gè)與時(shí)鐘周期等寬、高電平有效的脈沖。如果將與門(mén)的兩個(gè)輸入端交換使用,就可以構成一個(gè)檢測輸入信號下降沿的同步器。將與門(mén)改為與非門(mén)可以構建一個(gè)產(chǎn)生低電平有效脈沖的電路。

圖2,邊沿檢測同步器在電平同步器的輸出端增加了一個(gè)觸發(fā)器。
當一個(gè)脈沖進(jìn)入更快的時(shí)鐘域中時(shí),邊沿檢測同步器可以工作得很好。這一電路會(huì )產(chǎn)生一個(gè)脈沖,用來(lái)指示輸入信號上升或下降沿。這種同步器有一個(gè)限制,即輸入脈沖的寬度必須大于同步時(shí)鐘周期與第一個(gè)同步觸發(fā)器所需保
持時(shí)間之和。最保險的脈沖寬度是同步器時(shí)鐘周期的兩倍。如果輸入是一個(gè)單時(shí)鐘寬度脈沖進(jìn)入一個(gè)較慢的時(shí)鐘域,則這種同步器沒(méi)有作用,在這種情況下,就要采用脈沖同步器。
脈沖同步器的輸入信號是一個(gè)單時(shí)鐘寬度脈沖,它觸發(fā)原時(shí)鐘域中的一個(gè)翻轉電路(圖 3)。每當翻轉電路接收到一個(gè)脈沖時(shí),它就會(huì )在高、低電平間進(jìn)行轉換,然后通過(guò)電平同步器到達異或門(mén)的一個(gè)輸入端,而另一個(gè)信號經(jīng)一個(gè)時(shí)鐘周期的延遲進(jìn)入異或門(mén)的另一端,翻轉電路每轉換一次狀態(tài),這個(gè)同步器的輸出端就產(chǎn)生一個(gè)單時(shí)鐘寬度的脈沖。

圖3,脈沖同步器的輸入信號是一個(gè)單時(shí)鐘寬度脈沖,它觸發(fā)原時(shí)鐘域中的一個(gè)翻轉電路
脈沖同步器的基本功能是從某個(gè)時(shí)鐘域取出一個(gè)單時(shí)鐘寬度脈沖,然后在新的時(shí)鐘域中建立另一個(gè)單時(shí)鐘寬度的脈沖。脈沖同步器也有一個(gè)限制,即輸入脈沖之間的最小間隔必須等于兩個(gè)同步器時(shí)鐘周期。如果輸入脈沖相互過(guò)近,則新時(shí)鐘域中的輸出脈沖也緊密相鄰,結果是輸出脈沖寬度比一個(gè)時(shí)鐘周期寬。當輸入脈沖時(shí)鐘周期大于兩個(gè)同步器時(shí)鐘周期時(shí),這個(gè)問(wèn)題更加嚴重。這種情況下,如果輸入脈沖相鄰太近,則同步器就不能檢測到每個(gè)脈沖。
模擬信號相關(guān)文章:什么是模擬信號
電路相關(guān)文章:電路分析基礎
脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理
評論