1.同步复位
(1)概念:同步复位是指,复位信号只有在时钟上升沿到来时才有效。
(2)Verilog描述:由同步复位的概念,即可知道其Verilog描述如下
always@(posedge clk)begin
if(!rst_n)
...
else
...
end
(3)同步复位优缺点
优点:
① 有利于仿真器的仿真;
② 可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综
合出来的fmax一般较高。
③ 因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。
缺点:
① 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时
还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
② 由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步
复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的
逻辑资源。
2.异步复位
(1)概念:异步复位是指,只要复位信号有效即进行复位操作,而不管时钟上升沿是否到来。
(2)Verilog描述:由异步复位的概念,即可知道其Verilog描述如下
always@(posedge clk or negedge rst_n)begin
if(!rst_n)
...
else
...
end
(3)异步复位优缺点
优点:
① 大多数目标器件库的DFF都有异步复位端口,因此采用异步复位可以节省资源。
② 设计相对简单。
③ 异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。
缺点:
① 在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在
时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
② 复位信号容易受到毛刺的影响。
3.异步复位,同步释放
(1)概念:所谓异步复位,同步释放就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。
(2)原理分析:
异步复位缺点1:复位信号释放的时候容易出现亚稳态,导致输出异常。
异步复位缺点2:复位信号容易受到毛刺的影响。
异步复位电路中,如果rst_n有一短暂有效期(毛刺),这样可能会导致复位不完全,系统出现混乱。
解决思路:
针对毛刺问题,给rst_n_s再添加一级时钟延迟,即可保证rst_n_s的有效时间 > 时钟周期,因而能够避免毛刺带来的复位不完全这一问题。
(3)Verilog描述
module reset
(
input clk,
input rst_n,
output rst_syn_n
);
reg reg1;
reg reg2;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
reg1 <= 1'b0;
reg2 <= 1'b0;
end
else begin
reg1 <= 1'b1;
reg2 <= reg1;
end
end
assign rst_syn_n = reg2;
endmodule
`timescale 1ns/1ns
module reset
(
input wire clk ,
input wire rst_n, //系统复位信号
input wire d ,
output reg dout
);
reg rst1,rst2;
wire rst;
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
rst1 <= 0;
rst2 <= 0;
end
else begin
rst1 <= 1;
rst2 <= rst1;
end
end
assign rst = rst2;
always@(posedge clk or negedge rst)begin
if(!rst)
dout <= 0;
else
dout <= d;
end
endmodule
复位是异步的,但是释放确实同步的;用两级寄存器,是消除复位释放中可能存在的亚稳态。
异步复位,同步释放的好处是:
(1)不要求复位信号必须大于一个时钟周期;
(2)因为释放过程和时钟同步,所以避免了亚稳态。
兼具同步复位和异步复位的优点。