根据FIFO工作的时钟域分为同步/异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟在时钟沿来临时同时发生读写。异步FIFO读写时钟不一致,读写相互独立。
读写指针的工作原理
读指针:总是指向下一个将要读取的单元,复位时指向第一个单元(编号为0);
写指针:总是指向当前要被读出的数据,复位时,指向第一个单元(编号为0);
FIFO的“空/满”检测
FIFO设计的关键:产生可靠的FIFO读写指针和生成FIFO“空/满”状态标识。
很明显,当FIFO写满时,就不能再写新数据了,否则就导致数据的溢出;而在空状态即之前写入的数据已经读完,就不能再读取了,否则读出的数据就是无效数据。
1.读空信号(rd_empty)
一般情况当读写指针相等时,表明FIFO为空,这种情况发生在 复位操作时 或者当读指针读出FIFO中最后一个字 后,追赶上写指针时,此时读空信号有效。
发生如下图所示:
2.写满信号(wr_full)
当读写指针再次相等时,表明FIFO为满,这种情况发生在,当写指针转了一圈折回来(wrapped around)又追上了读指针&#