fpga的非同步復位同步釋放操作

2021-10-09 10:46:53 字數 1441 閱讀 5863

大多數的復位操作通常是直接將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 以及是否每乙個觸發器都需要進行復位。復位...