- 概述
本文为verilog实现同步FIFO的一种方法。fifo作为一种先入先出队列,其本质就是一块存储区域,而先入先出的特性让其读写十分方便,不需要控制地址。而我们在设计的过程中,就是要把读写信号与内存中的地址联系起来。
- 实现难点
本文利用预先定义二维数组寄存器作为fifo的存储空间。
直白一点讲,一块存储空间存满了就写不进去了,读空了就读不出来了。
verilog实现同步fifo的难点就在于空满标志状态的设计。
读写指针的工作原理
读指针:总是指向下一个将要被写入的单元,复位时,指向第1个单元(编号为0)。
写指针:总是指向当前要被读出的数据,复位时,指向第1个单元(编号为0)
FIFO的“空”/“满”检测
FIFO设计的关键:产生可靠的FIFO读写指针和生成FIFO“空”/“满”状态标志。
当读写指针相等时,表明FIFO为空,这种情况发生在复位操作时,或者当读指针读出FIFO中最后一个字后,追赶上了写指针时,如下图所示:
当读写指针再次相等时,表明FIFO为满,这种情况发生在,当写指针转了一圈,折回来(wrapped around)又追上了读指针,如下图: