同步复位,异步复位,异步释放同步复位

复位:
复位是一种操作,可以使电路中某些寄存器的值为我们指定一个初始值,从而使电路能够正常工作;
Removal timing check
复位信号的removal time是指在时钟有效沿来临之后,异步复位信号需要继续保持有效的最短时间。满足这个最短时间才能确保对寄存器进行正常的复位。Removal time check的波形图如下图所示。
在这里插入图片描述Recovery timing check
recovery time是指在时钟有效沿到来之前,复位信号保持高电平的最短时间。即复位信号变到非复位状态的电平必须在clk之前一定的时间到达。满足这个Recovery time,可以确保在时钟有效沿来临时,异步复位信号处于无效状态,从而确保正常的数据采样。

复位信号分类:
同步复位:只有在时钟上升沿到来时,才能生效,否则无法完成对系统的复位工作。

always@(posedge clk)
if(~rst_n)
    q<=0;
else
    q<=d;

优点:
1、有利于仿真;
2、有利于消除毛刺信号;
3、整个电路都是同步电路,综合得到的时钟频率较高。
缺点:
1、复位信号必须要被系统识别才能完成复位任务;
2、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,耗费较多的逻辑资源。

异步复位:无论时钟沿是否到来,只要复位信号有效就对系统进行复位。

always@(posedge clk,negedge rst_n)
if(!rst_n)
    q<=0;
else
    q<=d;

优点:
1、逻辑i器件的目标库内有异步FIFO复位端口,可以节省资源;
2、设计相对简单;
3、异步复位信号识别方便,可以很方便的使用FPGA的全局复位端口。
缺点:
1、在复位信号释放(reset)的时候容易出现问题。具体来说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态;
2、复位信号容易受到毛刺影响。

异步复位,同步释放:复位信号来的时候不受时钟的控制,在复位信号释放的时候收到时钟信号的的同步。
在这里插入图片描述

分析
异步复位
当rst_async_n有效时,第一个D触发器的输出是低电平,第二个D触发器的输出rst_sync_n也是低电平,方框2中的异步复位端口有效,输出被复位。
同步释放
假设rst_async_n撤除时发生在clk上升沿,如果不加此电路则可能发生亚稳态事件。加上此电路以后,假设第一级D触发器clk上升沿时rst_async_n正好撤除,则D触发器1可能输出高电平,也可能输出亚稳态,也可能输出低电平。但此时第二级触发器不会立刻变高,它要么复位为0,要么跟随前一级触发器的输出Q1,而前一级触发器的输出Q1为0,因此,无论如何第二级触发器的输出都为0,而触发器1的输出,若稳定后Q1为1,那么rst_sync_n在下一个周期被拉高,实现同步释放;如果稳定后的Q1为0,那么下个周期rst_sync_n仍为0,但此时由于rst_async_n已经为高,所以Q1在下一个周期必为1,那么rst_sync_n在下一个时钟上升沿到来时被拉高,也实现了同步释放,只是晚了一个周期而已。
下面是异步复位同步释放的RTL代码实现:

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、第一级触发器的数据端口是接电源,即高电平1’b1。
2、第一级触发器的输出,不能使用,因为仍存在亚稳态的危险。两级触发器做同步,是非总线信号的最常见异步处理方法。总线信号的异步处理方法,最常见的是异步fifo实现。

总结:
1、复位同步器,第二个触发器当复位释放的时候,是否会带来亚稳态,比如reset释放和时钟之间存在recovery和removal timing违反怎么办?结论是:没有亚稳态,无需担心。
2、只有当DFF的数据输入端口和数据输出端口,存在值不同的情况下,才会有recovery timing/removal timing问题。
3、第1个dff的数据输入端口和数据输出端口,在异步复位释放的时刻,是1和0,所以会有竞争冒险,有概率产生亚稳态;
4、第2个dff的数据输入端口和数据输出端口,在异步复位释放的时刻,是0和0,所以不存在竞争冒险,不会产生亚稳态。
5、因为第1个dff有概率产生亚稳态,为了防止传播,所以,多加几级dff,降低亚稳态的传播概率是有益处的。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值