亚稳态及亚稳态解决方案_通俗易懂篇!

亚稳态,又称亚稳定性,是数字设备中导致系统失效的一种现象。

发生场景:亚稳态发生在非相关时钟域或异步时钟域的传输过程中。同步系统中,输入信号总是满足时序要求,不会出现亚稳态问题。

什么是亚稳态:每一个数字器件中,所有的寄存器都有设定的时序要求,根据要求,每一个寄存器都可以正确的捕获输入端口的数据,并激励输出信号到输出端口。为了保证这种操作的稳定性,输入端口的信号需要在时钟沿之前的最小时间段保持稳定(称之为建立时间必须在时钟沿之后的最小段时间保持稳定(称之为保持时间),在时钟特定的延迟后(Tco),输出有效数据。当某个信号出现建立保持违规,寄存器将进入亚稳定态,输入信号在建立保持时间发生变化,导致寄存器的输出会漂浮在高电平和低电平之间,这就意味着输出可能出现错误,并且在Tco之后,输出信号再度被延迟。

为什么会发生亚稳态:当信号在非相关时钟域或异步时钟域的传输过程中,(源时钟)前一个上升沿(沿敏感)到(目标时钟)下一个上升沿的时间是不固定的,是未知的,当时间过短,数据还没有路由到目标时钟寄存器端口,无法满足下游寄存器的上升沿到来之前,对数据提前到来的建立时间要求,导致建立违规,信号不是稳定的状态,在上升沿取样,结果就会在0和1之间的不确定态,导致亚稳态发生,正常信号的发出是在时钟信号经过寄存器Tco延迟后发出,而亚稳态的信号会在Tco延迟后,再延迟发出。(山谷效应)

亚稳态的问题是无法100%避免的,只能降低发生的概率,目前主要的参数是 MRBF的值(参数复杂,有兴趣的同学可以查阅相关资料),既两次失效的平均时间。

亚稳态解决方法:

        1、同步寄存器:当信号在非相关时钟域或异步时钟域传输,引用信号前必须同步到新的时钟,新时钟域的第一个寄存器就是同步寄存器。

        同步寄存器链的长度,可以两个也可以三个,多个寄存器可以减小亚稳态发生的概率,但是会增加节拍,增加下游的潜伏期。根据设计判断是否容忍,当输出信号是连续节拍时,不能用寄存器链来进行同步。

        鉴于此,可以使用DCFIFO双时钟FIFO来解决,连续节拍数据的跨时钟域传输问题。fifo的逻辑是仅使用同步器(同步寄存器链)来传输转换两个时钟域之间的控制信号,然而数据的读和写,则使用双端口的存储器。DCFIFO的ip核生产目的就在于此。dcfifo的实现逻辑并不复杂,大家也可以自己写自己的ip核,大家可以交流。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值