FIFO数据的读写,ISE联合modelsim仿真
使用了最基础的读写使能信号,同时读写时钟是分开的,但是我给它们设置了一样的值,所以这里可以设置common CLK,要注意的是FIFO是高电平复位,这点要注意,不然可能会出现一开始full和empty都为1的情况。
module fifo_module(wr_clk,rd_clk,rst,din,data_out
);
input wr_clk;
input rd_clk;
input rst;
input [7:0] din;
output [7:0] data_out;
reg wr_en;
reg rd_en;
wire full;
wire empty;
always @(posedge wr_clk or posedge rst)
if(rst)begin
wr_en <= 1'b0;
rd_en <= 1'b0;
end
else begin
if(!full && !rd_en)
wr_en <= 1'b1;
else if(!empty && !wr_en)
rd_en <= 1'b1;
else begin
wr_en <= 0;
rd_en <= 0;
end
end
fifo fifo_test (
.rst(rst), // input rst//低电平复位
.wr_clk(wr_clk), // input wr_clk
.rd_clk(rd_clk), // input rd_clk
.din(din), // input [7 : 0] din
.wr_en(wr_en), // input wr_en
.rd_en(rd_en), // input rd_en
.dout(data_out), // output [7 : 0] dout
.full(full), // output full
.empty(empty) // output empty
);