亚稳态消除疑问
时间:10-02
整理:3721RD
点击:
看了一些消除亚稳态资料,对加n级同步寄存器方式消除亚稳太未完全理解,

假设慢时钟域寄存器的Q输出从0变化到1,快时钟域第1级同步寄存器采样Q时,发生亚稳态现象,则采样的数据可能为0,则第1级同步寄存器输出就为0,第2级同步寄存器采样第1级也肯定是0,则第2级输出就恒为0,亚稳态并没消除啊.
请问我的理解对吗?

假设慢时钟域寄存器的Q输出从0变化到1,快时钟域第1级同步寄存器采样Q时,发生亚稳态现象,则采样的数据可能为0,则第1级同步寄存器输出就为0,第2级同步寄存器采样第1级也肯定是0,则第2级输出就恒为0,亚稳态并没消除啊.
请问我的理解对吗?
就是快时钟域早1个cycle和晚1个cycle采到1的区别啊。
你说的情况是晚1个cycle的。在你说的采到0的下1个时钟不就采到1了吗?
刚刚后仿跑到这个问题,2级寄存器还是没有消除亚稳态,而且看上去和LZ的理解一样,这完全颠覆我之前的理解。求探讨
2级寄存器只能说能采到相对“稳定”的数据,但不能保证采到“正确”的数据。 最好的消除亚稳态方法是采用握手处理或者异步FIFO处理。
2级寄存器只能说能采到相对“稳定”的数据,但不能保证采到“正确”的数据。 最好的消除亚稳态方法是采用握手处理或者异步FIFO处理。
对于n级同步寄存器的方式,有两个重要的参数,即resolution time Tr和MTBF,通过这两个参数来看是否能够消除亚稳态……但是这个MTBF也只是个统计平均值,所以不能说一定能消除亚稳态……
通过两级DFF采样只是消除亚稳态,让你才到“稳定”的逻辑值,但并不一定是“正确”的逻辑值。至于如何做到正确?用格雷码
详情可以参看异步FIFO的设计。
跨时钟域传递信号需要用异步FIFO的,你们是直接用两级DFF采样?除非你这个信号不是pulse敏感性的,例如某个register信号,不在乎晚几个周期。除此之外,需要用异步FIFO或者握手(一般不推荐,因为慢)的方式。
