异步时钟域处理的七种方法

本文详细探讨了在不同时钟源间的信号跨时钟域处理技术,包括单bit和多bit的处理方法,如异步FIFO、硬件handshake、syncbit锁存等,以及软件flow的解决方案,旨在确保信号稳定性和数据传输效率,同时避免亚稳态问题。
摘要由CSDN通过智能技术生成

文章目录

一、概要

二、技术方法

2.1. 单bit信号跨时钟域处理:

2.2. 多bit信号跨时钟域处理:

2.2.1 异步FIFO机制

2.2.2 硬件handshake机制

2.2.3 利用sync bit来锁存多bit数据

2.2.4 多bit同时锁存

2.2.5 格雷码机制

2.2.6 软件flow来避免异步问题

三、小结



一、概要

        当一个信号signal在clk1 domain产生,并传递到clk2 domain中时,且clk1和clk2为不同时钟源产生的时钟,signal就完成了跨时钟域的迁移。对于这类的跨时钟问题,从设计上一定要进行跨时钟域处理,否则就可能会出现亚稳态问题。

二、技术方法

       本文整理了常用的跨时钟域处理的方法,下面就逐一进行介绍:

       首先要说明的是:标准的跨时钟域处理,要求signal在原时钟域是寄存器输出的,否则经过组合逻辑后,从timing角度来讲会变得更恶劣,不利于中后端收敛timing。

2.1. 单bit信号跨时钟域处理:

      对应单bit的同步,通常情况下可以直接打几拍即可,具体根据destination clk domain的时钟频率来看以及工艺节点来决定,打几拍后可以大大减少亚稳态发生的概率。

2.2. 多bit信号跨时钟域处理:

      针对多bit的情况,就不能像单bit那样简单的打打几拍了,更不能说把每个bit都打几拍,这样做不仅费面积,同时也不一定能达到预期的效果,因为同步过程的第一拍本来就是不确定输出0还是1的,所以虽然同时对多个bit分别打拍,但实际上有可能有的bit先同步成功,有的bit后同步出成功。那么对于多bit的处理方法,常用的有以下几种:

2.2.1 异步FIFO机制

      这种在大型IP中很常见,尤其对数据量较大的传输,可以利用FIFO来缓存一定量的数据,进而提高数据传输效率。

2.2.2 硬件handshake机制

       即一方发送请求数据,另一方收到请求后,对请求信号进行同步处理,然后回复ack和数据,请求方收到ack后做同步处理并将数据缓存到本地时钟域,见下图。

2.2.3 利用sync bit来锁存多bit数据

    这也是个常用的方法,比如返回数据的一方,提供当前数据以及数据valid信号,接收方先对valid进行同步,然后利用同步后的valid去采样数据,这样就保证了采样时刻,数据是稳定的。

2.2.4 多bit同时锁存

      像上面介绍的,不能简单的对每个bit同时打拍,但是可以这样,我们在新时钟域中将多bit信号进行锁存,并根据需求打几拍,然后判断最后两拍数据相同时,我们认为所有bit数据同步成功,这个时候可以直接输出。

2.2.5 格雷码机制

将多bit转格雷码,格雷码的特点是每次只有1个bit翻转,因此经过格雷码输出的多bit也就等价为单bit的情况,可以直接打几拍输出。

2.2.6 软件flow来避免异步问题

    最后一种方法,我们在设计中也会经常用到,具体来说,当我们需要更新某些配置时,通过软件先关闭模块使能或者时钟使能等方法,然后改写配置,等配置信息更新完成后,再打开模块进行工作。这种完全靠软件flow来保证异步的方式,可以节省硬件资源,缺点就是不够灵活,具体还要参考实际应用。

三、小结

        以上介绍了异步处理的7种常用的解决方法,每种方法各有优势,具体的选择可以根据实际需求进行平衡。另外,对于异步时钟域的跨时钟转换过程,中后端是设FALSE path的,认为设计保证了,因此这部分timing必须要硬件保证,否则实际工作过程中有可能会出现亚稳态。

FPGA异步时钟约束方法有几种常见的做法: 1. 异步复位:在异步时钟中添加一个异步复位信号,用于保证系统在上电或者复位时的正确初始化。复位信号需要经过适当的同步处理,以确保在时钟稳定后再生效。 2. 时序同步器(Synchronizer):在异步时钟和同步时钟之间插入一个时序同步器,用于将异步信号转换为同步信号。时序同步器包括两个触发器(Flip-Flop),一个触发器位于异步时钟,另一个触发器位于同步时钟。通过两个触发器的级联,可以确保异步信号在同步时钟中得到稳定的采样。 3. 时序约束:使用时序约束(Timing Constraint)来限制异步时钟中的逻辑路径。时序约束定义了信号在电路中传输的最大延迟和最小延迟,以及时钟与数据的关系等。通过正确设置时序约束,可以确保异步时钟中的逻辑在同步时钟的正确操作。 4. FIFO缓冲:在异步时钟和同步时钟之间添加一个FIFO缓冲区,用于缓解两个时钟之间的不匹配。FIFO缓冲区可以通过流水线技术实现,将异步时钟中的数据按照同步时钟的速率进行处理。 这些方法可以根据具体的设计需求选择使用,通常需要结合具体的FPGA开发工具和芯片手册来实施。同时,对于复杂的异步时钟设计,还需要进行静态时序分析和时钟交叉验证等工作,以确保设计的正确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

love混世_魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值