(经整理)
目录
一、FIFO简介
FIFO:英文First In First Out 的缩写。本质上还是RAM,是一种先进先出的数据缓存器;
与普通存储器的区别:没有外部读写地址线,这样使用起来非常简单。但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。
二、用途
(1)跨时钟域多bit数据传输
解决一个系统多个时钟,所带来的问题:异步时钟之间的接口电路。异步FIFO是解决这个问题的一种便捷简单的方案,使用异步FIFO可以在两个不同时钟系统之间快速方便地传输实时数据。
(2)达到数据匹配问题
对于不同宽度的数据接口也可以使用FIFO,例如单片机的8位输出而DSP可能是16位输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。
三、参数
The WIDTH: FIFO的宽度是FIFO一次读写操作的数据位宽,就像MCU有8位和16位,ARM有32位等。FIFO的宽度在单片成品IC中是固定的,也有可选择的,如果用FPGA自己实现一个FIFO,其数据位,也就是宽度是可以自己定义的。
The Deepth: 指FIFO可存储多少个N位的数据(N指数据宽度)。
满标志:FIFO已满或将要满时由FIFO状态电路送出一个信号以阻止FIFO的写操作继续向FIFO中继续写数据而造成溢出(overflow)。
空标志:FIFO已空或将要空时由FIFO状态电路送出一个信号以阻止FIFO的读操作继续从FIFO中读出数据而造成数据无效读出(underflow)。
读时钟:读操作所遵循的时钟,在每个时钟沿来临时读数据。
写时钟: 写操作遵循的时钟,在每个时钟沿来临时写数据
读指针: 指向下一个读出的地址。读完自动完成加1。
写指针:指向下一个要写入的地址。写完自动加1
读写指针其实就是读写的地址,只不过这个地址不能任意选择,而是连续的。
所谓读写指针就是读写地址,FIFO的读写是连续的故读写的地址也只能是连续的。