跨时钟域(CDC)

本文深入探讨了跨时钟域问题及其在芯片设计中的亚稳态现象,介绍了两级同步和异步FIFO作为解决方案。讨论了同步FIFO与异步FIFO的特性、满标志和空标志的生成,以及FIFO最小深度的计算方法。同时,提到了复位类型的选择,如异步复位和同步复位,并解释了阻塞赋值与非阻塞赋值的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IP之间交互的信号分为总线信号以及其他数据/控制信号,总线信号如AXI和AHB协议,所有采用AXI协议的总线时钟都是ACLK,所有的总线信号都同步到ACLK,所以总线信号不存在跨时钟域的问题,而对于其他数据/控制信号,当一个时钟域的数据/控制信号传输到另一个时钟域时,其可能在建立时间或保持时间窗口内发生跳变,从而可能发生亚稳态。如下图所示,两个DFF分属两个不同的时钟域a和b,时钟域a的数据adat(其有效电平持续一个时钟周期)需要传输到时钟域b,由于adata对于bclk是异步的,所以有可能adata在DFF的建立时间的窗口期内发生跳变,造成bdat1是一个不确定的状态,也就是DFF1出现了亚稳态,注意,跨时钟域并不一定会出现亚稳态,只是有可能会出现。解决跨时钟域亚稳态的方案有很多,主要有两级同步和异步FIFO。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bmRheV84OTM=,size_16,color_FFFFFF,t_70

如下图所示,利用两级同步解决跨时钟域的亚稳态问题,如果第一级触发器可以在一个bclk周期内从亚稳态回到稳定态,那么第二级就不会出现亚稳态,否则亚稳态将向后传播,实际应用中,两级同步便可以阻断亚稳态的传播,使用两级同步后,亚稳态继续向后级传播概率极其低,因此两级同步并不是消除了亚稳态,而是降低了亚稳态发生的概率,使其在可接受范围内。显然,使用三级同步甚至更多级同步可以进一步降低亚稳态发生的概率,那么为什么还使用两级同步呢?有两个方面的原因,一是对于大多数芯片而言,使用两级同步后,亚稳态发生的概率在可接受的范围内,二是两级同步是打两拍,三级同步是打三拍,更多级同步意味着芯片的速度将受到影响,但对于车规级芯片,其对可靠性要求较高,在处理跨时钟域时需要使用三级同步甚至四级同步。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1bmRheV84OTM=,size_16,color_FFFFFF,t_70

在上面的例子中,第一级触发器如果在一个时钟周期内从亚稳态回到稳定态,那么亚稳态就不会继续向后级传播,但其回到稳定态输出0或1是不确定,从而可能出现数据错误。在实际设计中,一个时钟域的数据/控制信号传输到另一个时钟域时,其有效电平往往会持续多个时钟周期,即使在第一个时钟沿采到的是不稳定的值,在下一个时钟沿可能就采到稳定的值。

对于单比特信号,其两级同步需要额外消耗一个触发器,对于16比特的数据线,其两级同步需要额外消耗16个触发器,而触发器的面积是比较大

Spyglass工具在硬件设计中的重要性不言而喻,尤其是在跨时钟域CDC(Clock Domain Crossing)检查方面。通过使用Spyglass,设计师能够有效地识别和解决RTL(Register Transfer Level)设计中的CDC问题,从而保障设计的一致性和可靠性。下面将详细阐述使用Spyglass进行CDC规则检查的流程和操作指南: 参考资源链接:[Spyglass:硬件设计中的跨时钟 CDC 错误检测利器](https://wenku.csdn.net/doc/6412b77ebe7fbd1778d4a7fd?spm=1055.2569.3001.10343) 首先,确保你已经安装了Spyglass工具,并熟悉其界面和基本操作。如果还未安装,推荐参考《Spyglass:硬件设计中的跨时钟 CDC 错误检测利器》这份资料,以获得详细的安装和配置指南。 接下来,按照以下步骤进行CDC规则检查: 1. 准备设计资料:收集所有必要的输入源文件、约束和库文件,确保它们都是最新的,并且能够反映当前的设计状态。 2. 设计语言和参数设置:在Spyglass中配置你的设计语言参数,比如选择支持的硬件描述语言(如Verilog或VHDL),并根据设计需求设置宏和参数。 3. 规则选择和参数配置:在Spyglass中选择需要进行的CDC检查规则,这包括对跨时钟域的信号进行综合和时序分析。配置相关的参数以满足设计的特定需求。 4. 运行检查:启动Spyglass并执行规则检查。等待工具完成分析,这通常需要一些时间,具体取决于设计的复杂性和大小。 5. 分析报告:检查完成后,Spyglass会生成一个详细的报告,其中会列出所有检测到的CDC问题。通过这份报告,你可以了解到每个问题的具体位置、可能的影响以及建议的解决方案。 6. 错误定位和修正:根据报告中的信息,定位到RTL代码中的具体问题点。修正这些问题,可能涉及到修改信号的时钟域、增加同步机制或者调整复位策略。 7. 验证和复查:修正后,重新运行Spyglass检查以验证问题是否已经被正确解决。这个步骤可能需要多次迭代,直到所有的CDC问题都被成功解决。 8. 原理图或波形辅助:在某些复杂的情况下,为了更直观地理解问题和验证修正,可以利用Spyglass提供的原理图或波形查看功能。 通过这个流程,你可以系统地使用Spyglass对RTL代码进行CDC规则检查,并确保跨时钟域的设计符合预期的性能和可靠性标准。更多关于Spyglass的高级特性和使用技巧,建议参考《Spyglass:硬件设计中的跨时钟 CDC 错误检测利器》以获得更全面的理解和实践指导。 参考资源链接:[Spyglass:硬件设计中的跨时钟 CDC 错误检测利器](https://wenku.csdn.net/doc/6412b77ebe7fbd1778d4a7fd?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sunday_893

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

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

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

打赏作者

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

抵扣说明:

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

余额充值