zxopenluyutong 发表于 2021-1-14 11:32:15

异步复位,同步释放

什么情况下,复位信号需要做“异步复位,同步释放”处理?

回答:一般来说,同步系统,都使用异步复位。这是因为同步复位的电路实现,比异步复位的电路实现,要浪费更多电路资源。
未在本模块时钟域做过“异步复位,同步释放”处理的复位信号,提供给本模块做异步复位使用时,都需要做“异步复位,同步释放”处理。常见于系统内两部件不在同一时钟域的情况下。

工程实践中,确实见过由于未做异步复位的同步处理,而出现大概率系统死机现象(复位的作用域是很大的)。
代码实现:
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
利用前面两级触发器实现。特点:
•第一级触发器的数据端口是接电源,即高电平1’b1。
•第一级触发器的输出,不能使用,因为仍存在亚稳态的危险。两级触发器做同步,是非总线信号的最常见异步处理方法。总线信号的异步处理方法,最常见的是异步fifo实现。
页: [1]
查看完整版本: 异步复位,同步释放