大多數的復位操作通常是直接將rst_n訊號拉低或置高,直接進行復位。但是這樣會產生乙個很大的問題,如果復位操作位於資料取樣沿的setup或holdon時間內,會發生什麼?整個電路會出現亞穩態,可能導致復位失敗。
此時,如果採用非同步復位,同步釋放的操作,就能避免亞穩態的出現。
先上**:
module rst
( input clk,
input rst_in,
output reg rst_out
); reg rst_q;
always @(posedge clk or negedge rst_in) begin
if(!rst_in)
rst_q <=
1'b0;
else
rst_q <=
1'b1;
endalways @(posedge clk or negedge rst_in) begin
if(!rst_in)
rst_out <=
1'b0;
else
rst_out <= rst_q;
endendmodule
測試**:
module tb;
reg clk;
reg rst_in;
wire rst_out;
initial begin
clk =0;
rst_in =0;
#117 rst_in =1;
#205 rst_in =0;
#553 rst_in =1;
#600 $finish;
endalways #10 clk =
~clk;
rstu1(.
clk(clk),.
rst_in
(rst_in),.
rst_out
(rst_out));
endmodule
這個是綜合出來的電路:
**時序圖:
底下是放大的幾張:
同步復位 非同步復位 非同步復位同步釋放筆記
同步復位 非同步復位 非同步復位同步釋放筆記 一般來說,競爭 冒險是由於組合電路競爭冒險產生毛刺,從而影響整個邏輯電路。其實時序電路中也是存在競爭 冒險的,而這一特性主要是由d觸發器輸入端訊號之間的竟爭產生的。存在以下兩種競爭 冒險。1 clk上公升沿與rstn下降沿同時到達 實際上對於d觸發器而言...
非同步復位同步釋放
結構簡單,節省資源 待深度挖掘,為什麼就結構簡單了呢?1 這裡有乙個巨集觀解釋 最好是系統一起復位釋放,但是時鐘域不同,不可能保證系統一起復位釋放。一般來說,系統復位釋放的順序,是需要保證的。否則系統就是不安全的。舉個例子,系統啟動時,核心讀取啟動指令,要powerdown某外設 但是powerdo...
非同步復位同步釋放
簡介 在實際的工程中選擇復位策略之前必須考慮許多設計方面的問題,如使用同步復位或者非同步復位或者非同步復位同步釋放 asynchronous reset synchronous release或者synchronized asynchronous reset 以及是否每乙個觸發器都需要進行復位。復位...