爲了解決Verilog中由不同時鐘域引起的亞穩態問題,使用了雙寄存器方法。使用雙寄存器方法解決亞穩態性
但據我所知,亞穩態的最終輸出是不確定的。輸出與輸入無關。
所以,我的問題是如何使用雙寄存器方法,以保證輸出的正確性?
謝謝。
爲了解決Verilog中由不同時鐘域引起的亞穩態問題,使用了雙寄存器方法。使用雙寄存器方法解決亞穩態性
但據我所知,亞穩態的最終輸出是不確定的。輸出與輸入無關。
所以,我的問題是如何使用雙寄存器方法,以保證輸出的正確性?
謝謝。
你不能完全確定你是否避免了亞穩態。 正如你所提到的,亞穩觸發器的輸出是不可預測的,所以即使採用「雙寄存器」方法,當你有亞穩態時,你也可能傳播錯誤的值。
這種方法卻從來沒有打算解決亞穩態,但試圖以減少亞值進入你的電路的概率。所謂的here MTBF(平均無故障時間)。爲了減少MTBF,你甚至可以鏈接更多的2個寄存器。
即使這沒有解決的一個值的非預測的煩躁,有趣的是,使用這些雙寄存器,因爲當一個值是亞穩態,它會振盪,直到它穩定爲0或1
該振盪將使您的電路切換,然後使用大量的能量,因爲每個轉換都消耗能量。由於這個原因,使用雙寄存器進行時鐘域交叉非常重要。
爲了確保您的數據是有效的,雖然,你可以使用兩個時鐘域之間的請求 - 應答機制。
快速例如:
該協議被稱爲四相協議來發送。您可以在網上找到大量有關它的文檔,因爲它是異步設計的經典協議。
這是很容易理解和實施。請記住,它會產生一個非常重要的開銷。
希望它有幫助。
謝謝Krouitch,但我仍然有些困惑。所以,在第4步之後,我只能保證請求信號穩定在1,但是如何保證數據也是穩定的?謝謝。 –
如果您在發送請求前至少發送了一個時鐘週期的數據,那麼數據必須穩定。如果不是這意味着路徑對於您選擇的時鐘週期來說太長。 這裏是一篇文章,說明我的意思:http://www.eetimes.com/document.asp?doc_id=1276114 – Krouitch
這個問題可能更適合http://electronics.stackexchange.com/ –
好的,謝謝。我可以再次發佈這個問題嗎? –