why gray code?
in binary code : FIFO address 从 010 变到 001 时
由于亚稳态 , 010 可能变成 011 或者 000 或者 010 或者 001
当变成 010 或者 001 时FIFO 空满的逻辑判断不会出错,而变成 011 或者 000 时FIFO 的逻辑判断会出错,这是不可取的。
而用gray code, 相邻两位只会变1个bit, 所以FIFO address要么保留原来的值,要么变成正确的值
这样可能会慢一拍,但不会出现逻辑错误。这就是使用gray code 的原因所在!