異步復位
(1)異步復位電路
異步復位觸發器則是在設計觸發器的時候加入了一個復位引腳,也就是說 復位邏輯集成在觸發器里面 。(一般情況下)低電平的復位信號到達觸發器的復位端時,觸發器進入復位狀態,直到復位信號撤離。帶異步復位的觸發器電路圖和RTL代碼如下所示:
(2)異步復位的優點
①使用異步復位的最大好處就是 復位路徑上沒有延時 ,如上面的圖所示,復位信號一直連接到觸發器的復位端口,而不是像同步復位那樣需要經過一個復位控制邏輯(如與門)。這樣子就減少了外界信號的影響。
②與時鐘沒有關系,不管時鐘上升沿有沒有到來,只要復位信號一有效,觸發器就會復位,也就是基本上做到實時性;由于與時鐘沒有關系,因此也可以用在門控時鐘里面。
③綜合工具能自動推斷出異步復位而不必加入任何綜合指令。
(3)異步復位的缺點
①復位撤離問題
在介紹復位撤離問題之前,先說一下復位恢復時間和去除時間。所謂的復位恢復時間是指撤離一個復位信號時,復位信號從有效跳變為無效的時刻 與 下一個有效時鐘沿 之間的這段時間;去除時間是指撤離一個復位信號時,復位信號從有效跳變為無效的時刻 與 上一個有效時鐘沿 之間的這段時間(可以類比于觸發器的建立時間和保持時間)。如下圖所示:
上圖中,rst_n1是要求的復位恢復時間,rst_n2滿足復位恢復時間,rst_n3復位恢復時間不足。
上圖中,rst_nA是要求的復位去除時間,rst_n2滿足復位去除時間,rst_n3復位去除時間不足。
從上面的兩個圖中可以知道,如果你想 讓某個時鐘沿起作用(也就是采數據) ,那么你就應該在“恢復時間”之前讓異步控制信號變無效;如果你想讓某個時鐘沿不起作用(也就是在這個時鐘沿依舊復位),那么你就應該在“去除時間”過后使控制信號變無效。異步復位信號的恢復和去除時間需要大于一定的時間,如果你的異步復位信號在這兩種情況之間(撤離),那么就沒法確定時鐘沿是否起作用了,即判斷不出是復位還是不復位(不復位即是D觸發器才輸入端的數據)。
介紹了復位恢復時間和去除時間之后,我們就可以看看異步復位信號的問題了。由于異步復位信號與系統時鐘毫無關系,復位可以在隨時施加,也可以隨時撤離。在施加的時候復位信號的時候,不存在任何問題,因為這跟復位恢復時間扯不上關系。但是,在撤離復位信號的情況下就有問題了,主要有兩個問題:
·當異步復位信號的撤離時刻在時鐘有有效沿附近時,就可能導致恢復時間或去除時間不足,即這個時候違背了復位恢復時間或去除時間,這時就可能導致觸發器的輸出端為亞穩態(注意是 可能 ),如下所示:
但是并不是所有情況都會產生亞穩態,當復位值和此時的的輸出相同時,就不會產生亞穩態,如下圖所示:
這是因為:復位信號翻轉的時候,如果復位信號判斷是 低電平 ,輸出就復位即一定是低電平;如果判斷復位信號是 高電平 , 輸出信號就等于對輸入信號的采樣值 。圖里面 輸入信號就是低電平 ,不管你是復位還是不復位,輸出一直是低電平,沒有亞穩態。
·復位狀態不一致的問題:
復位信號很時鐘信號一樣,復位通過復位網絡到達各個觸發器。一方面,復位網絡具有非常大的扇出和負載,到達不同的觸發器存在不同的延時,也就是存在復位偏移,因此撤離異步復位的時刻也是不一樣的;另一方面,由于時鐘網絡也存在時鐘偏移。這個時候異步復位信號就有可能在不同的觸發器的不同時鐘周期內進行撤離,也就是說異步復位的信號不一致,如下圖所示:
異步復位信號 a是異步復位信號源 ,異步復位信號b、c、d是到達觸發器的異步信號。我們可以看到, b信號是在本周期就撤離了復位 ;c信號則由于復位恢復時間不滿足,則可能導致觸發器輸出亞穩態;而 d信號則由于延時太長(但是滿足了復位去除時間),在下一個周期才撤離復位 。
撤離問題的解決方法:異步復位的同步釋放
異步復位的同步釋放電路也稱為 復位同步器 ,這個方法是 將外部輸入的異步復位信號進行處理 ,產生另外一個適合用于后面電路的復位信號,這個處理后的復位信號能夠異步復位電路中的觸發器,又不會存在撤離問題(因為經過了同步);這個異步復位同步釋放的處理電路和RTL代碼如下所示:
從圖中可以看到,這是 用外部異步復位信號來復位一對觸發器 ,這對觸發器異步地驅動主復位信號,也就是這對觸發器產生電路需要的復位信號,這些復位信號再到達各個觸發器,然后進行復位,理想的異步復位同步釋放的時序如下所示:
上圖中,在理想的情況下,復位信號在兩級D觸發器上面的撤離時間可能不一樣,這個和復位信號傳輸到的觸發器位置和觸發器的時鐘沿有關。 理想情況下的復位信號傳輸到目標觸發器都能夠同時撤離,并且不在時鐘有效沿附近 。
實際情況一般不是那么理想的,當不是理想的情況下,也就是說復位信號到達目標寄存器存在時鐘偏移,并且復位信號有可能在時鐘有效沿附近撤離,這個時候復位器出現的問題就有三種:第一級OK,第二級出現問題;第一級出現問題,第二級OK;兩級都出現問題。下面我們就來看看這三種情況下產生的復位信號是什么情況:
第一級的撤離沒有問題,第二級的撤離出現在時鐘的有效沿附近 ,也就是說第二級的D觸發器的撤離時間不滿足復位恢復時間或者去除時間,這時候的時序圖如下所示:
我們可以看到無論是觸發器判斷此刻是復位還是不復位,輸出都是一樣的,也就是說,輸出rst_n不是亞穩態,而是確定的值。
第一級的撤離出現問題,第二級的撤離沒有問題 ,這時候的時序圖如下所示:
我們可以看到,第一級觸發器雖然產生了亞穩態,但是由于第二級觸發器的存在,亞穩態并沒有傳播下去, 得到的復位信號依然是干凈的 ,只不過這個復位信號可能延長多一個周期而已(這是因為亞穩態穩定后的可能態引起的)。
最極端的一種情況是, 兩級的撤離都不滿足復位恢復時間或者去除時間 ,這時候的時序圖如下所示:
我們可以看到第一級觸發器產生了亞穩態,但是由于第二級觸發器的存在,亞穩態沒有傳播下去;雖然第二級觸發器的復位信號撤離也在時鐘有效沿附近,但是跟第一種情況一樣,第二級觸發器是不會產生亞穩態的。因此即使是極端狀態,輸出的復位信號也是干凈的。
由此我們可以看到,異步復位的同步撤離能夠有效地解決撤離導致的復位恢復時間或者去除時間不足的問題,同時把復位信號同步化,解決了復位撤離偏移的問題。
②異步復位的抖動問題
當外部輸入的異步復位信號產生毛刺時,任何滿足觸發器最小復位脈沖寬度的輸入都有可能引起觸發器復位,這問題是源頭上的問題,即使是使用上面的同步器,也還是有同樣的敏感問題,時序圖如下所示:
解決方法 :一個是 使用同步復位 ,另一個就是過濾毛刺了,過濾毛刺和消抖的思路有點像,主要就是經過一段延時之后,在經過邏輯門判斷產生外部來的是不是真正復位信號,加上過濾毛刺信號部分的同步撤離電路和時序如下所示:
在上圖中,我們可以看到,抖動問題得到了解決。然而這種方法還是有缺點的,主要就是這個延時電路的延時控制可能隨著環境而變化,而且延時的時間要合適長才行,絕對不能太短。
③DFT的問題
在DFT的時候,如果異步復位信號不能直接被I/O引腳驅動,就必須將異步復位線和后面的的被驅動電路斷開,用來保證DFT掃描和測試能夠正確進行??傊惒綇臀辉黾恿薉FT的復雜性。
4.復位策略——復位網絡
在數字電路里面,復位信號驅動了很多觸發器,僅次于時鐘,因此復位也往往形成或者使用復位網絡。復位網絡的設計也是有值得斟酌的地方,例如,由于復位的扇出太大,全部的復位不能僅僅由一個端口驅動,也就是不能像下面一樣:
既然上面的不行,那就改成下面的唄,也就是使用多各“并聯”的同步釋放,分擔一下負載壓力:
然而這種方案還是有問題的,這是第一級的撤離出現問題,第二級的撤離沒有問題的時候,亞穩態穩定后的狀態可能不一樣,導致rst_n的復位不一致,有的復位可能會快/慢一個周期。
最后的方案是,先進行同步釋放之后,同步后的復位信號又當做各個部分的異步信號,然后進行同步釋放,如下所示:
這樣先經過前級的同步釋放之后,就不存在亞穩態穩定好導致的輸出rst_n不一致的問題了。
-
觸發器
+關注
關注
14文章
1996瀏覽量
61057 -
復位電路
+關注
關注
13文章
322瀏覽量
44545 -
復位信號
+關注
關注
0文章
53瀏覽量
6302
發布評論請先 登錄
相關推薦
評論