65 lines
1.6 KiB
Verilog
65 lines
1.6 KiB
Verilog
// Sample code from https://www.fpga4student.com/2017/01/verilog-code-for-fifo-memory.html
|
|
// with some modifications
|
|
module fifo_mem(
|
|
output [7:0] data_out,
|
|
output fifo_full,
|
|
output fifo_empty,
|
|
output fifo_threshold,
|
|
output fifo_overflow,
|
|
output fifo_underflow,
|
|
input clk,
|
|
input rst_n,
|
|
input wr,
|
|
input rd,
|
|
input [7:0] data_in
|
|
);
|
|
wire [4:0] w_wptr,
|
|
w_rptr;
|
|
wire w_fifo_we,
|
|
w_fifo_rd;
|
|
|
|
// sub modules
|
|
write_pointer write_pointer(
|
|
.wptr(w_wptr),
|
|
.fifo_we(w_fifo_we),
|
|
.wr(wr),
|
|
.fifo_full(fifo_full),
|
|
.clk(clk),
|
|
.rst_n(rst_n)
|
|
);
|
|
|
|
read_pointer read_pointer(
|
|
.rptr(w_rptr),
|
|
.fifo_rd(w_fifo_rd),
|
|
.rd(rd),
|
|
.fifo_empty(fifo_empty),
|
|
.clk(clk),
|
|
.rst_n(rst_n)
|
|
);
|
|
|
|
memory_array memory_array(
|
|
.data_out(w_data_out),
|
|
.data_in(w_data_in),
|
|
.clk(clk),
|
|
.fifo_we(w_fifo_we),
|
|
.wptr(wptr),
|
|
.rptr(rptr)
|
|
);
|
|
|
|
|
|
status_signal status_signal(
|
|
.fifo_full(fifo_full),
|
|
.fifo_empty(fifo_empty),
|
|
.fifo_threshold(fifo_threshold),
|
|
.fifo_overflow(fifo_overflow),
|
|
.fifo_underflow(fifo_underflow),
|
|
.wr(wr),
|
|
.rd(rd),
|
|
.fifo_we(w_fifo_we),
|
|
.fifo_rd(w_fifo_rd),
|
|
.wptr(w_wptr),
|
|
.rptr(w_rptr),
|
|
.clk(clk),
|
|
.rst_n(rst_n)
|
|
);
|
|
endmodule
|