一般來說,同步系統,都使用非同步復位。這是因為同步復位的電路實現,比非同步復位的電路實現,要浪費更多電路資源。
工程實踐中,確實見過由於未做非同步復位的同步處理,而出現大概率系統宕機現象(復位的作用域是很大的)。
1.什麼是非同步復位
在帶有復位端的d觸發器中,當reset訊號「復位」有效時,它可以直接驅動最後一級的與非門,令q端「非同步」置位為「1」or「0」。這就是非同步復位。
當這個復位訊號release時,q的輸出由前一級的內部輸出決定(d埠)。
2.復位訊號的恢復時間t( recovery time ):
原本有效的復位訊號釋放(對於低電平有效的復位訊號指上公升沿),與緊跟其後的第乙個時鐘上公升沿之間的最小時間。
這個時間的意義是,如果保證不了這個最小恢復時間,也就是說這個非同步控制訊號的解除與「下個時鐘沿」離得太近(但在這個時鐘沿之前),沒有給暫存器留有足夠時間來恢復至正常狀態,那麼就不能保證「下個時鐘沿」能正常作用,也就是說這個「時鐘沿」可能會失效。
3.復位訊號的移除時間t(recovery time):
時鐘訊號的上公升沿,與緊跟其後非同步復位訊號從有效到無效的最小時間。
這個時間的意義是,如果保證不了這個去除時間,也就是說這個非同步控制訊號的解除與「有效時鐘沿」離得太近(但在這個時鐘沿之後),那麼就不能保證有效地遮蔽這個「時鐘沿」,也就是說這個「時鐘沿」可能會起作用。
4.恢復與移除時間的意義
如果你想讓某個時鐘沿起作用,那麼你就應該在「恢復時間」之前是非同步控制訊號變無效,如果你想讓某個時鐘沿不起作用,那麼你就應該在「去除時間」過後使控制訊號變無效。如果你的控制訊號在這兩種情況之間,那麼就沒法確定時鐘沿是否起作用或不起作用了,也就是說可能會造成暫存器處於不確定的狀態。而這些情況是應該避免的。所以在復位訊號的處理上,要遵守恢復時間和去除時間。
如下圖非同步復位時序所示,為復位電路復位時序圖。如果非同步復位訊號的撤銷時間在trecovery(恢復時間)和tremoval(移除時間)之內,那勢必造成亞穩態的產生,輸出在時鐘邊沿的tco後會產生振盪,振盪時間為tmet(決斷時間),最終穩定到「0」或者「1」,就會可能造成復位失敗。
5.總結
非同步復位訊號亞穩態的原因
復位結束也就是釋放的時刻,恰在時鐘上公升沿的建立時間和保持時間之間時,無法決定現在的復位狀態是1還是0,造成亞穩態。
1.電路結構
非同步復位:顯而易見,rst_async_n非同步復位後,rst_sync_n將拉低,即實現非同步復位。
同步釋放:這個是關鍵,看如何實現同步釋放,即當復位訊號rst_async_n撤除時,由於雙緩衝電路(雙暫存器)的作用,rst_sync_n復位訊號不會隨著rst_async_n的撤除而撤除。
假設rst_async_n撤除時發生在clk上公升沿,如果不加此電路則可能發生亞穩態事件,但是加上此電路以後,假設第一級d觸發器clk上公升沿時rst_async_n正好撤除,則d觸發器1輸出高電平「1」,此時第二級觸發器也會更新輸出,但是輸出值為前一級觸發器clk來之前時的q1輸出狀態。顯然q1之前為低電平,因此第二級觸發器輸出保持復位低電平,直到下乙個clk來之後,才隨著變為高電平。即同步釋放。
2.**實現
1module reset_gen ( output rst_sync_n, input
clk, rst_async_n);
2reg
rst_s1, rst_s2;
3wire
rst_sync_n ;45
always @ (posedge clk, posedge
rst_async_n)6if
(rst_async_n)
7begin
8 rst_s1 <= 1
'b0;
9 rst_s2 <= 1
'b0;
10end
11else
12begin
13 rst_s1 <= 1
'b1;
14 rst_s2 <=rst_s1;
15end
1617
assign rst_sync_n = rst_s2; //
注意這裡的rst_sync_n才是我們真正對系統輸出的復位訊號
1819
endmodule
IC設計中同步復位和非同步復位
非同步復位 非同步復位,同步釋放 本文部分摘自 verilog程式設計藝術 同步復位和非同步復位是積體電路設計中兩種不同的訊號復位方式。長期以來,關於這兩者之間的優劣眾說紛紜,而兩者又都在各種電路中被大規模使用,無法明確的判斷出孰好孰壞。本文對同步復位和非同步復位的優缺點進行了分析,並對比了兩種復位...
FPGA設計中的非同步復位 同步釋放思想
fpga設計中的非同步復位 同步釋放思想 1.乙個簡單的非同步復位例子 我們可以看到,fpga的暫存器都有乙個非同步清零端 clr 在非同步復位設計中,低電平有效的rst n復位訊號就可以直接連在這個埠上。如果是高有效的復位,綜合時會把它取反後接在這個埠上 2.乙個同步復位的例子 我們可以看到,該電...
FPGA設計中的非同步復位 同步釋放思想
1.乙個簡單的非同步復位例子 module test input clk,input rst n,input data in,output regout always posedge clk or negedge rst n if rst n out 0 else out data in endmo...