FIFO 先进先出队列(此处指硬件结构)
同步FIFO架构
结构如下图所示
工作方式:复位后读写指针相等且都为空,此时FIFO为空,阻值对其的读操作,只可以写。当没有空间可以写的时候指针位置为SIZE-1,此时进行一个写操作会使得指针回滚到0,读写指针再次相等。
空和满状态的区分:一种是使用进入空和进入满的状态逻辑先后进行判断。另一种是使用计数器做计算,这种方法容易理解但是效率低。
异步FIFO
- 异步FIFO可以使用同样的逻辑,但是需要注意亚稳态的规避。
- 使用格雷码取代二进制计数器作为读写指针
- 同步格雷码计数器因为单次翻转一位的原因,很少导致取样计数器值出现亚稳态,此外取样后的值,最多有一位出现错误。