跨时钟域单bit传输过程中,存在亚稳态问题,常用的解决方法是采用两级寄存器做同步处理的方法,那么为什么这么做?
如图,发送data_tx经过两级寄存器后,输出data_2,我们先画出data_tx,data_1的时序图如下
显然,如果只打一拍,可能会采样到亚稳态,且该几率不能忽略不计,故需要在添加一级寄存器。data_1出现情况三时,data_2会输出与情况一相同波形。
当然,两级寄存器并不能完全消除亚稳态,亚稳态不可能消除,只是将其减小到了一个几乎可以忽略不计的地步,两级不够可以三级甚至四级。
然而,寄存器打拍的方法仅仅适用于快时钟采慢时钟,慢时钟采快时钟时序如下图,
快时钟信号脉宽较窄,慢时钟不一定能采样到(情况2),因此慢时钟采快时钟通常采用握手或异步FIFO处理。