跨时钟域为什么要双寄存器同步

在这里插入图片描述

随着设计规模的不断攀升,各种接口外设琳琅满目,时钟“满天飞”就不可避免(注意这里的“满天飞”不是滥用,意指时钟频率多、时钟扇出多)。而一个设计中,不同时钟频率之间你来我往更是在所难免。那么,这就出现了题目中的跨时钟域的同步问题?怎么办?十年不变的老难题。为了获取稳定可靠的异步时钟域送来的信号,一种经典的处理方式就是双寄存器同步处理(double synchronizer)。那为啥要双寄存器呢,一个不就够了吗?

先来看看,这张老得掉牙,经典得不能再经典的示意图。Aclk和bclk是两个不同的时钟域,bclk比aclk要稍微慢一点(哦,我的天哪,要用慢时钟采集快时钟的数据,又是一个难),与aclk同步的数据adat某个时钟周期拉高了(注意,只保持了1个时钟周期)。接下来,要用bclk时钟去采集只保持了一个aclk时钟周期的adat数据。理论上,这不符合奈奎斯特定律,很难成功,但是大家不要较真,这里重点不在这里。我们要关注的其实是那个不偏不倚bclk采样时(bclk时钟上升沿)正好对准了adat的下降沿(上升沿也类似),好开心,奈奎斯特老爷爷的定律被打破了。

数据采是采到了,但是不稳定,从模拟信号的角度看,bclk采集到的数据就是一个中间电平,到低最终判定是1还是0,很抱歉,看上去好像都不是。数字电路终归还是一个模拟电

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值