24小時(shí)聯(lián)系電話(huà):18217114652、13661815404
中文
- 您當前的位置:
- 首頁(yè)>
- 電子資訊>
- 技術(shù)專(zhuān)題>
- 跨時(shí)鐘域時(shí)應避免的10...
技術(shù)專(zhuān)題
跨時(shí)鐘域時(shí)應避免的10個(gè)設計問(wèn)題
跨時(shí)鐘域時(shí)應避免的10個(gè)設計問(wèn)題
現代的ASIC由數百萬(wàn)個(gè)門(mén)和數十億個(gè)晶體管組成,這些晶體管通??梢栽诰哂胁煌妷汉蜁r(shí)鐘頻率的多個(gè)域中運行。為了避免數據丟失,設計人員需要確保從一個(gè)域發(fā)送到另一域的信號不會(huì )引起目標域中寄存器的建立時(shí)間或保持時(shí)間違規。這是跨時(shí)鐘域時(shí)要確?;虮苊獾?span>10件事。
目標域中的寄存器(通常是觸發(fā)器)的建立或保持時(shí)間違規可能導致觸發(fā)器進(jìn)入稱(chēng)為亞穩態(tài)的狀態(tài)。您可以閱讀 了解時(shí)鐘域交叉問(wèn)題,以了解有關(guān)時(shí)鐘域交叉問(wèn)題及其如何引起亞穩定性的更多信息,但關(guān)鍵是在任何設計中,同步信號跨域都是絕對必要的。處理該任務(wù)的電路(稱(chēng)為同步器)可能會(huì )根據特定的域條件采用幾種不同的同步方案之一。
但是,即使使用這些技術(shù),也需要做一些事情,而不要做一些事情,以避免設計出現同步問(wèn)題。
使用多階段同步
僅通過(guò)一個(gè)觸發(fā)器來(lái)同步跨時(shí)鐘域的信號就面臨通過(guò)傳遞亞穩性的高失敗風(fēng)險(圖1a),尤其是在域時(shí)鐘頻率差異較大的情況下。最好使用如圖1b所示的兩觸發(fā)器同步器,甚至使用三觸發(fā)器同步器。使用兩觸發(fā)器或三觸發(fā)器設計后,信號交叉域進(jìn)入亞穩態(tài)后將有更多時(shí)間穩定下來(lái)。
圖1使用兩個(gè)或多個(gè)觸發(fā)器作為同步器將避免傳播由接收端的時(shí)序誤差引起的任何亞穩態(tài)。
避免合并早期同步階段的信號
由于多級同步器中的第一個(gè)觸發(fā)器可以進(jìn)入亞穩態(tài)條件,因此切勿將第一個(gè)觸發(fā)器的輸出用作任何單元的邏輯輸入(圖2)。這樣做有可能在設計中傳播亞穩性。
圖2同步器第一個(gè)觸發(fā)器的輸出,除輸入第二個(gè)觸發(fā)器的輸入外,切勿用于任何下游邏輯。
同步之前注冊組合信號
如果穿越時(shí)鐘域的信號直接來(lái)自組合邏輯,則可能會(huì )有毛刺。這些故障可以減少兩觸發(fā)器同步器發(fā)生故障之前的平均時(shí)間(MTBF)。將將穿過(guò)域的信號注冊到源時(shí)鐘可消除毛刺(圖3)。為了幫助保留同步器的MTBF,請務(wù)必在穿過(guò)域之前注冊組合信號。
圖3一個(gè)簡(jiǎn)單的雙觸發(fā)器同步器可以捕獲來(lái)自組合邏輯的毛刺,因此在其通過(guò)時(shí)鐘域之前,將任何組合信號寄存在其傳輸域中。
解釋亞穩定延遲
當使用多位同步器交叉多個(gè)位時(shí),請始終考慮亞穩態(tài)延遲。當觸發(fā)器時(shí)鐘直到下一個(gè)時(shí)鐘周期才完全同步時(shí),任何經(jīng)歷亞穩態(tài)的位。由于存在此延遲,因此無(wú)法保證數據同步的一致性或順序。代替使用如圖4a所示的兩個(gè)觸發(fā)器同步器,而使用另一種形式,例如數據多路復用器,異步FIFO等。但是,如果總線(xiàn)是格雷碼編碼的,如圖4b所示,那么我們可以使用多位同步器,因為一次僅更改一位。只需確保在跨越域之前就注冊總線(xiàn),因為格雷編碼是完全組合的邏輯。
圖4雙翻轉同步器(a)可能由于亞穩態(tài)延遲而失去同步,因此不應該使用。在跨越域之前使用二進(jìn)制到灰度編碼,然后在(b)之后使用灰度到二進(jìn)制解碼解決了這個(gè)問(wèn)題。
確保足夠的時(shí)鐘頻率
信號發(fā)送域中的時(shí)鐘周期應至少為接收域的時(shí)鐘周期的二分之一。發(fā)送時(shí)鐘周期太短會(huì )導致信號不總是被采樣。如果不能滿(mǎn)足此條件,則最好使用請求確認類(lèi)機制來(lái)控制跨域信號的切換。
永遠不要假設同步
在域中使用來(lái)自另一個(gè)設計者模塊的網(wǎng)絡(luò )或總線(xiàn)時(shí),請勿假定網(wǎng)絡(luò )已為您同步。始終檢查并在必要時(shí)使用同步器。
同步反饋信號
在同步器中使用第一個(gè)觸發(fā)器的輸出在發(fā)送時(shí)鐘域中重置觸發(fā)器時(shí)要小心(圖5a)。這可能會(huì )導致同步器外部出現時(shí)序違規,或者可能會(huì )通過(guò)亞穩態(tài)。如圖5b所示,最好在這種復位信號越過(guò)域時(shí)也使用同步器。這將確保發(fā)送域中的觸發(fā)器不會(huì )違反任何時(shí)序規則。
圖5在來(lái)自接收域的任何復位信號上使用一個(gè)同步器,該信號以發(fā)送域中的觸發(fā)器為目標。
避免同步階段之間的邏輯
避免在同步器的觸發(fā)器之間放置任何組合邏輯,因為這可能會(huì )降低同步器的MTBF(圖6)。組合邏輯的輸出可能會(huì )出現毛刺并引起時(shí)序問(wèn)題,最終會(huì )導致亞穩態(tài)。
圖6同步器兩個(gè)觸發(fā)器之間的組合邏輯將降低其MTBF。
同步軟件驅動(dòng)的信號
如果沒(méi)有同步,則不應在接收域的邏輯中使用由軟件驅動(dòng)的信號。否則,將導致時(shí)序違規并導致亞穩定性。
同步后不要合并信號
接收域中不同同步器的輸出無(wú)法合并并在其他地方使用(圖7a),因為無(wú)法保證它們的同步順序,因此有可能對錯誤的數據進(jìn)行采樣。如果必須合并兩個(gè)信號以用于接收域,則最好將它們合并在發(fā)送域中(圖7b)或使用其他方法來(lái)克服一致性問(wèn)題。
圖7在接收域中重新收斂同步信號可能會(huì )導致設計失敗,因此最好在跨時(shí)鐘域發(fā)送之前對其進(jìn)行合并。
在跨不同時(shí)鐘域的信號同步時(shí),遵循這些準則將有助于確保在多域SoC和FPGA設計中不會(huì )出現亞穩性問(wèn)題。