我们是否使用灰色计数器来避免异步 FIFO 中的亚稳态?

Do we use Gray Counter to avoid metastability in Asynch FIFO?

当格雷码计数器中正在变化的 1 位进入亚稳态时会发生什么?为什么异步 FIFO 不是问题?

我认为异步 FIFO 实际上在内部使用格雷码计数器来跨两个时钟域传递 write/read 地址指针。

如果在一个时钟域中切换超过 1 位,但并非所有位都被另一个时钟域捕获,您将遇到亚稳态问题。一个 1 位可以在格雷码计数器中切换并且值保持不变。第二个时钟何时从第一个时钟采样切换位并不重要,它可能晚了一个周期但没关系。

您可能想看看 Cliff Cummings 关于 Asynchronous FIFO Design 的著名论文。