跨时钟域知识点梳理

描述

随着实习面试的临近、秋招的逐步靠近,愈发觉得知识需要成系统,让它们串接起来。不然,太容易忘了

1、单比特信号

1.1电平同步

当我们需要在两个时钟域间传输一个电平信号,这里的电平信号表示信号能够维持一定的时间(如在原时钟域内至少维持两个周期),可以采用两个触发器打拍。

类似下面这种,持续一定时间,能在亚稳态稳定后采样到稳定的值,即第一个周期可能同步失败,但第二个周期有机会采样稳定的值,不发生亚稳态

脉冲

1.2、脉冲同步

当信号在发送端时钟域内只能持续一个周期时,可以称为脉冲信号。要注意的是,发送的是脉冲,收到的也应该是脉冲。

为了让脉冲能够被接收端采样,可以将脉冲信号在发送时钟域内变成电平信号。即采样到in_pulse为1,则翻转Q,将脉冲变成边沿。

只要脉冲有足够的间隔,就能保证接收端能够边沿检测,从而输出一个接收时钟周期的脉冲

脉冲

1.3 握手

很显然,上面两种方式不存在接收方对发送方的反馈。

也可以使用握手协议,确保一笔一笔的完成传输,只有完成一笔传输,才会改变数据。

见:握手信号传输跨时钟域数据

脉冲

1.4 展宽

当信号宽度不够,可以使用展宽的方法,如在发送域打拍,然后取或

脉冲

2、多bit

2.1 异步FIFO

使用异步FIFO传输数据--格雷码计数器实现

使用异步FIFO传输数据--对以前的强烈批判

2.2 多路复用

DMUX数据有效会搭配一个标志信号data_ready,对标志信号进行同步,将同步后的标志信号作为MUX的选通信号。

在发送时钟域内,标志信号和数据是同步的,在同步器内,标志信号同步有延迟。这样即使数据和标志信号在接收时钟上升沿附近变化,data_ready可能发生亚稳态,亚稳态结束后,同步后的标志信号可以正常工作。而数据在这些延迟内,能够达到稳定,即接收方采样的data是不变的,当然不会违反建立保持时间

这要求当data_ready=1时,data要保持

脉冲

换种方式,我们可以将标志信号作为于触发器使能端。道理是类似的,en=0,并不会使能触发器的采样

脉冲

2.3 握手

和单bit类似,协议让数据维持足够的时间

脉冲

2.4 双口RAM

双口RAM可以同时读写

脉冲

增加读写控制逻辑,很像异步FIFO,不多说

脉冲

3、收敛

当出现信号的合流时,如下图所示,dataa和datab将经过组合逻辑变成1bit。由于组合逻辑的延迟不同,可能出现毛刺,可能传输到错误的信号,

脉冲

解决办法就是发送方再打拍

脉冲

还要注意的是,两级同步后,也应该避免多比特使用组合逻辑,原因在于亚稳态恢复的数据不确定

脉冲

4、发散

当信号要作用于接收方的不同逻辑时,即有多个扇出,由于传播延时和不同的亚稳态解决时间meta-stable settling time,输出也可能不同。

因此只能先同步然后使用,避免分别同步使用

脉冲

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分