![565d5d00cf61f5c31ec2c29688475eca.png](https://i-blog.csdnimg.cn/blog_migrate/ec30786725b3d336a94aca4de81ac4d7.jpeg)
- 同步复位:复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。用Verilog描述如下:
always @ (posedge clk) begin
if (!Rst_n)
...
end
(1) 优点:
a.有利于仿真器的仿真。
b.可以使所设计的系统成为100%的同步时序电路。
c. 因为只有在时钟沿才有效,所以可以滤除高于时钟频率的毛刺。
(2) 缺点:
a. 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。
b. 同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
c. 由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。
2. 异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下:
always @ (posedge clk,negedge Rst_n) begin
if (!Rst_n)
...
end
(1) 优点
a. 大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
b. 设计相对简单。
c. 异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。
(2) 缺点:
a. 在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
异步复位中最严重的问题是,如果异步复位信号在触发器时钟有效沿附近“释放”(复位信号从有效变为无效)的话,可能会导致触发器输出的亚稳态。
![3a59e4000bc09c5f58873bcbb73fa313.png](https://i-blog.csdnimg.cn/blog_migrate/9d34b5506ebc5b75e5a6e31060e11137.jpeg)
- 异步复位信号释放(对低电平有效的复位来说就是上跳沿)与紧跟其后的第一个时钟有效沿之间,有一个必须间隔的最小时间称为Trecovery(recovery time,恢复时间)。
举例:如果异步复位释放后马上来了一个时钟有效边沿,触发器输出端的值将是不确定的,可能是高电平也可能是低电平,可能处于高低电平之间,也可能处于震荡状态,这就是亚稳态。 - 时钟有效沿与紧跟其后的异步复位信号释放之间所必须的最小时间称为tremoval(removal time消除时间)。小于这个时间,则触发器的输出端的值将是不确定的,可能是高电平,可能是低电平,可能处于高低电平之间,也可能处于震荡状态,并且在未知的时刻会固定到高电平或低电平。这种状态就称为亚稳态。
举例:如果时钟有效沿到来后,马上来了异步复位信号的上升沿(复位信号释放)触发器处于亚稳态。
b. 复位信号容易受到毛刺的影响。
3. 异步复位同步撤离:为了解决上述两种复位的缺点,同时兼顾缺点,使用异步复位,同步释放的方式,而且复位信号低电平有效,这样就可以两全其美了。