先看一下同步复位和异步复位:
同步复位:
优点:有利于仿真器仿真;确保电路100%同步,有利于时序分析;复位只发生在时钟有效沿,可以过滤掉高于时钟频率的毛刺。
缺点:复位信号必须长于一个时钟周期;大多数厂商只有异步复位端口,同步复位需插入组合逻辑,耗费资源。
异步复位:
优点:无需额外的组合逻辑,节约资源;复位信号识别简单。
缺点:复位信号释放时,若恰恰在时钟沿附件,亚稳态;复位信号容易受到毛刺影响。
异步复位,同步释放
代码如下:
module sync_rst(
input clk,
input rst_async_n,
output rst_sync_n
);
reg rst_s1, rst_s2;
always@(posedge clk or negedge rst_async_n) begin
if(!rst_async_n) begin
rst_s1<=0;
rst_s2<=0
end
else begin
rst_s1<=1;
rst_s2<=rst_s1;
end
end
assign rst_sync_n = rst_s2;
endmodule