由于本人专业要求,已熟悉使用过quartusⅡ进行过设计与验证。但是使用的版本较低,一些操作也经过过简化,例如查看波形直接使用了quartus内置的vwf文件进行查看,没有使用现较常用的modelsim进行波形查看;使用傻瓜式的界面管脚分配方式而不是使用编程的方式进行管脚分配等等问题。在此开启系统学习FPGA的设计与验证。
写本文章的原因是在学习小梅哥的fpga的第一课时,发现本人下载的modelsim版本是se而不是altera,跟课程出现了分歧。但是搜索发现,modelsim的altera版本是针对altera公司发行的独立版本,而se版本是非独立版本。因此在后续的使用中,考虑到使用Xilinx的芯片进行开发的可能性,这里就不使用altera版本,而选择se版本进行仿真。其版本如下。
下面在此介绍一下quartusⅡ联合modelsiumSE版本进行仿真的过程与出现的问题。
注意,在此博主都采用的是quartusⅡ9.1版本,比较老,但是楼主使用比较顺手,等后续后更换版本的必要再说哈哈哈。
Step1:仿真设置-modelsim工具
方法一:
在new project wizard中的simulation中选择仿真软件。在这里还有很多选择例如VCS,modelsium-altera,但是由于我们使用的是modelsium进行仿真,因此在Tool name栏我们选择modelsium。如下图显示。
而由于我们后续开发的语言都是Verilog,因此我们在Format中选择Verlag HDL。
方法二:
若在project中忘记进行仿真设置也无妨,可以双击project进行修改。在我的quartus版本中project以芯片的名字显示。
双击后将EDA tool Settings展开找到simulation,即可完成修改,如下图。
方法三
从顶部工具栏进入。点击Assignments->EDA Tool Settings进入设置界面。再将EDA tool Settings展开找到simulation,即可完成修改,如下图。再如上图进入Simulation的设置中,进行modelsium工具和Verilog语言的设置。
Step2:设计rtl文件
在此设计的是一个选择器。使用的是verilog语言。文件如下。
module test(a,b,key_in,led_out);
input a;
input b;
input key_in;//button in choose signal
output led_out;
assign led_out=(key_in==0)?a:b;
endmodule
编辑仿真文件test_bench
直接在project的文件夹中新建test_bench文件夹,可以在quartus中快速定位到该project的仿真文件,如图。
test_bench 内部文件包含如下。其中bak形式文件是仿真文件经过编译才会产生的文件。
test_bench 文件verilog语言内容如下(有注释解释,这里就不过多阐述了)
`timescale 1ns/1ps //仿真进度/仿真步进
//#100.1 //延时,后面是精度,前面是它的倍数
module test_tb;//搭建测试平台
//激励信号定义,对应链接到待测试模块的输入端口
reg signal_a;
reg signal_b;
reg signal_c;//信号源的三个端子
//激励信号定义,对应链接到待测试模块的输出端口
wire led;
//例化待测试模块
test led_test0(
.a(signal_a),
.b(signal_b),
.key_in(signal_c),
.led_out(led)
);
//把模块引进来,可以不使用原来的名字并且可以重复使用
//端口连接信号源
//产生激励
initial begin
signal_a=0;signal_b=0;signal_c=0;
#100;//延时100ns
signal_a=0;signal_b=0;signal_c=1;
#100;//延时100ns
signal_a=0;signal_b=1;signal_c=0;
#100;//延时100ns
signal_a=0;signal_b=1;signal_c=1;
#100;//延时100ns
signal_a=1;signal_b=0;signal_c=0;
#100;//延时100ns
signal_a=1;signal_b=0;signal_c=1;
#100;//延时100ns
signal_a=1;signal_b=1;signal_c=0;
#100;//延时100ns
signal_a=1;signal_b=1;signal_c=1;
#200;//延时200ns
//把8个状态一一罗列出来
$stop;
//把仿真停止下来
end
endmodule
Step3:设置modelsium的路径
在顶部中的Tools选择Options,点击EDA Tools Options,在modelsium的路径中定位到安装的modelsim的文件夹中的win64文件夹之内,点击打开。(如果你安装的版本是win64版本的话)具体设置如下图。
Step4:定位test_bench文件
像在Step1中到EDA tool settings的simulation中,点击test_benches,再点击new。
之后首先进行仿真文件信息的填写。如下图中的1。我使用的版本较低,需要手动再Design instance name in test bench中手动填写NA。接着加载test_bench文件。点击test bench files中的冒号,选择你的test bench 文件(文件名为test_ bench会自动帮你进入),再点击add(一定不要忘记点,不然显示没有仿真文件!!)
加载成功test_bench文件后会在file name 中有显示。点击ok。
当所有加载和设置完毕后界面如下,点击ok结束设置。
注意:NativeLink Settings中一定是选中compile的,不然后续一定显示不出波形。
Step5:进行modelsim波形仿真
从顶部tools-run EDA simulation tool-EDA RTL Simulation进行仿真。
modelsim仿真完毕界面如下。
波形图显示一开始显示的比较少。点击zoom full图标即可显示全部如下。
全部显示界面如下。
综上,即完成了使用quartusⅡ联合modelsim仿真的全过程。
问题与解决
问题1:显示了No simulation input file assignment specified on Simulartor page of the Setting dialog box
分析:点击了quartus自带的波形仿真工具如下。
解决:应该遵从Step5中的步骤进入modelsim.
问题2:没有波形窗口
分析:没有打开wave窗口
解决:在头部的View 打开Wave
想要单独拿出波形,可以单击波形模块右上角第二个图标。如图
问题3:objects和processes栏都有内容,但是波形窗口没有波形
分析:第一次打开Wave窗口
解决:再仿真一次就可以(或许还有其他方法我没发现
问题4:Nativelink Error error deleting"msim_transcript":permission denied.Check the NativeLink log file .../..._nativelink_simulation.rpt for detailed error messages
分析:波形仿真程序已被打开。
解决:关闭modelsim,再进行一次modelsim仿真。
问题5:不仅没有波形,连modelsim 的Objects 和processes啥也没有,如图
分析:没有仿真的test bench 文件。应该是在test_bench文件加载中某一步没做好导致没有加载test bench 文件(文件中选择的是none),如图。
解决:重新加载测试文件,直到打开Simulation时能看到选择的是compile test bench。
上述就是本人在运用quartus联合modelsim进行联合仿真的所有内容啦!祝大家也都仿真顺利~