使用verilog编写一个同步fifo,不考虑地址full,empty,cnt等非组要信号。

同步fifo,不考虑地址full,empty,cnt等非组要信号。

可用于考试时,现场编写的代码。

Module fifo # (

Parameter FIFO_WIDTH =32,

Parameter FIFO_DEPTH =16,

)(

Input   i_clk,

Input   i_rst,

Input  i_wr_en,

Input [FIFO_WIDTH-1:0] i_wr_data,

Input  i_rd_en,

Output reg [FIFO_WIDTH-1:0] o_rd_data

);

 

 

Reg [FIFO_WIDTH-1:0] fifo_data [FIFO_DEPTH-1:0];

Reg [3:0] wr_ptr,rd_ptr;

 

Always @ (posedge i_clk , posedge i_rst)

If(i_rst)begin

Wr_ptr <= 4'd0;

Rd_ptr <= 4'd0;

End

Else begin

Case(i_wr_en,i_rd_en)

2'b01:begin

o_rd_data <= fifo_data[rd_ptr];

Rd_ptr <= (rd_ptr==4'd15)?4'd0:(rd_ptr+1);

End

2'b10:begin

Fifo_data[wr_ptr] <= i_wr_data;

wr_ptr <= (wr_ptr==4'd15)?4'd0:(wr_ptr+1);

End

2'b11:begin

Fifo_data[wr_ptr] <= i_wr_data;

o_rd_data <= fifo_data[rd_ptr];

Rd_ptr <= (rd_ptr==4'd15)?4'd0:(rd_ptr+1);

wr_ptr <= (wr_ptr==4'd15)?4'd0:(wr_ptr+1);

End

Default:;

endcase

End

endmodule

 

posted @ 2020-11-03 19:01  hhh-fpga  阅读(138)  评论(0编辑  收藏  举报