FIFO先进先出

1.简介
FIFO即First in First out的英文简称,是一种先进先出的数据缓存器,与普通存储器的区别在于没有外部读写的地址线。
缺点是只能顺序的读取和写入数据(对于大型数据存储,在性能上必然缓慢),其数据地址是由内部读写指针自动加一完成的,不能像普通的存储器一样,由地址线决定读取或者写入某个特定地址的数据,按读写是否为相同时钟域分为同步和异步FIFO,这里主要介绍异步FIFO,主要用于跨时钟域传输数据。
2.FIFO结构图
image
FIFO主要包含五个部分,分别是存储单元memory、wptr_full 和 rptr_empty 判断是否空满,并向FIFO memory传递addr;sync_r2w 和 sync_w2r是两个模块,用来同步wptr及rptr信号。
FIFO宽度和深度:简单理解成写入或者读出数据的位宽以及数据的数量,数量越大深度越大。
空标志和满标志:指的是队列在将要满或者将要为空的时候FIFO向状态电路发送的一个标志信号,用来告诉电路这个队列快满了或者快空了,主要是为了预防写操作持续写造成数据溢出,或者读操作读到无效数据。
读时钟和写时钟:时钟有效沿到来才进行读操作或者写操作。异步FIFO指的就是读操作和写操作分别由不同的时钟控制。
3.读写指针
读指针和写指是异步的,因此就会存在速度问题,因此会产生下列现象:
读指针速度大于写指针:队列中数据被快速读走,当读指针等于写指针,表示FIFO为空,向状态电路发送空标志,此时要修改读指针速度,否则会读到无效数据;
读指针速度小于写指针:读FIFO数据的速度小于写的速度,FIFO中数据的数量会稳步增长,到达满队列时发出满标志,此时需要修改写指针速度,否则数据会溢出。
读指针速度等于写指针速度:两者速度一一致,相当于同步FIFO,FIFO中数据数量维持恒定。
image

posted on 2026-07-08 21:30  tuck0603  阅读(2)  评论(0)    收藏  举报

导航