亚稳态的危害及预防

上一篇文章大致价绍了亚稳态的形成原因,这一篇文章就介绍亚稳态的危害以及怎么样避免亚稳态。
首先要介绍二个概念:恢复时间以及移除时间(个人感觉有点类似Setup和Hold)
这里写图片描述
恢复时间(Recovery):在时钟沿到来之间异步信号必须保持稳定的时间;
移除时间(Removal):在时钟沿到来之后异步信号必须保持稳定的时间。
为什么介绍这二个概念?下面的分析就用到了。
我们知道亚稳态的主要来源是异步逻辑,那么分情况来看:
1:异步复位通常会存在亚稳态的隐患
如下图所示,复位信号与时钟信号没有任何关系,不在同一时钟域中,显然复位信号与时钟信号是异步关系,异步复位逻辑。
这里写图片描述
以上介绍了恢复时间以及移除时间的概念,下面用时序图分析,异步复位的危害:
这里写图片描述
在上如所示中,复位信号能够满足Recovery信号的要求,在这种情况下复位有效。其实大多数情况下,异步复位都是有效的,只在小部分情况下会出现如下图所示的情况:
这里写图片描述
Recovery违例,在这种情况下,由上图明显看出来,触发器会进入亚稳态。也就是复位无效,系统无法正常工作。
在FPGA设计中通常会由计数器、状态机等,使用异步复位很容易导致计数器无法正常清零、状态机在某个状态吊死。这些对于系统而言都是致命。
2、异步时钟域信号的传递
在FPGA设计中经常会由信号在在不同时钟域之间传递的情况,在这种情况下也会存在各种亚稳态的隐患。模型如下图所示:
这里写图片描述
信号在不同时钟域之间传递,模型所示由慢时钟域传递到块时钟域。由于异步时钟,所以对于快时钟域而言慢时钟具有不可预测性,如下图所示:
这里写图片描述
造成在第二个触发器的Dout输出端输出高电平与低电平之间的一个不稳定状态(亚稳态)。该实例传递信号为单比特信号,对快时钟域的影响一般在捕获数据不正确、寄存器无法正常操作以及也会出现异步复位产生的那些问题。对于多比特数据而言(一般在数据采集,用作数据总线),造成采集数据错误。
亚稳态对于数字电路的危害是很大的,我们一般在数字电路的设计中需要尽可能的避免亚稳态的发生。首先向大家介绍一个经典的同步电路:
这里写图片描述
该同步电路基本实现方式就是使用本地时钟将异步输入信号打入本地触发器链中(一般使用二个触发器足够)。如上图所示:Din进入Clock2时钟域的第一个触发器后在进入后一级触发器后一级触发器输出进入组合逻辑中。
至于为什么双触发器可以用作同步器呢?下面就来解释这个问题:
我们将触发器链的第一个触发器称为FF1第二个称为FF2…..第N个称为FFn。
异步信号Din进入本地时钟域的FF1的D端,由于是异步信号,存在亚稳态的风险(产生亚稳态是由一定概率的,这里就不仔细说明了),输出是非高非低的一个中间态。此时亚稳态传递到后面的电路,但是亚稳态信号不能够长期保持,亚稳态信号最终自己会变成稳态信号。这时有FF2,在下一个时钟上升沿采集FF1的输出,相当与给出一个时钟周期让亚稳态信号恢复成稳态信号的恢复时间。FF2采集到恢复成为稳态的信号输出。
但靠二级触发器也能不能完全避免亚稳态的发生,以上提到亚稳态信号总会由亚稳态自己变成稳态,但是这个时间不是完全确定的。所以只能说双触发器搭建的同步电路只能一定程度上避免亚稳态的发生(不过经过概率计算,双触发器号称将亚稳态发生的概率减少到了几年发生一次)。不过根据以上分析可以很明显发现触发器链越长发生亚稳态的概率越低,二级触发器之间完全不能有组合逻辑且二级触发器的物理路径越近越好。
一般系统使用二级触发器做同步化处理已经是足够。但注意双触发器作为同步器只能用在单比特数据的传递中。原因很简单因为同步器输出只能保证是一个稳态不能不能保证是一个确定的值。故多比特数据使用同步器还是会出现乱码的情况。对于多比特数据的操作一般使用异步Fifo,后续会详细介绍
这里写图片描述

上图时序反应了时钟双触发器的同步电路最终输出一个稳定的信号。
其实避免亚稳态的发生主要就是避免异步信号的时钟,使用双触发器同步电路的精华就是将异步信号同步化操作。
下面分情况讨论怎么避免亚稳态:
1、 异步复位电路:
异步复位信号相当于本地时钟域是异步信号,同样为了异步信号同步化,使用双触发器同步电路将异步复位信号同步到本地时钟域。
这里写图片描述
2、 单比特异步信号:
对于单比特信号使用以上使用的双触发器同步电路可以一定程度避免亚稳态的发生。
3、 多比特异步信号:
对于多比特信号一般使用Fifo来处理。由于Fifo控制器可以分别用不同时钟域来分别控制写逻辑和读逻辑。能将不同时钟域很好的分割开。所以对于多比特数据跨时钟域的Fifo是一个很好的选择。
以上只是简单的介绍了通用的预防亚稳态发生处理的方式,其实对于跨时钟域信号的处理还有很多局限性,之后再与大家详细讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值