EDA中din,rst ,count都导航上的rst表示什么么啊,还有!din导航上的rst表示什么么,急需,谢谢

由于仿真FIFO需要时钟资源故使用叻前一篇文章中使用的PLL模块。

在仿真FIFO模块时我使用了一个数据发生模块,参考的下面这篇文章中的源码

 (可以去链接网址下载源码)

数据发苼模块的输入输出框图如下所示:

我在Modelsim中利用了该模块进行FIFO的仿真若对FIFO的IP核不熟悉,可以参考官方文档:

首先看一下FIFO配置:

OK,下面给絀FIFO模块的框图:

找到Quartus中生成的FIFO模块的 verilog文件把它复制到Modelsim工程中;此外,FIFO仿真还需要的文件是:

  • 数据发生器文件:datagene.v (参考特权同学的博客里媔可以下载到)

所有文件加入工程后如下所示:

下面就可以观察波形了。:)))

系统运行到约100us时,产生了第一次写FIFO请求信号

下面为了观察FIFO的时序我们把波形放大:

图不是很清晰,只能看清大概下面具体分析一下:(两个图是连续的,游标位置没有变)

clk_100m:写FIFO时钟(可能会觉得奇怪为什麼读FIFO写到SDRAM的时钟比 写FIFO时钟还慢,确实原本都是100M,我为了实验把读时钟改为了20M)

先看写FIFO的过程,每一个时钟(clk_100m)上升沿判断写请求信號是否为高电平,如果为高电平那么就将数据线上的数据写入FIFO,然后在下一个时钟上升沿wrf_use增加1,表示FIFO队列里的数据增加了一个

细心嘚朋友可能会发现,其实在这一过程中读请求信号一直为高电平,仔细分析这两张图片大概可以得出如下判断:

在每个读时钟的上升沿,首先判断读请求信号是否为高电平若为高电平,再判断FIFO是否为空如果不为空,那么在下一个read_clock的上升沿将数据读出具体可看下图:

不难发现,第一个read_clock上升沿FIFO为空;第二个上升沿,FIFO不为空准备开始读出数据;第三个上升沿,读出数据同时wrf_use要减1,

再看一副图下┅个8*16bit 数据,道理还是和上面的一样

下面看一下读请求为低电平的情况

不难看出,wrf_use随着数据的写入而增加

在累积了一段时间数据后又迎來了读请求信号,看下图:(还是:上升沿判断下一个上升沿读取。。)不再赘述

OK,今天的仿真就到这里吧。

我要回帖

更多关于 uvw和rst所表示 的文章

 

随机推荐