写在前面:大学四年生活结束,这是毕业设计用过的,把当时做的一些笔记发上来,也算是给自己一个交代。第一次写博客,如有问题,敬请担待:
正文开始:ROM的仿真和其他IP仿真不同,此时需要做一些修改,这个是因为modelsim无法识别mif文件,如果需要使用modelsim仿真,rom的初始值必须为hex文件。如果需要仿真ROM需要先做以下几个步骤:ROM的仿真和其他IP仿真不同,此时需要做一些修改,这个是因为modelsim无法识别mif文件,如果需要使用modelsim仿真,rom的初始值必须为hex文件。如果需要仿真ROM需要先做以下几个步骤:
1、 下载convert_hex2ver.dll
该文件功能为将hex转换为modelsim能够识别的ver文件,该文件可以在网上下载。
2、 修改modelsim.ini文件
1)、 将convert_hex2ver.dll文件放在modelsim安装路径目录下
2)、 修改ini文件,打开modimsim.ini,找到Veriuser = veriuser.sl这句话,在它下面添加一句Veriuser = xx\convert_hex2ver.dll,(是convert_hex2ver.dll文件路径),如
需要注意的是,网上有些教程是错误的!!!
3、首先使用quartus自带的IP核,新建一个ROM
几个需要手动设置的地方已经标出,其余的一路next即可,
需要注意图二中ROM的DEPTH与WIDTH关系到后面ROM初始数据存入,以及使用matlab创建.mif文件,参数的设置
4、使用matlab创建.mif文件,作为ROM中的初始数据
也可以使用Guagle_wave这个软件,不过该软件能仿真的波形有限,最好还是使用matlab自己编写,matlab程序在资源链接中已经给出。https://download.csdn.net/download/weixin_42790063/12474423
注意:.m文件在哪个目录下,mif文件就在那
创建完成后,将文件复制到自己建立的quartus工程下,然后使用quartus打开,接着将mif另存为hex文件
进行这一步的主要原因是因为modisim无法识别.mif文件,只能使用hex文件来仿真
另存为之后再打开rom,如上面第三张图,初始化选定该hex文件
5、编写testbench文件
这是modisim仿真的文件,直接使用quartus可以生成testbench,(quartus下processing//start//start testbech template writer),然后自己稍微添加激励信号。
6、全部编写完成后就进行仿真
接着就出仿真信号啦
注意事项!!!:
1、使用midisim进行仿真时,它是不能识别原理图文件的,所以需要将原理图文件(.bdf)转换成HDL文件(.v),直接File/Create Update/(将.v转成.bdf相反就行了),然后如图所示将.v文件添加进工程
如果需要将某一file设置为顶层文件
2、使用modisim仿真时,ROM的初始地址必须有个初值,否则会造成没有输出,输出值为STx,也就是不定态。
最简单的方法就是在你的程序中加一个rst信号,在rst条件下给定初值。编写testbench时把rst信号加入就行了
如果还有问题,可以给[email protected]发送邮件询问