復位消抖之后的下一件事,異步復位同步撤離。這句話什么意思呢?
對于使用異步復位的系統,低電平復位系統時復位信號是允許不與工作時鐘對齊的即純純異步復位;
但是在復位撤離時,需要與工作時鐘對齊,即滿足removal time要求(在時鐘有效沿來臨之后,異步復位信號需要繼續保持有效的最短時間),或者說復位的撤離行為是受到時鐘控制的。
既然都已經是異步復位了,為何還要多此一舉呢?
1.對于復位這個操作行為而言,純異步處理是完全可以的,因為所有的元器件都會最終回到初始值。當然了,這里指的是整體復位或者說帶保護的局部復位。你別管這些寄存器誰先復位誰后復位誰出現亞穩態了,只要不是著火了最后都會回到復位值。就像電視劇里說的“反正早晚都是沒,早沒晚沒又有什么區別呢”。所以異步復位出電路是沒有任何問題的。
2.但是對于復位撤銷這個行為就不一樣了。一旦復位撤銷了各個元器件就會開始工作了,但是復位信號如果是純異步的打到某個寄存器接口上的時候可能就撞到亞穩態窗口上了(不滿足removal time),亞穩態就會在電路里開始蔓延搗亂,出現什么情況可就難說了。所以復位撤離這個事必須得是受到時鐘控制的,不能是純異步電路。
這里有一點要注意哈,同步撤離這個操作解決的是異步復位可能的亞穩態問題,并不是說能夠保證所有的寄存器在同一時間收到復位撤離的操作。
這個事就類似與信號打3拍同步一樣,咱們先解決亞穩態問題,再處理信號傳的對不對的問題。通過異步復位同步撤離先確保沒有亞穩態,再處理寄存器不能在同一拍接收到復位撤銷導致錯誤的問題。
如何做到異步復位同步撤離呢?請看下面這個電路:
rst_n經過濾波后得到prst_n,因此我們只需要分析prst_n的行為影響即可。
1.正常工作狀態下,prst_n==1;
1.
2.異步復位時prst_n由1跳轉為0,兩個D觸發器立刻被復位。也就是說rst_work_n會立即下拉至低電平復位系統,這個下拉顯然時候不受時鐘控制的,因此實現了異步復位;
3.復位撤離時prst_n由0跳轉為1,兩個D觸發器的復位被撤銷了開始正常工作。但是高電平需要兩個周期才會到達rst_work_n端,這兩個周期足以消除復位帶來的亞穩態并且保證系統感知的復位rst_work_n在時鐘沿上,因此實現了同步撤銷;
借助于這個電路設計,系統的異步復位同步撤離功能就實現了。不過當年我還問了大佬一個問題:這樣的話系統就延時了2個周期才復位的啊,會不會有bug?
大佬的回答是這樣的:你這啥系統啊真的在乎這一兩個周期的事么?早跑幾周期晚跑幾周期有啥關系,只要別跑錯了就行!
-
寄存器
+關注
關注
31文章
5363瀏覽量
121156 -
D觸發器
+關注
關注
3文章
164瀏覽量
48018 -
異步復位
+關注
關注
0文章
47瀏覽量
13346 -
時鐘控制
+關注
關注
0文章
17瀏覽量
6863
發布評論請先 登錄
相關推薦
評論