Quartus II和Modelsim初学踩坑笔记
1.软件安装
网上有关软件安装的教程已经足够多了,这里不再赘述,但我要提醒的一点是,不要把软件和之后创建的项目工程放在中文路径下面!!!
本文使用的软件环境是Quartus II和Modelsim Altera。
2.工程创建
(1)新建工程文件夹
工程文件夹大可以按自己的习惯创建,这里提供一种模板可供参考。(工程文件模板学习于小梅哥FPGA的AC620开发板标准配套学习资料的视频教程)
Template文件夹下分别有下图所示5个子文件夹,doc文件夹用来存放工程相关的说明文档等,img文件夹用来存放设计相关图片存放目录(主要为了方便后期写文档),prj为工程文件存放目录,rtl存放verilog可综合代码文件,testbench为对应的testbench存放文件夹。
(2)Quartus II中新建工程
打开Quartus II后点击新建工程按钮。
点击next。
1处填写工程所在位置,若使用上面的模板,则位置为“xx/prj”,2处填写工程名字,第三行会根据2处所填内容自动补全。
若工程要包含已存在的文件,则在这个页面选择文件,若没有,则点击next。
选择自己的FPGA板子。(若不下载代码到FPGA进行板级验证,这里可以跳过)
1处选择仿真软件,2处选择硬件描述语言,之后next。
点击Finish。
出现下面这个界面工程就创建完成了。
3.代码编写
使用快捷键“ctrl+N”或点击下图的图标或者点击File>New,新建文件。
在出现的弹窗中选择文件类型为“Verilog HDL File”,点击OK。
之后就可以在这个界面编写Verilog HDL代码。
这里以一个简单的二选一数据选择器代码为例,接着进行演示。
module mux2(
//端口列表
input a,
input b,
input sel,
output out
);
assign out=sel?b:a;
endmodule
注:如果在写代码时,发现自己的光标“|”变成了下划线“_”,可按键盘上的“ins”键切换回来。
快捷键“ctrl+s”保存文件,若使用上面的模板,则位置为“xx/rtl”,文件名建议和代码里的模块名一致。
点击下面的这个图标进行综合和验证,检测代码语法错误。
验证无误后开始编写测试代码,跟上面新建文件一样,新建文件时选择文件类型为“Verilog HDL File”。
编写测试代码。
`timescale 1ns/1ns
module mux2_tb();
//激励源
reg s1;//a
reg s2;//b
reg s3;//sel
wire light;
mux2 mux2_inst0(
//端口列表
.a(s1),
.b(s2),
.sel(s3),
.out(light)
);
initial begin
s1=0;
s2=0;
s3=0;
#100;
s1=0; s2=0; s3=0;
#100;
s1=1; s2=0; s3=0;
#100;
s1=0; s2=1; s3=0;
#100;
s1=1; s2=1; s3=0;
#100;
s1=0; s2=0; s3=1;
#100;
s1=1; s2=0; s3=1;
#100;
s1=0; s2=1; s3=1;
#100;
s1=1; s2=1; s3=1;
$stop;
end
endmodule
保存文件,若使用上面的模板,则位置为“xx/testbench”,文件名建议和代码里的模块名一致。
接着进行综合和验证,检测代码语法错误,检测无误后进行仿真配置。点击“Assignments>Settongs”按钮或者按快捷键“Ctrl+Shift+e”,会弹出如下界面。点击“Simulation”,在1处选择仿真软件,2处选择代码语言,点击选中3处,点击4处按钮,选择文件。
点击New。
点击“…”选择文件,在“Test bence name:”处填写测试模块名,最后点击“Add”。
回到下图的页面,点击“Apply”,再点击“OK”。
设置完成后点击下图按钮进行全编译。
编译无误后,点击下图按钮进行功能仿真。(之前的步骤只要认真,应该没什么大问题,就算设出有错也看不出来,从这里踩坑开始)
4.仿真验证
功能仿真
(1)问题:Modelsim一直疯狂弹窗,并且报错如下。
原因:若使用的是华为旗下的笔记本,或安装有华为电脑管家,则Modelsim会和华为电脑管家冲突。
解决方法:使用Modelsim时关闭华为电脑管家,点击右下角电脑管家图标,右键选择关闭即可解决。
(2)问题:Modelsim启动后无波形,左下角显示如下。
原因:a.用于测试的testbench文件内的代码有错,之前的综合和验证只能检测语法错误,代码逻辑错误编译不会报错,但仿真就无法运行。
解决方法:a.自己检查testbench文件内的代码并改正错误。
原因:b.Quartus II里的“Assignments>Settongs”里设置错误,下图中标明的地方要和代码里的模块名一致,也不能带有有“.v”等后缀。
解决方法:对照测试代码改正设置。
问题解决后,重启Modelsim,可在波形窗口看到输出的波形都是一条直线,此时点击下图按钮。
就能看到正常波形如下。
门级仿真
功能仿真正确后,在Quartus II里点击下图按钮进行门级仿真。
(1)问题:门级仿真和功能仿真波形一样,看不出电路延迟。
原因:Quartus II默认只进行功能仿真。
解决方法:在Quartus II点击“Assignments>Settongs”按钮或者按快捷键“Ctrl+Shift+e”,会弹出如下界面。点击“Simulation”,点击more EDA netlist Writer Settings,更改Generate nestlist for functional simulation only——off(默认on),之后再次进行全编译。
再次进行门级仿真,可看到下面的波形,对比功能仿真的波形可以看出,门级仿真的波形并没有整齐的对齐,显示出了电路的延迟。
---------------------------------------------------------------------------------
初学Quartus II和Modelsim,以上文字叙述若有错误,还请大佬轻喷,欢迎指正。
此外,这也是本菜鸟的第一篇博客,格式方面如不规范,还请见谅,谢谢。