当前位置:   article > 正文

跨时钟域(CDC)_cdc axi

cdc axi

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个触发器,而触发器的面积是比较大

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/1020227
推荐阅读
相关标签
  

闽ICP备14008679号