这几天碰到了一个NCO仿真的问题,网上说法比较少,这篇文章供大家参考。本人采用的开发环境是modelsim-SE10.1c,Quartus II 13.1版本,quartus平台对第三方仿真工具的支持比较薄弱,需要进行大量的操作,这篇文章也对这一系列做系统的介绍。一般的IPcore,通常quartus只给你个.v文件,你自己去例化,仿真即可,但是,NCO这个IPcore感觉比较复杂,他吐出来的东西非常多,而且需要配置仿真库,目前网上资源比较少,这篇文章讲述的是比较详细,比较具体的,我们的工程参考一位大兄弟的做法,这里给出链接https://blog.csdn.net/baijingdong/article/details/8095590
一、开发平台的搭建
modelsimSE10.1c是之前使用xilinx平台开发的时候安装的,开发者购买开发板的时候都会进行安装 ,这里不做介绍,quartus使用的是quartusII13.1,给出quartus13.1的永久破解license链接:https://pan.baidu.com/s/1dUPj8ZMFqmAcqzxEOt8EkQ
提取码:kv4b,这个License里面包含了几乎所有的IPcore,使用该license,用户只需要对里面的HOSTID进行替换,替换为你自己quartus软件安装后的那个license setup里面的hostid的第一个即可,具体的自行百度。我开发环境都搭建好了,最主要的问题是怎么仿真,下面不在环境上下功夫,直接给过程。
二、仿真过程
1、quartus建立工程
首先在CSDN目录下面,创建目录PAR RTL SIM,我里面会比较乱,姑且先创建吧。,PAR下面还有一个目录名叫ipcore
打开quartus使用project wizard创建工程,工程名叫nco
工程创建过程一路默认,我们只做仿真,选好自己的芯片。
创建好了,然后添加nco这个ipcore
在配置IPcore的时候,选择这个
出现Generating MegaCore function top-level,卡在这个地方不动,杀死quartus_map.exe这个进程。
结束
然后就是例化,testbench,本文不做介绍了,参考前面的大兄弟
在开启设置了modelsim仿真的情况变异,出现这种情况
要进行如下操作
编译的时候不要选择simulation,是不是很神奇
然后编译通过,我们就进入了仿真过程
2、modelsim仿真NCO
在SIM文件下编写testbench,文件是nco_tb.v
然后在quartus里面对testbench进行配置,然后从quartus启动modelsim,这一步可能是为了创建PAR目录下的simulation这个文件夹,这可能是modelsim的工程目录,有一点很重要,我的modelsim是没有针对Altera和quartus进行任何配置!
然后你会发现你的modelsim报错了,毕竟nco功能仿真也需要一些库文件。现在关闭modelsim
关闭modelsim后,重新启动modelsim,然后将modelsim的目录切换到simulation/modelsim。通过这里我发现前面那步可能是为了产生这个工作目录或者工程的。
然后添加库
这些库文件在这个文件夹下
库在这个verilog_libs里面,依次添加即可
然后就是编译!nco文件凸出来的东西里有一个.vo文件,请看(我的NCO放在了ipcore文件夹下)
我们在modelsim里面编译,点击compile,进入选择编译文件部分,选择这个.vo文件,点击编译,然后选择nco_tb.v,编译,这两个文件编译结束后,开始仿真,选择nco_tb.v进行仿真
发现进来了
给大家放结果
三、总结
本论文给出了NCO这个IPcore的仿真过程,给出了完整的操作过程。其他复杂的IPcore在Quartus仿真不通过的情况,估计可以参考这个过程。