Verilog HDL 同步复位和异步复位(转)

目录

1、同步复位

2、异步复位

3、同步/异步复位对比

4、异步复位同步释放

4.1、异步复位同步释放原理


 

在实际的工程中选择复位策略之前必须考虑许多设计方面的问题,如使用同步复位或者异步复位或者异步复位同步释放(Asynchronous Reset Synchronous Release或者Synchronized Asynchronous Reset),以及是否每一个触发器都需要进行复位。复位的基本目的是使器件进入到可以稳定工作的确定状态,这避免了器件在上电后进入到随机状态导致跑飞了。在实际设计过程中,设计者必须选择最适合于设计本身的复位方式。

 

1、同步复位

同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。同步复位RTL代码:

always @(posedge clk)
    begin
        if(!rst) dout<=0;
    else dout<=din;
end

该代码综合出来的硬件电路如下图所示:

同步电路也会发生亚稳态,只是几率小于异步复位电路。

当输入端Din为高电平,而且复位信号的撤销时间在clk的Tsu和Th内时候,亚稳态就随之产生了。如图时序所示,当复位撤销时间在clk的TsuTh内,输入数据为“1”,通过和输入数据相与后的数据也在clk的Tsu和Th内,因此,势必会造成类似异步信号采集的亚稳态情况;

 

2、异步复位

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

always @(posedge clk or negedge rst_n)
begin
    if(!rst_n) a <= 1’b0;
    else a <= b;
end

该代码综合出来的硬件电路如下图所示:

如果rst信号的撤销在Trecovery和Tremoval之内,那势必会产生亚稳态。输出会在时钟边沿的Tc2q时间之后产生振荡,在Tmet时间之后稳定在某个电平上,而Tmet时间就是决断时间,这样的话就会造成复位失败。整个过程如下图所示:

 

3、同步/异步复位对比

同步复位的优点:

  • 一般能够确保电路是百分之百同步的。
  • 确保复位只发生在有效时钟沿,可以作为过滤掉毛刺的手段。

同步复位的缺点:

  • 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位。同时还要考虑如:时钟偏移、组合逻辑路径延时、复位延时等因素。
  • 由于大多数的厂商目标库内的触发器都只有异步复位端口,采用同步复位的话,就会耗费较多的逻辑资源。

异步复位优点:

  • 异步复位信号识别方便,而且可以很方便的使用全局复位。
  • 由于大多数的厂商目标库内的触发器都有异步复位端口,可以节约逻辑资源。

异步复位缺点:

  • 复位信号容易受到毛刺的影响。
  • 复位结束时刻恰在亚稳态窗口内时,无法决定现在的复位状态是1还是0,会导致亚稳态。

 

4、异步复位同步释放

使用异步复位同步释放就可以消除上述缺点。所谓异步复位,同步释放就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。

一般来说,同步系统,都使用异步复位。这是因为同步复位的电路实现,比异步复位的电路实现,要浪费更多电路资源。
未在本模块时钟域做过“异步复位,同步释放”处理的复位信号,提供给本模块做异步复位使用时,都需要做“异步复位,同步释放”处理。常见于系统内两部件不在同一时钟域的情况下。

工程实践中,确实见过由于未做异步复位的同步处理,而出现大概率系统死机现象(复位的作用域是很大的)
 

4.1、异步复位同步释放原理

这里写图片描述

Verilog 代码实现:

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  

通过 reset_gen 处理的复位信号,在异步复位的复位过程中,复位信号直接作用到 rst_sync_n 端,起到异步复位的作用;

在复位信号释放的时候,第一级触发器的输入是 Vcc,也就是 1,在下一个时钟节拍后,同步打入到第二级触发器,实现了释放的同步;

 

参考文档:https://blog.csdn.net/u011729865/article/details/49281713

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值