天天看點

sync是同步還是非同步_異步複位同步釋放原理

關鍵詞:同步釋放,recovery,removal

在數字IC設計中肯定會涉及到異步複位的問題,因為需要對電路進行複位操作。這種複位設計主要依靠前端設計以及工具來檢查,從數字IC後端的角度上講,隻要在timing signoff階段檢查好removal和recovery的check就好。

Removal timing check

Removal time是指在時鐘有效沿來臨之後,異步複位信号需要繼續保持有效的最短時間。滿足這個最短時間才能確定對寄存器進行正常的複位。Removal time check的波形圖如下圖所示。Removal timing check與hold time check類似。

sync是同步還是非同步_異步複位同步釋放原理
Recovery timing check

Recovery time是指在時鐘有效沿到來之前,複位信号保持高電平的最短時間。即複位信号變到非複位狀态的電平必須在clk之前一定的時間到達。滿足這個Recovery time,可以確定在時鐘有效沿來臨時,異步複位信号處于無效狀态,進而確定正常的資料采樣。

從Removal 和Recovery time的定義知道,隻要DFF的複位信号不在時鐘有效沿附近變化(複位信号遠離時鐘有效沿),就可以保證電路的正常複位和撤銷。

在實際的設計中,比如有的子產品是先複位再給子產品供應時鐘,即保證了複位信号與時鐘在時間上是錯開的,這種流程可以保證不會出現recovery和removal的問題,因為複位置起撤銷時都沒有時鐘。即使操作流程保證不了,出現recovery和removal違例,由于子產品此時都不會工作,也沒什麼問題。

同步複位

複位信号可以了解為一個普通的資料信号,它隻有在時鐘的跳變沿才會其作用,一般隻要複位信号持續時間大于一個時鐘周期,就可以保證正确複位。

異步複位

複位可以在任何時候發生,表面上看跟時鐘沒有關系,但真實情況是異步複位也需考慮時鐘跳變沿,因為時鐘沿變化和異步複位都可以引起Q端資料變化。如果異步複位信号跟時鐘在一定時間間隔内發生變化,Q值将無法确定,即亞穩态現象。這個時候既是異步複位信号持續時間再長都沒有辦法,因為不定态已經傳遞下去。

同步複位雖然解決了當時鐘的有效沿來臨的時候rst_n的邊沿也正好來臨所出現的冒險與競争。但是從綜合的電路上可以看出,多了一個組合邏輯MUX。

如果設計中所有的複位都是這樣的,那會增加很多的資源,導緻晶片面積很大。那麼有沒有更好的解決辦法呢?答案是有,那就是

異步複位同步釋放機制。 異步複位,同步釋放

異步複位,同步釋放就是指在複位信号到來的時候不受時鐘信号的同步,而是在複位信号釋放的時候受到時鐘信号的同步。

sync是同步還是非同步_異步複位同步釋放原理

如上圖,單獨看方框2的複位政策,是一個異步複位電路,即複位信号有效時不管時鐘信号是否處于有效沿,輸出都會被複位。但是如果複位信号在時鐘信号的上升沿撤銷時,這時候的輸出就是亞穩态。

方框1中電路圖是實作異步複位同步釋放的關鍵。

異步複位

當rst_async_n有效時,第一個D觸發器的輸出是低電平,第二個D觸發器的輸出rst_sync_n也是低電平,方框2中的異步複位端口有效,輸出被複位。

同步釋放 假設rst_async_n撤除時發生在clk上升沿,如果不加此電路則可能發生亞穩态事件(有的時候會打三拍)。但是加上此電路以後,假設第一級D觸發器clk上升沿時rst_async_n正好撤除,則D觸發器1可能輸出高電平“1”,也可能輸出亞穩态,也可能輸出低電平。但此時第二級觸發器不會立刻更新輸出,第二級觸發器輸出值為前一級觸發器Q1的輸出狀态。顯然Q1之前為低電平,故第二級觸發器輸出保持複位低電平。直到下一個時鐘有效沿到來之後,才随着變為高電平。即實作同步釋放。

在數字後端實作時,如果發現第一級寄存器的異步複位端存在removal和recovery的timing violation,我們可以不用管。因為這一級隻是作為過渡,我們不care timing。

異步複位同步釋放電路Verilog代碼實作:

always            

本文轉自 吾愛IC社群

适合轉行小白哈哈哈