同步复位:复位启动时同步于寄存器的时钟域。优势在于百分之百地同步时序分析且具有抗噪声性能。缺点在于同步电路参与反馈而引起不想要的状态。
always @(posedge clk)
if(!rst_n)
begin
.......
end
else
begin
.......
end
异步复位:与寄存器所在的时钟域之间并无确定的时序关系,正因如此得到异步复位信号的时序是非常困难的。优势在于不参与数据路径,所以不影响数据路径速度,复位几乎是瞬间作用。缺点在于释放的时候会导致一些类似亚稳态的问题以及对噪声不敏感。
always @(posedge clk or negedge rst_n)
if(!rst_n)
begin
.......
end
else
begin
.......
end
异步复位同步释放:复位信号是异步有效的,即复位的发生与时钟无关;复位信号的释放是与时钟有关的,即同步的。寄存了一级DFF相当于
reg rst_nr1, rst_nr2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
rst_nr1 <= 1'b0;
rst_nr2 <= 1'b0;
end
else
begin
rst_nr1 <= 1'b1;
rst_nr2 <= rst_nr1;
end
end