時鐘域交叉期間要避免的 10 個設(shè)計(jì)問題
現(xiàn)代 ASIC 由數(shù)百萬個門和數(shù)十億個晶體管組成,它們通??梢栽诰哂胁煌妷汉蜁r鐘頻率的多個域中運(yùn)行。為了避免數(shù)據(jù)丟失,設(shè)計(jì)人員需要確保從一個域發(fā)送到另一域的信號不會導(dǎo)致目標(biāo)域中寄存器的建立時間或保持時間違規(guī)。以下是跨時鐘域時需要確?;虮苊獾?10 件事。
目標(biāo)域中的寄存器(通常是觸發(fā)器)的建立或保持時間違規(guī)可能會導(dǎo)致觸發(fā)器進(jìn)入稱為亞穩(wěn)態(tài)的狀態(tài)。您可以閱讀 了解時鐘域交叉問題來了解有關(guān)交叉時鐘域問題以及它如何導(dǎo)致亞穩(wěn)態(tài)的更多信息,但關(guān)鍵點(diǎn)是同步跨域信號在任何設(shè)計(jì)中都是絕對必須的。處理此任務(wù)的電路(稱為同步器)可能會根據(jù)特定的域條件采用幾種不同的同步方案之一。您可以在多時鐘域 SoC 和 FPGA 的同步器技術(shù)一文中找到有關(guān)這些方案的更多詳細(xì)信息。
然而,即使使用這些技術(shù),您也需要做一些事情,而不要做一些事情,以避免同步設(shè)計(jì)問題。
使用多級同步
僅使用單個觸發(fā)器來同步跨時鐘域的信號會因傳遞亞穩(wěn)態(tài)而面臨很高的失敗風(fēng)險(xiǎn),特別是在域時鐘頻率差異很大的情況下。最好使二觸發(fā)器同步器,甚至三觸發(fā)器同步器。使用兩個或三個觸發(fā)器設(shè)計(jì)可以為跨域的信號在進(jìn)入亞穩(wěn)態(tài)后提供更多的時間來穩(wěn)定。
避免合并早期同步階段的信號
由于多級同步器中的第一個觸發(fā)器可以進(jìn)入亞穩(wěn)態(tài),因此切勿將第一個觸發(fā)器的輸出用作任何單元的邏輯輸入。這樣做可能會導(dǎo)致設(shè)計(jì)中亞穩(wěn)態(tài)的傳播。
同步前注冊組合信號
如果跨越時鐘域的信號直接來自組合邏輯,則其中可能存在故障。這些毛刺會減少雙觸發(fā)器同步器的平均故障前時間 (MTBF)。將穿過域的信號注冊到源時鐘可以消除毛刺。為了幫助保持同步器的 MTBF,請始終在跨域之前注冊組合信號。
考慮亞穩(wěn)態(tài)延遲
當(dāng)使用多位同步器跨越多個位時,請始終考慮亞穩(wěn)態(tài)延遲。當(dāng)觸發(fā)器時鐘直到下一個時鐘周期才完全同步時,任何經(jīng)歷亞穩(wěn)態(tài)的位。由于這種延遲,無法保證數(shù)據(jù)同步的一致性或順序。不使用雙觸發(fā)器同步器,而是使用另一種形式,例如數(shù)據(jù)多路復(fù)用器、異步FIFO等。然而,如果總線采用格雷碼編碼,那么我們可以使用多位同步器,因?yàn)橐淮沃挥幸晃话l(fā)生變化。只需確保在跨域之前注冊總線,因?yàn)楦窭拙幋a是完全組合邏輯。
確保足夠的時鐘速率
信號發(fā)送域的時鐘周期至少應(yīng)為接收域時鐘周期的一倍半。發(fā)送時鐘周期太短可能會導(dǎo)致信號不總是被采樣。如果不能滿足這個條件,那么最好使用請求-確認(rèn)類型的機(jī)制來控制跨域信號的切換。
永遠(yuǎn)不要假設(shè)同步
當(dāng)使用域中其他設(shè)計(jì)者的塊的網(wǎng)絡(luò)或總線時,不要假設(shè)該網(wǎng)絡(luò)已為您同步。如有必要,請務(wù)必檢查并使用同步器。
同步反饋信號
使用同步器中第一個觸發(fā)器的輸出來復(fù)位傳輸時鐘域中的觸發(fā)器時要小心。這可能會導(dǎo)致同步器外部的時序違規(guī)或者可能會導(dǎo)致亞穩(wěn)態(tài)。當(dāng)這種復(fù)位信號跨域時,最好也使用同步器。這將確保發(fā)送域中的觸發(fā)器不違反任何時序規(guī)則。
避免同步階段之間的邏輯
避免在同步器的觸發(fā)器之間放置任何組合邏輯,因?yàn)檫@可能會降低同步器的 MTBF。組合邏輯的輸出可能會出現(xiàn)故障并導(dǎo)致時序問題,最終導(dǎo)致亞穩(wěn)態(tài)。
同步軟件驅(qū)動信號
軟件驅(qū)動的信號不應(yīng)在沒有同步的情況下用于接收域的邏輯。否則將導(dǎo)致時序違規(guī)并導(dǎo)致亞穩(wěn)態(tài)。
同步后不要合并信號
接收域中不同同步器的輸出無法組合并在其他地方使用,因?yàn)闊o法保證它們的同步順序,因此有可能采樣到錯誤的數(shù)據(jù)。如果必須組合兩個信號以便在接收域中使用,那么最好在發(fā)送域中組合它們或使用其他一些方法來克服一致性問題。
在跨不同時鐘域同步信號時遵循這些準(zhǔn)則將大大有助于確保多域 SoC 和 FPGA 設(shè)計(jì)中不會出現(xiàn)亞穩(wěn)態(tài)問題。