如何用verilog实现6个input排队送进FIFO当中,依次取出
时间: 2024-02-05 10:11:33 浏览: 66
以下是一个简单的Verilog代码实现,使用了一个6位输入队列和一个单向FIFO:
```
module input_fifo(
input clk,
input rst_n,
input [5:0] input_data,
input wr_en,
output reg [5:0] output_data,
input rd_en
);
reg [5:0] fifo [0:5];
reg [2:0] wr_ptr = 0;
reg [2:0] rd_ptr = 0;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
for (int i = 0; i < 6; i = i + 1) begin
fifo[i] <= 0;
end
wr_ptr <= 0;
rd_ptr <= 0;
end
else begin
if (wr_en) begin
fifo[wr_ptr] <= input_data;
wr_ptr <= wr_ptr + 1;
end
if (rd_en) begin
output_data <= fifo[rd_ptr];
rd_ptr <= rd_ptr + 1;
end
end
end
endmodule
```
该代码包含一个时钟输入,一个异步复位输入,一个6位输入数据输入,一个写入使能输入,一个6位输出数据输出和一个读取使能输入。
代码使用一个6位输入队列和一个单向FIFO。每次写入时,输入数据被写入队列中的下一个空闲位置。每次读取时,队列中的下一个数据被输出,并且队列中的指针向前移动一个位置。当队列满时,新的输入数据覆盖最老的输入数据。当队列为空时,输出数据为0。
阅读全文