面试经典问题系列--同步复位与异步复位

最近遇到些复位的问题,在这里整理下有关同步复位、异步复位及异步复位同步释放

复位目的:

复位的基本目的是使器件进入到可以稳定工作的确定状态。 

 

如避免器件在上电后进入到随机状态导致跑飞了。或者运行一段时间后电路出现异常,此时复位可使电路从错误状态回到可以控制的确定状态

复位可分为同步复位/异步复位

同步复位

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

图片

(注意:在此always块中,敏感量只有一个,即clk的上升沿,此含义是,只有在clk的上升沿才能执行always块,否则不执行。)

综合出的电路如下。

理解:由于大多数寄存器没有单独的同步复位端口,综合出来的RTL一般是数据输入(data_in)和复位信号(rst_n)取与操作/如图的MUX(即只要rst_n和data_in其中一个为0,则输入端为0)。相比于异步复位,会额外消耗电路的组合逻辑资源。

优点:

1、可以使所设计的系统成为 100% 的同步时序电路,有利于时序分析,而且可综合出较高的 Fmax;
2、由于只在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的复位毛刺

缺点:

1、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑诸如 clk skew 、组合逻辑路径延时 、复位延时等因素(所以复位信号有时需要脉冲展宽,用以保证时钟有效期间有足够的复位宽度);


2、由于大多数的逻辑器件的目标库内的 DFF 都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会一方面额外增加FPGA内部的逻辑资源,另一方面也增加了相应的组合逻辑门时延。

异步复位:

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

异步复位触发器则是在设计触发器的时候加入了一个复位引脚,也就是说复位逻辑集成在触发器里面。低电平的复位信号到达触发器的复位端时,触发器进入复位状态,直到复位信号撤离。

图片

综合出的电路如下。

虽然异步复位没有占用额外的组合逻辑资源,但是其对复位信号的要求较高,假如复位信号中出现毛刺,会使整个寄存器执行复位操作。

优点:

1、使用异步复位的最大好处就是复位路径上没有延时,如上面的图所示,复位信号一直连接到触发器的复位端口,而不是像同步复位那样需要经过一个复位控制逻辑(如与门),这样子就减少了外界信号的影响

2、与时钟没有关系,不管时钟上升沿有没有到来,只要复位信号一有效,触发器就会复位,也就是基本上做到实时性

缺点:

异步复位信号在释放时容易出现问题(当复位信号从低拉高即为复位信号的释放)。异步复位信号在结束的时候,可能会不满足recovery和removal time可能使电路进入亚稳态

相关概念:相信大家还记得我之前在亚稳态一章节讲过的输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输。

图片

点此链接复习

面试经典问题系列--亚稳态与CDC(一)

类似的,对于一个异步复位寄存器来说,置位和复位信号同样需要和时钟满足recovery time和removal time才能有效进行置位和复位操作。

recovery time恢复时间。撤销复位时,恢复到非复位状态的电平必须在时钟有效沿到来之前的一段时间到来,才能保证时钟能有效恢复到非复位状态,此段时间为recovery time。(即下个时钟沿要让电路处于非复位状态

removal time :去除时间。撤销复位时,在时钟有效沿到来之后复位信号还需要保的时间为撤销时间removal time。(即上个有效时钟沿复位有效保持的时间

由于异步复位信号与系统时钟毫无关系,复位可以在随时施加,也可以随时撤离。在施加的时候复位信号的时候,不存在任何问题,因为这跟复位恢复时间无关。

但是,在撤离复位信号的情况下就可能存在问题,当异步复位信号的撤离时刻在时钟有效沿附近时,就可能导致恢复时间或去除时间不足,即这个时候违背了复位恢复时间或去除时间,这时就可能导致触发器的输出端为亚稳态。

那该如何解决?这就是今天要讲的重点:异步复位,同步释放。复位信号一般为低有效

异步复位,同步释放:

刚看到这词时,可能会比较迷糊,异步复位好理解,那什么叫同步释放呢?

先理解下为啥要同步释放?为了让异步复位信号的释放(理解为复位信号从低拉向高)时满足复位恢复时间或去除时间,降低亚稳态发生的概率。

回忆下之前跨时钟域单bit信号是如何处理的,相信大家已熟记于心,就是简单的打拍法,这里同步释放用的方法也是类似,只不过这里是将拉高的信号(即为高电平)经过同步器后打两拍后再送出以降低亚稳态发生的概率,而之前的打拍法是将跨时钟域输入的单bit信号经过同步器后打两拍后再送出。

若忘记跨时钟域单bit信号的处理

图片

点此链接复习

面试经典问题系列--亚稳态与CDC(二)

结合电路和代码理解下(需掌握):

图片

对代码的理解:可以简单理解为若复位信号 rst_async_n为0,即复位信号有效,那么此时rst_sync_n为0,即产生复位信号到电路中。

若复位信号从0到1时(即复位信号的释放),由于异步复位需要在时钟上升沿进行释放,这时利用打拍法将拉高的信号经过同步电路后再送到电路中,达到了复位信号的释放与时钟clk同步的目的。(即为异步复位的同步释放)。

文章同步发布在微信公众号:IC码农。分享日常所学和基础知识,分享历年大厂笔试题,秋招信息,EDA工具和培训视频,学习交流群,欢迎关注。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值