亚稳态,是由于寄存器的输入信号没有满足建立时间和保持时间,导致寄存器的输出处于一种不确定的状态。
处理跨时钟域的数据有单bit和多bit之分,而打两拍的方式常见于处理单bit数据的跨时钟域问题。
简单说下两级寄存器的原理:两级寄存是一级寄存的平方,两级并不能完全消除亚稳态危害,但是提高了可靠性减少其发生概率。
场景分析一:单bit低频信号跨时钟域到高频时钟域
低频时钟域下的脉冲信号en_pulse,跨时钟域到高频时钟域,作为使能信号。
一般,不建议直接将低频时钟域下的en_pulse不做处理、直接就用高频时钟采样做触发器的使能信号。
建议,将低频时钟域下的en_pulse信号,使用高频时钟打两拍做同步处理,造一个上升沿在高频时钟域里使用。
事例,如下面代码所示。
场景分析二:单bit高频窄脉冲信号跨时钟域到低频时钟域
场景分析三:多bit数据跨时钟域处理
当数据需要跨时钟域时,可以采用双端口FIFO,或者RAM。当FIFO非空时,即可读访问数据。
参考文献
1、 | https://blog.csdn.net/weixin_43343190/article/details/82956033 |
2、 | https://blog.csdn.net/lureny123/article/details/12907533 |