您好,登錄后才能下訂單哦!
關于FPGA同一個工程中如何進行同步異步復位
同步復位:需要時鐘的產生,在時鐘的進行下進行復位;
異步復位:無需時鐘,即可進行復位。
問題:
有些信號,異步復位,在時鐘來之前就已經復位了,而同步復位有可能在時鐘來時,復位信號已經無效了。
解決:
我們在需要在進行異步復位的時候就對同步復位,做好觸發準備。
為了解決在同一個工程不同復位并存的問題,特做以下總結:
具體代碼如下:
module rst_syn(
input wire clk,
input wire i_rst_n,//異步復位信號輸入
output wire O_rst_n//同步復位信號輸出
);
reg rst_ff1;
reg rst_ff2;
reg rst_ff3;
always @(posedge clk or posedge i_rst_n)
begin
if(i_rst_n)
begin
rst_ff1 <= 1'b0;
rst_ff1 <= 1'b0;
rst_ff1 <= 1'b0;
end
else
begin
rst_ff1 <= 1'b1;
rst_ff2 <= rst_ff1;
rst_ff3 <= rst_ff2;
end
end
always @(posedge clk or posedge i_rst_n)
begin
if(i_rst_n)
O_rst_n <= 0;
Else
O_rst_n <= rst_ff3;
end
代碼的主要內容:就在異步復位的時鐘時,將o_rst_n <= 1;作為條件,在clk來時進行同步復位。
仿真結構圖:
見附件
上圖所示,實現了異步復位和同步復位并存。
備注:時鐘是由PLL生成的,所以復位后幾個時鐘后方可產生時鐘,產生時鐘時同步復位信號已經無效,所以需要上述處理辦法。
建議:一般在同一個工程里使用一個復位,如果時間不一致容易出問題。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。