亚稳态及跨时钟域(CDC)问题的常用解决思路

目录

1 亚稳态

2 CDC问题

 2.1 CDC导致亚稳态

2.2 CDC导致的数据收敛问题

 2.3 CDC导致数据丢失

2.4 CDC多路扇出

 2.5 CDC异步复位


说明:本文内容来自网络学习,仅用作自己学习记录使用。

1 亚稳态

在知道亚稳态之前要先知道寄存器的建立时间(setup)和保持时间(hold)的概念。

 简单理解就是在时钟上升沿到来之前和到来之后,触发器对D端寄存的数据必须都稳定一小段时间,才能保证Q端得到正确的数据。如果D端的数据在建立时间和保持时间范围内发生变化,即不稳定,则Q端采样的数据是不稳定的,不正确的,这就是触发器的亚稳态。建立时间和保持时间是由触发器的生产厂家的工艺决定的。

若要保证电路的稳定工作,则需要处理好各个触发器的时序关系以达到时序要求。对于同步电路来说,所有信号的寄存都是在同一个时钟节拍下工作的,可采用静态时序分析工具(STA)来分析各个触发器的时序关系。而对于异步电路来说,由于信号的采样发生在不同的时钟域下,即会产生CDC问题。

2 CDC问题

CDC会产生一系列问题。        

 2.1 CDC导致亚稳态

对于单信号来说,采用2级寄存器来避免亚稳态对后续电路的影响。

2.2 CDC导致的数据收敛问题

 解决方法1:对连续变化的数据采用格雷码编码,B时钟域下接收到数据后判断是否和前一次数据只相差1位的不同,用来确定数据是否正确,因此该方法适用于对数据连续变化的场景,比如fifo的地址等。

 解决方法2:使用握手协议,在传输多bit的数据时候,发送端先发出一个req信号,接收端对req寄存2级稳定后,接收数据线上的数据,接收完成后,给发送端发送一个ack信号,接收端也对ack寄存2级,发送端在收到ack信号后撤销req信号,随后接收端也撤销ack。

 解决方法3:使用fifo。

 

 2.3 CDC导致数据丢失

2.4 CDC多路扇出

 2.5 CDC异步复位

在异步复位时候由于复位信号在释放时候可能在时钟上升沿前后发生变化导致寄存不稳定的值,因此将其寄存2级寄存器,即异步复位,同步释放。

 

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值