FIFO(first-in, first-out)顾名思义就是先进先出。
FIFO常见参数:宽度,深度,满标识,空标识,读指针,写指针。
计数器法:用计数器来计数数据数个数。
- 复位时,计数器为0,数据个数为0;
- 计数器=深度时,表明数据个数已满,满标识设置为1;
- 计数器=0时,表明数据个数为0,空标识为1;
- 读使能与写使能都等于1,即数据个数不变,计数器不变;
- 空标识=0,读使能=1,写使能=0,即数据个数减一,计数器减一;
- 满标识=0,读使能=0,写使能=1,即数据个数加一,计数器加一;
//计数器法实现同步FIFO
module sync_fifo_cnt
#(
parameter DATA_WIDTH = 'd8 , //FIFO位宽
parameter DATA_DEPTH = 'd16 //FIFO深度
)
(
input clk , //系统时钟
input rst_n , //低电平有效的复位信号
input [DATA_WIDTH-1:0] data_in , //写入的数据
input rd_en , //读使能信号,高电平有效
input wr_en , //写使能信号,高电平有效