这篇文章主要是上篇文章的verilog代码实现,现在将代码贴上:
module fifo #(parameter size_data=8,
parameter size_addr=4)
(input wr_inc,wr_clk,wr_rst,
input rd_inc,rd_clk,rd_rst,
input [size_data-1:0]wr_data,
output wr_full,rd_empty,
output [size_data-1:0]rd_data);
wire [size_addr-1:0] wr_addr,rd_addr;
wire [size_addr:0]wr_ptr,rd_ptr,wq2_rd_ptr,rq2_wr_ptr;
cmp m1(rd_ptr,wr_ptr,wr_rst,full_flag,empty_flag);
ram_fifo m2(wr_clk,wr_addr,wr_data,wr_inc,rd_addr,rd_data);
rd_empty m3(rd_clk,rd_inc,rd_rst,empty_flag,rd_empty,rd_ptr);
wr_full m4(wr_clk,wr_rst,wr_inc,full_flag,wr_ptr,wr_full);
endmodule
module fifo_ram(wr_clk,wr_addr,wr_data,wr_inc,rd_addr,rd_data);
parameter size_addr=4;
parameter size_data=8;
parameter depth=1<<size_addr;
input wr_clk;
input [size_addr-1:0] wr_addr;
input [size_data-1:0] wr_data;
input wr_inc;
input [size_add