一、FIFO全名
FIRST IN FIRST OUT (先入先出)。顾名思义,FIFO是一个数据具有先进先出的存储器。
二.FIFO种类
在vivado软件的IP catalog搜索FIFO时候,会出来很多FIFO类型

(1)AXI4-Stream FIFO 是提供对与其他IP连接的AXI4-Stream接口的内存映射访问。
(2)AXI4-Stream Data FIFO 支持 AXI4-Stream 协议,具备packet 包传输模式。
(3)AXI Data FIFO 就是数据FIFO 功能较为单一,接口为Stream接口
(4)FIFO Generator 支持 Native 模式,AXI Memory Mapped 模式 AXI Steam 模式功能比较齐全。通常在没有AXI时候就使用Native模式。

其中,最常见的就是FIFO的Native模式,可以设置为同步异步FIFO。
同步FIFO仅有一个时钟输入,所有信号都与这一个时钟信号有关。

异步FIFO有写端口和读端口分别有独立的时钟。相关的写信号都同步在读时钟下,所有相关的读信号都同步在读时钟下。

三、FIFO的IP配置
1.Basic配置
Interface type:Native 模式、AXI Memory Mapped 模式、 AXI Steam 模式。
通常在没有AXI时候就使用Native模式。
common和Independent代表同步和异步,如果需要读写同步就选择common,读写异步有顺序选择异步。
其余不用修改设置

2.Native Ports
StandardFIFO需要读使能后一 个时钟输出才有效。
一般选择First Word Fall Through 这样写入的数据,会先在读端口准备好。
写位宽由输入的数据位宽决定,写深度取决于需要缓存数据的个数,读数据位宽取决于个人需要读取多少位宽,读数据宽度由上述三者自动确定,不需要设置。
其余设置尽量保持相同即可。

3.Status Flags
almost full 和 almost empty flag表示FIFO的满信号和空信号,选上之后可以不用。

其余配置默认即可。
四、FIFO的应用
1.半空、半满控制读写FIFO
半空是针对读FIFO计数器而言,半满是针对写FIFO计数器而言。例如FIFO输入32bit深度1024;输出128bit深度256,这里的半空值就是128,半满值就是512。
例如
写状态机,每次写出512bit数据:
状态0:当写入FIFO计数器小于512则进入状态1
状态1:当连续写入FIFO512个数据后,再次进入状态0等待 读状态机的设计,每次读出128bt数据。
读状态机设计,每次读出128bit数据:
状态0:当读FIFO计数器大于128则进入状态1
状态1:连续读出FIFO128个数据后,再次进入状态0等待(如果有问题,可以私信作者,分享代码给你)
2.标志信号控制FIFO的读写
(1)当FIFO非满的时候写。
(2)当FIFO非空的时候读。
全部0条评论
快来发表一下你的评论吧 !