目录
异步电路导致亚稳态的根本原因是跨时钟域导致建立、保持时间不满足,导致采样之后的信号在较长时间处于逻辑0~1的中间态,可能需要很长时间才能恢复到确定值 T m e t T_{met} Tmet。
如果决断时间 T m e t T_{met} Tmet过长,长于sys_clk一个周期,那么后面逻辑电路采样到的值也是亚稳态,进而导致整个电路设计出现问题。

那么如何解决异步亚稳态问题呢?
跟老李一起学习芯片设计-- CDC的那些事(1)
菜鸟教程 - 跨时钟域设计 从快到慢
FPGA 设计之 跨时钟域(二 - 单比特设计)
《硬件架构的艺术》
1. 亚稳态问题——电平同步
电平同步的方法很简单,就是跨时钟域信号 连续经过两级触发器,俗称打两拍。
这里蕴含一个基本数学关系:时钟对信号a打拍得到a_d1,那么在时间上一定满足: t r o s e ( a ) < t r o s e ( a d 1 ) < t f e l l ( a ) < t f e l l ( a d 1 ) t_{rose(a)}<t_{rose(a_{d1})}<t_{fell(a)}<t_{fell(a_{d1})} trose(a)<trose(ad1)<tfell(a)<tfell(ad1)
其原理:即便采样到亚稳态的值。经过一级触发器后,有70%~80%的概率稳定。经过二级触发器后,稳定的概率为99%。
此处稳定意为收敛到逻辑0或逻辑1,到底稳定到几与采样到的电压有关。

1.1. 采样电压过低
如下图所示,要同步一个脉冲但是第一级FF最终输出的电压过低,导致第二拍输出0。

这是由于bclk采样脉冲的电压太低了,第一级触发器最终稳定到了0,未被第二级触发器捕捉到。
所以说电平同步的确能够在第二拍稳定,但到底稳定到几,那可就不确定了。
再极端点,可能时钟压根儿就采样不到有效信号,如下图

所以这就对异步时钟的频率作出了要求。
当然如果是电平信号,即异步信号有效的时间→∞就当我没说
1.2. “1.5倍频”
异步时钟可能采样到低电压导致第一拍不会有效。这种情况下怎么办?
如果采样到较低电压之后,还能再采一次采到稳定电平,那就好了。
如下图所示,第一个posedge采样到了不确定电平(红线),后面在脉冲拉低之前,还有第二个posedge采样到稳定电平(绿线)

注意根据图中的时钟建模,脉冲是在源时钟的上升沿处产生电压变化。
如果异步信号的有效时间为 T a s i g T_{asig} Tasig,那么满足 T b c l k < T a s i g T_{bclk} < T_{asig} Tbclk<

本文详细探讨了在异步电路设计中遇到的亚稳态问题,包括电平同步、漏采样以及解决这些问题的方法,如采用异或展宽和异或握手展宽。通过确保信号满足至少三个时钟沿,可以有效避免亚稳态导致的错误。同时,文中通过实例展示了如何使用Verilog代码实现这些同步策略,确保在不同时钟域间正确传输脉冲。
最低0.47元/天 解锁文章
1369

被折叠的 条评论
为什么被折叠?



