Quartus II和Modelsim初学踩坑笔记

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。
next1处填写工程所在位置,若使用上面的模板,则位置为“xx/prj”,2处填写工程名字,第三行会根据2处所填内容自动补全。
工程名和位置若工程要包含已存在的文件,则在这个页面选择文件,若没有,则点击next。
包含文件选择自己的FPGA板子。(若不下载代码到FPGA进行板级验证,这里可以跳过)
选择板子1处选择仿真软件,2处选择硬件描述语言,之后next。
仿真软件和语言点击Finish。
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。
new点击“…”选择文件,在“Test bence name:”处填写测试模块名,最后点击“Add”。
add回到下图的页面,点击“Apply”,再点击“OK”。
OK设置完成后点击下图按钮进行全编译。
全编译
编译无误后,点击下图按钮进行功能仿真。(之前的步骤只要认真,应该没什么大问题,就算设出有错也看不出来,从这里踩坑开始)
功能仿真

4.仿真验证

功能仿真

(1)问题:Modelsim一直疯狂弹窗,并且报错如下。
报错1原因:若使用的是华为旗下的笔记本,或安装有华为电脑管家,则Modelsim会和华为电脑管家冲突。
解决方法:使用Modelsim时关闭华为电脑管家,点击右下角电脑管家图标,右键选择关闭即可解决。
(2)问题:Modelsim启动后无波形,左下角显示如下。
报错2
原因:a.用于测试的testbench文件内的代码有错,之前的综合和验证只能检测语法错误,代码逻辑错误编译不会报错,但仿真就无法运行。
解决方法:a.自己检查testbench文件内的代码并改正错误。
原因:b.Quartus II里的“Assignments>Settongs”里设置错误,下图中标明的地方要和代码里的模块名一致,也不能带有有“.v”等后缀。
报错3解决方法:对照测试代码改正设置。
问题解决后,重启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),之后再次进行全编译。
EDAoff

再次进行门级仿真,可看到下面的波形,对比功能仿真的波形可以看出,门级仿真的波形并没有整齐的对齐,显示出了电路的延迟。
延迟---------------------------------------------------------------------------------
初学Quartus II和Modelsim,以上文字叙述若有错误,还请大佬轻喷,欢迎指正。
此外,这也是本菜鸟的第一篇博客,格式方面如不规范,还请见谅,谢谢。

  • 12
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值