modelsim仿真ROM IP核没有输出数据问题如何解决
问题介绍
当用MATLAB生成.mif文件后 调用Quartus中ROM IP核 加载.mif文件对ROM IP核进行仿真 发现输出数据一直为零 但是ROM 中的地址却发生变化 但是没有数据输出 如下仿真图所示 address 依次加一 但是输出端一直为8’h0
(今天各种查各种问各种踩雷哈哈 算是altera遗留的一个问题吧 今天就把这个问题解决吧 )
问题原因
使用modelsim对ROM IP核仿真时必须把.mif文件放在仿真的根目录中 (不明白很正常 后面演示一下我怎么错的和怎么找到bug的 相信很多人跟我一样哈哈)
错误示范
下图红色椭圆是通过加载.mif文件生成的路径。
在对IP核添加.mif文件时直接把MATLAB生成的.mif文件加载进去了 也没有考虑所加载的.mif文件的位置
首先大家要清楚 . ./. ./doc/sine.mif的意思 . ./的意思是在当前文件夹向上一级 最开始的地址也就是生成ROM IP核文件的位置,. ./. ./doc/sine.mif的意思是从ROM IP核文件的位置向上翻两级到doc文件夹中加载sine.mif文件 然后进行仿真就出现了最上面的仿真图 地址更新但是数据一直为零。
解决方法
通过各种问各种研究哈哈 终于知道咋回事了
也就是前面所说的要把.mif文件放到modelsim仿真的根目录中
什么是根目录 也就是在建立仿真project时会生成一个叫work的文件夹 复制.mif文件放到跟work文件同一文件中 如下图所示
然后在更改一下 ROM IP核加载.mif文件的位置 如下图所示也就不再加载之前的.mif文件 而是加载我们复制的.mif文件 因为此.mif文件在仿真的根目录中 modelsim在仿真的时候只会在根目录中寻找.mif 文件。如果找不到就会出现没有数据输出的效果,这个就比较坑 哈哈。
在更改IP核设置时会出现下图对话框 因为重新设置了IP核 所以有的文件会重新生成 直接OK就完事了
通过打开 ip_rom.v文件可以看到 如下图所示 加载的.mif文件已经不是doc文件中的了 而是根目录中的.mif文件
然后仿真就完事了 哈哈 仿真如下图所示
可以看出随着地址的更新输出也不断输出
注意
在仿真 altera IP时别忘了需要在Modeslim工程中添加altera_mf文件仿真库 也就是把altera_mf.v这个文件添加到工程 这个文件一般在:\altera\13.1\quartus\eda\sim_lib\altera_mf.v这个路径中 也就是Quartus安装路径 如果找不到可以直接用我上传的资源中找 哈哈