多比特信号跨时钟域同步问题

单比特数据为什么可以用两级同步?

单比特信号在跨时钟域时可以打两拍来避免亚稳态在新时钟域内传播,因为第二级触发器已经可以大概率的避免亚稳态了,只不过要采样的电平信号可能会晚1T或2T到来。接收端通过检测上升沿或者下降沿就可以检测到这个事件,这样便不会引起功能出错。

多比特信号为什么不能用两级DFF同步?

有人会问了,既然单比特信号可以通过两级同步,那么多比特信号为什么不能通过两级同步器进行同步呢?答案其实也很简单,clk1不知道clk0什么时候把数据准备好了。必须要通过相应的握手信号由发送端告知接收端什么时候可以去采样。如果不这样直接同步的话便会导致错误的数据在接收端传播,导致下游模块功能出错。怎么理解呢?多比特信号同步时,由于信号skew的存在,使得这些信号的变化可能不会同时到来,这样接收端去采样的话有些信号线已经变化了而有些还没变,这样导致采集一些不希望出现的错乱值。所以要用握手信号告诉接收端采样的时机。

为什么FIFO中可以用格雷码打拍同步?

假设在A时钟域,一个数从5变成6,要同步到B时钟域。
二进制表示为101->110
格雷码表示为111->101
假设用二进制数直接同步,那么同步后的值就可能是110,也可能是101,或者从没出现过的100,111,虽然最终还是会输出正确的110,但是中间不该出现的值可能已经导致了FIFO的空满标志位判断错误。
用格雷码同步呢?由于两个数据之间只有一个比特翻转,即使有skew的存在,同步过后的值要么是111要么下一个周期之后变成101。不管是111还是101都不会导致接收端FIFO的标志位判断错误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值