为什么需要“异步复位,同步释放”?
- 同步复位,同步释放,需要对复位信号进行同步,对于外部复位而言容易形式死锁。类似于鸡生蛋蛋生鸡。多用于软复位。
- 异步释放容易导致亚稳态。相当于没有复位。
“异步复位,同步释放”的实现
always @ (posedge clk, negedge rst_async_n)
if (!rst_async_n) begin
rst_s1 <= 1'b0;
rst_s2 <= 1'b0;
end
else begin
rst_s1 <= 1'b1;
rst_s2 <= rst_s1;
end
assign rst_sync_n = rst_s2;
endmodule
主要原理是用2个寄存器实现。