同步复位的优点:
- 一般能够确保电路是百分之百同步的。
- 确保复位只发生在有效时钟沿,可以作为过滤掉毛刺的手段。
同步复位的缺点:
- 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位。同时还要考虑如:时钟偏移、组合逻辑路径延时、复位延时等因素。
- 由于大多数的厂商目标库内的触发器都只有异步复位端口,采用同步复位的话,就会耗费较多的逻辑资源。
异步复位优点:
- 异步复位信号识别方便,而且可以很方便的使用全局复位。
- 由于大多数的厂商目标库内的触发器都有异步复位端口,可以节约逻辑资源。
异步复位缺点:
- 复位信号容易受到毛刺的影响。
- 复位结束时刻恰在亚稳态窗口内时,无法决定现在的复位状态是1还是0,会导致亚稳态。
异步复位与同步复位都不可靠。异步复位会影响寄存器的recovery时间,引起设计的稳定性问题,尤其对于状态机的无意识的复位,因其稳定性问题,尤其对于状态机的无意识的复位,将导致进入不确定的状态。同步复位也存在类似的问题,而且对于不带同步复位专用端口的器件会增加额外的逻辑资源。
下面介绍一种更为可靠的异步复位,同步释放的双缓冲电路。该电路有两个同一时钟触发的层叠寄存器组成,该时钟必须和目标寄存器是一个时钟域。
module RST_Module
(
rst,
clk,
rst_nr
);
input clk;//系统时钟信号
input rst;//复位信号输入
output rst_nr;//异步复位、同步释放输出
reg rst_nr1,rst_nr;
//两级层叠复位产生,低电平复位
always @(posedge clk or negedge rst)
begin
if(!rst) rst_nr1 <= 1'b0;
else rst_nr1 <= 1'b1;
end
always @(posedge clk or negedge rst)
begin
if(!rst) rst_nr <= 1'b0;
else rst_nr <= rst_nr1;
end
endmodule