异步FIFO原理
一,FIFO概念及用途
FIFO即英文First In First Out 的缩写,是一种先进先出的数据缓存器,与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。按读写是否为相同时钟域分为同步和异步FIFO,这里主要介绍异步FIFO,主要用于跨时钟域传输数据。
二,FIFO的常见参数
宽度:THE WIDTH,FIFO一次读写操作的数据位,
深度:THE DEEPTH,FIFO可以存储多少个N位的数据(如果宽度为N)。
满标志:FIFO已满或将要满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出(overflow)。
空标志:FIFO已空或将要空时由FIFO的状态电路送出的一个信号,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出(underflow)。
读时钟:读操作所遵循的时钟,在每个时钟沿来临时读数据。
写时钟:写操作所遵循的时钟,在每个时钟沿来临时写数据。
读指针:指向下一个读出地址,读完后自动加1。
写指针:指向下一个要写入的地址的,写完自动加1。
读写指针其实就是读写的地址,只不过这个地址不能任意选择,而是连续的。
三,FIFO的关键:读写指针和空满标志
1,当读写指针相等时,表明FIFO为空:
六,FIFO功能点简单总结
- 同时读写,读写数据正确检查
- FIFO满标志位检查
- FIFO空标志位检查
- 写过程中发生写复位,写数据和FIFO满标志位被清空
- 读过程中发生读复位,读数据和FIFO空标志位被清空
- 读写时钟相位相同,异步FIFO能正常工作
- 读写时钟相位不同,异步FIFO能正常工作
- 写时钟等于读时钟,异步FIFO能正常工作
- 写时钟快于读时钟,异步FIFO能正常工作
- 写时钟慢于读时种,异步FIFO能正常工作
- 写过程中发生写复位以后,异步FIFO能继续正常工作
- 读过程中发生读复位以后,异步FIFO能继续正常工作
- FIFO满以后,继续往FIFO写数据,异步FIFO不会被卡死,数据被读走以后,异步FIFO能继续正常工作
- FIFO空以后,继续从FIFO读数据,异步FIFO不会被卡死。继续往FIFO写数据,异步FIFO能继续正常工作
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219724.html原文链接:https://javaforall.net
