FIFO,是First Input First Output的缩写,就是先进先出的意思。首先来说FIFO存储器,其目的是为了增加数据传输率,处理大量的数据流,以及匹配不同传输速率的系统。FIFO存储器是先进先出的双口缓冲器,一个输入口,一个输出口,第一个由输入口进入的数据第一个从输出口移出。单片FIFO主要有两种结构:触发导向结构和零导向结构。触发导向传输结构的FIFO是通过寄存器阵列构成的,零导向传输结构是由具有读和写地址指针的双口RAM构成。
其只要作用是作为系统的缓:
1、 对连续的数据流进行缓存,防止在进机和存储时丢失数据。
2、数据集中起来进行进栈和存储,避免频繁操作总线,减轻CPU负担,同时也是提高了效率。
3、允许系统进行DMA操作,提高输出传输速率。
第三点是极其重要的一点,如果不能使用DMA操作,输出传输就达不到要求,会增加CPU负担,也会导致数据不能成功存储。关于DMA,下次再说明。
FIFO分为写入专用区和读取专用区,读操作和写操作可以异步进行,写入区上写入的数据按照顺可以在读取区中被读出。所以当写入和读取的速度不同的时候,FIFO的作用就体现出来了,即便速度不同,也可是实现正常的通讯。FIFO存储器的连接模式中还附加了表示内部缓冲器状态的状态引脚,表示缓冲器已满或缓冲器为空。
在linux系统中,一切操作都是操作文件,FIFO操作归根结底也是文件的操作。要了解FIFO,首先我们需要了解管道,因为FIFO是管道的一种,为有名管道,还有一种是无名管道,也叫pipe。
管道是linux中很重要的一种通信方式。一个程序的输出作为另一个程序的输入