赞
踩
IP之间交互的信号分为总线信号以及其他数据/控制信号,总线信号如AXI和AHB协议,所有采用AXI协议的总线时钟都是ACLK,所有的总线信号都同步到ACLK,所以总线信号不存在跨时钟域的问题,而对于其他数据/控制信号,当一个时钟域的数据/控制信号传输到另一个时钟域时,其可能在建立时间或保持时间窗口内发生跳变,从而可能发生亚稳态。如下图所示,两个DFF分属两个不同的时钟域a和b,时钟域a的数据adat(其有效电平持续一个时钟周期)需要传输到时钟域b,由于adata对于bclk是异步的,所以有可能adata在DFF的建立时间的窗口期内发生跳变,造成bdat1是一个不确定的状态,也就是DFF1出现了亚稳态,注意,跨时钟域并不一定会出现亚稳态,只是有可能会出现。解决跨时钟域亚稳态的方案有很多,主要有两级同步和异步FIFO。
如下图所示,利用两级同步解决跨时钟域的亚稳态问题,如果第一级触发器可以在一个bclk周期内从亚稳态回到稳定态,那么第二级就不会出现亚稳态,否则亚稳态将向后传播,实际应用中,两级同步便可以阻断亚稳态的传播,使用两级同步后,亚稳态继续向后级传播概率极其低,因此两级同步并不是消除了亚稳态,而是降低了亚稳态发生的概率,使其在可接受范围内。显然,使用三级同步甚至更多级同步可以进一步降低亚稳态发生的概率,那么为什么还使用两级同步呢?有两个方面的原因,一是对于大多数芯片而言,使用两级同步后,亚稳态发生的概率在可接受的范围内,二是两级同步是打两拍,三级同步是打三拍,更多级同步意味着芯片的速度将受到影响,但对于车规级芯片,其对可靠性要求较高,在处理跨时钟域时需要使用三级同步甚至四级同步。
在上面的例子中,第一级触发器如果在一个时钟周期内从亚稳态回到稳定态,那么亚稳态就不会继续向后级传播,但其回到稳定态输出0或1是不确定,从而可能出现数据错误。在实际设计中,一个时钟域的数据/控制信号传输到另一个时钟域时,其有效电平往往会持续多个时钟周期,即使在第一个时钟沿采到的是不稳定的值,在下一个时钟沿可能就采到稳定的值。
对于单比特信号,其两级同步需要额外消耗一个触发器,对于16比特的数据线,其两级同步需要额外消耗16个触发器,而触发器的面积是比较大
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。