目录
1、定义
FIFO即First In First Out,是一种先进先出数据存储、缓冲器,我们知道一般的存储器是用外部的读写地址来进行读写,而FIFO这种存储器的结构并不需要外部的读写地址而是通过自动的加一操作来控制读写,这也就决定了FIFO只能顺序的读写数据。
2、FIFO分类
FIFO根据读写时钟是否相同分为 SCFIFO(同步FIFO)和 DCFIFO(异步FIFO)
同步FIFO,读和写应用同一个时钟。它的作用一般是做交互数据的一个缓冲,也就是说它的主要作用就是一个buffer。
异步FIFO,读写应用不同的时钟,它有两个主要的作用,一个是实现数据在不同时钟域进行传递,另一个作用就是实现不同数据宽度的数据接口。
3、FIFO使用情况
FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端时AD数据采集,另一端时计算机的PCI总线,假设其AD采集的速率为16位 100K SPS,那么每秒的数据量为100K×16bit=1.6Mbps, 而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。
FIFO存储器是系统的缓冲环节,如果没有FIFO存储器,整个系统就不可能正常工作,它主要有几方面的功能:
1) 对连续的数据流进行缓存,防止在进机和存储操作时丢失数据;
2) 数据集中起来进行进机和存储,可避免频繁的总线操作,减轻CPU的负担;
3) 允许系统进行DMA操作,提高数据的传输速度。这是至关重要的一点,如果不采用DMA操作,数据传输将达不到传输要求,而且大大增加CPU的负担,无法同时完成数据的存储工作。
4、FIFO的主要参数
同步FIFO和异步FIFO略有不同,下面的参数适用于两者。
- 宽度,用参数FIFO_data_size表示,它指的是 FIFO 一次读写操作的数据位,也就是FIFO存储的数据宽度;
- 深度,用参数FIFO_addr_size表示,也就是地址的大小,也就是说能存储多少个数据;
- 满标志,full,当FIFO中的数据满了以后将不再能进行数据的写入,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出(overflow);
- 空标志,empty,当FIFO为空的时候将不能进行数据的读出,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出(underflow);
- 写地址,w_addr,由自动加一生成,将数据写入该地址;
- 读地址,r_addr,由自动加一生成,将该地址上的数据读出;
同步FIFO和异步FIFO的最主要的不同就体现在空满标志产生的方式上,由此引出两者一些不同的参数。
同步FIFO
- 时钟,clk,rst,读写应用同一个时钟;
- 计数器,
4984





被折叠的 条评论
为什么被折叠?



