為確保系統(tǒng)上電后有一個明確、穩(wěn)定的初始狀態(tài),或系統(tǒng)運行狀態(tài)紊亂時可以恢復到正常的初始狀態(tài),數(shù)字系統(tǒng)設(shè)計中一定要有復位電路的設(shè)計。 復位電路異常可能會導致整個系統(tǒng)的功能異常,所以在一定程度上來講,復位電路的重要性也不亞于時鐘電路。
復位電路可分類為同步復位和異步復位。
同步復位
同步復位是指復位信號在時鐘有效邊沿到來時有效。 如果沒有時鐘,無論復位信號怎樣變化,電路也不執(zhí)行復位操作。
同步復位的典型代碼描述如下:
module sync_reset(
input rstn, //同步復位信號
input clk, //時鐘
input din, //輸入數(shù)據(jù)
output reg dout //輸出數(shù)據(jù)
);
always @(posedge clk) begin //復位信號不要加入到敏感列表中
if(!rstn) dout <= 1'b0 ; //rstn 信號與時鐘 clk 同步
else dout <= din ;
end
endmodule
該代碼描述常常會被綜合成如下電路:
同步復位的優(yōu)點:信號間是同步的,能濾除復位信號中的毛刺,有利于時序分析。
同步復位的缺點:大多數(shù)觸發(fā)器單元是沒有同步復位端的,采用同步復位會多消耗部分邏輯資源。 且復位信號的寬度必須大于一個時鐘周期,否則可能會漏掉復位信號。
異步復位
異步復位是指無論時鐘到來與否,只要復位信號有效,電路就會執(zhí)行復位操作。
異步復位的典型代碼描述如下:
module async_reset(
input rstn, //異步復位信號
input clk, //時鐘
input din, //輸入數(shù)據(jù)
output reg dout //輸出數(shù)據(jù)
);
//復位信號要加到敏感列表中
always @(posedge clk or negedge rstn) begin
if(!rstn) dout <= 1'b0 ; //rstn 信號與時鐘 clk 異步
else dout <= din ;
end
endmodule
該代碼描述常常會被綜合成如下電路:
異步復位的優(yōu)點:大多數(shù)觸發(fā)器單元有異步復位端,不會占用額外的邏輯資源。 且異步復位信號不經(jīng)過處理直接引用,設(shè)計相對簡單,信號識別快速方便。
異步復位的缺點:由于是異步電路,復位信號與時鐘信號無確定的時序關(guān)系,異步復位很容易引起時序上 removal 和 recovery 的不滿足。 且異步復位容易受到毛刺的干擾,產(chǎn)生意外的復位操作。
異步復位同步釋放
綜合設(shè)計與資源等方面的考慮,一般數(shù)字系統(tǒng)設(shè)計時都會使用異步復位。
為消除異步復位的缺陷,復位電路往往會采用“異步復位、同步釋放”的設(shè)計方法。 即復位信號到來時不受時鐘信號的同步,復位信號釋放時需要進行時鐘信號的同步。
異步復位、同步釋放的典型代碼描述如下:
module areset_srelease(
input rstn, //異步復位信號
input clk, //時鐘
input din, //輸入數(shù)據(jù)
output reg dout //輸出數(shù)據(jù)
);
reg rstn_r1, rstn_r2;
always @ (posedge clk or negedge rstn) begin
if (!rstn) begin
rstn_r1 <= 1'b0; //異步復位
rstn_r2 <= 1'b0;
end
else begin
rstn_r1 <= 1'b1; //同步釋放
rstn_r2 <= rstn_r1; //同步打拍,時序差可以多延遲幾拍
end
end
//使用 rstn_r2 做同步復位,復位信號可以加到敏感列表中
always @ (posedge clk or negedge rstn_r2) begin
if (!rstn_r2) dout <= 1'b0; //同步復位
else dout <= din;
end
endmodule
該代碼描述常常會被綜合成如下電路:
需要說明的是,復位電路也會消耗更多的硬件邏輯和面積資源,增加系統(tǒng)設(shè)計的復雜性。 不帶復位端的觸發(fā)器也具有相對較高的性能。 所以在一些初始值不影響邏輯正確性的數(shù)字設(shè)計中,例如數(shù)據(jù)通路中一些數(shù)據(jù)處理的部分,高速流水線中的一些寄存器,可以考慮去掉復位以達到最佳性能。
為方便、快速的仿真非復位邏輯的其他功能,教程所有數(shù)字設(shè)計中的復位都是從 testbench 中引入異步復位,沒有考慮復位電路是否能正常工作。 實際設(shè)計數(shù)字系統(tǒng)時,一定要對復位電路進行單獨、仔細、慎重的設(shè)計。
-
復位電路
+關(guān)注
關(guān)注
13文章
322瀏覽量
44586 -
時鐘電路
+關(guān)注
關(guān)注
10文章
236瀏覽量
50717 -
同步復位
+關(guān)注
關(guān)注
0文章
27瀏覽量
10711 -
異步復位
+關(guān)注
關(guān)注
0文章
47瀏覽量
13311 -
復位信號
+關(guān)注
關(guān)注
0文章
54瀏覽量
6314
發(fā)布評論請先 登錄
相關(guān)推薦
評論