|
本帖最后由 zcy0517 于 2014-4-6 09:37 编辑
`timescale 1 ns/ 1 ps
module fifo_vlg_tst();
reg [4:0] dat;
reg rclk;
reg wclk;
reg wreq;
wire [4:0] q;
wire rdempty;
wire wrfull;
fifo i1 (
.dat(dat),
.q(q),
.rclk(rclk),
.rdempty(rdempty),
.wclk(wclk),
.wreq(wreq),
.wrfull(wrfull)
);
initial
begin
rclk<=0;
forever
#1 rclk<=~rclk;
end
initial
begin
wclk<=0;
forever
#2 wclk<=~wclk;
end
reg[4:0] cnt;
always @(posedge wclk)
if(cnt<=4'b1111) begin cnt<=cnt+1; dat<=dat+1; wreq<=1; end
else if(cnt>4'b1111&&cnt<=5'b11111) begin cnt<=cnt+1; dat<=0; wreq<=0; end
else cnt<=0;
endmodule
总结几点:
1.fifo模块中没有指针置位这一概念,读的时候就是一直顺着把没有读过的东西读出来,像走圈圈一样循环读。
2.当读的时候都读光了(如图二读到数16位置处),输出q一直保持现状(如恒于数16),并且rdempty置1。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|