zcy0517 发表于 2014-4-6 09:26:06

关于QUARTUS中megawizard的FIFO模块的仿真探索

本帖最后由 zcy0517 于 2014-4-6 09:37 编辑

`timescale 1 ns/ 1 ps
module fifo_vlg_tst();

reg dat;
reg rclk;
reg wclk;
reg wreq;
                                             
wire 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 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。

bi大痣 发表于 2014-4-9 22:04:18

恩恩,谢啦

mwt168 发表于 2014-4-10 10:17:55

新手不知道怎么仿真。怎么样仿真的呀?

zcy0517 发表于 2014-4-10 11:02:36

mwt168 发表于 2014-4-10 10:17
新手不知道怎么仿真。怎么样仿真的呀?

用modesim_altera 免费的无需破解,在官网上打包下载quartus一般会自带下载。然后你要会做两件事,一个是会用quartus产生testbench文件,并在quartus中调用modelsim_altera,可参考http://hi.baidu.com/acarve/item/8366df278ba2a70e76272cf4。二是会写testbench。

zcy0517 发表于 2014-4-12 18:59:58

本帖最后由 zcy0517 于 2014-4-13 09:32 编辑

另外再补充:当FIFO空了时候rdempty 和wrempty都会置1。另外aclr是清零信号。
页: [1]
查看完整版本: 关于QUARTUS中megawizard的FIFO模块的仿真探索