数字电路设计中遇到跨时钟域(clock domain crossing, cdc)的电路时一般都需要特别的处理,例如同步器,异步fifo等。那么为什么cdc需要特别的处理,如果不做处理又会导致什么问题。
亚稳态
我们都知道数字电路中有两个最重要的概念,建立时间和保持时间。通过满足建立时间和保持时间,我们可以确保信号被正确的采样,即1采到便是1,0采到便是0。但是如果不满足建立时间和保持时间,采到的信号会进入一个不稳定的状态,无法确定是1还是0,我们称之为亚稳态。这个亚稳态的信号会在一段时间内处于震荡状态,直到稳定,而稳定后的状态值与被采样值无关,可能是0也可能是1。
图1【1】所示的是异步时钟采样失败的情况。当数据(adat)的变化离采样时钟(bclk)的变化沿很近时,由于不满足建立时间,导致采样到的信号(bdat1)进入亚稳态。
异步时钟由于时钟相位不同,图1的情况往往难以避免,这也是跨时钟域时容易发生亚稳态的原因。
亚稳态会导致什么问题
由于亚稳态的信号会在一段时间内处于震荡状态,后续不同的逻辑可能会将该信号识别为不同的状态值,甚至是后续逻辑也出现亚稳态的情况,导致逻辑的错误和混乱,比如状态机出现错误的跳转从而锁死在某个状态。
同步器
最常用的同步器是两级触发器,如图2【1】:
第一级触发器采样后出现亚稳态,第二级触发器在经过一个时钟周期的等待之后采样到一个稳定状态的信号,达到消除不定态的目的。不过要注意,这样的同步器只是减小了亚稳态发生的概率,并不能完全消除亚稳态的发生。而亚稳态发生的概率的大小一般可以用mtbf(mean time between faliure)来表示。mtbf的值越小表示亚稳态发生的频率越高。
图3【2】表示了mtbf的影响因子,可以看到,当时钟频率越高,数据发生变化的频率越高,mtbf越小,即亚稳态发生的频率也越高。
对于一些高频电路设计,两级触发器所构成的同步器mtbf仍然很小,这时候可以考虑再添加一级触发器,即使用三级触发器。另外,我们也希望当数据被异步时钟采样时数据的变化频率也尽可能小,因此一般数据在跨时钟域之前最好可以用寄存器打一拍,减少数据的变化,从而减小亚稳态发生的概率。
值得注意的是,同步器的使用只是消除了不定态,但是同步器的输出仍然可能是错误的,可能被采样的信号是1,但是同步器输出的确是0。这样的错误是否是电路可以接受的要依据不同的设计来看,这便涉及到另外一个话题,如何使系统对产生的错误不敏感,本文暂不讨论。
华为开启鸿蒙OS首批消费者尝鲜计划
电线曲挠试验机的发展
单火线设计:拓展应用-单火开关实现双控
欠水费停工,特斯拉柏林工厂负责监督建设的高管已经离职
非常实用的DC-DC选型指南
跨时钟域处理的亚稳态与同步器
AI识别亲吻动作,也搞起浪漫来
国星光电: 首款MiNi LED IMD-M09已经量产,实现162寸4K的LED显示大屏
提升用户体验:OLED透明屏触摸技术在智能手表中的应用
区块链可以帮助汽车企业确认其可持续性
“第九届中国IC设计业企业家评选”活动
热烈祝贺萨科微销售业绩达到2023年第一阶段目标
水库水文监测系统解决方案
华为Kirin 980参数曝光 GPU性能预计会有大幅提升
简易频率合成信号源的制作方法
区块链最具价值落地的游戏“时间矿工”介绍
欧司朗红外传感器实现对车载显示器的无接触控制
亿铸科技获评2023江苏省潜在独角兽企业
我们该如何选购工业无人机才不会后悔呢
泰克THS3000系列手持示波器的应用功能及范围