ModelSim10.5c仿真详细过程

ModelSim10.5c与QuartusPrimepro17.1联合仿真步骤详解
这篇博客详细记录了如何在ModelSim10.5c中直接进行Verilog项目的仿真调试,避免通过Quartus调用。首先介绍了创建library和project的步骤,接着编写了二分频器的主程序和testbench,并进行了编译。然后,重点讲解了如何在ModelSim中编译仿真程序,包括添加库、运行仿真和查看波形。最后,作者尝试直接打开Quartus工程进行仿真,但未成功,最后通过新建project实现了仿真。此外,还分享了后期如何处理Quartus生成的项目并在ModelSim中成功仿真的经验,涉及库的管理和ip核的仿真设置。

ModelSim10.5c仿真详细过程记录

在学习使用QuartusPrime pro17.1时,发现仿真过程和低版本软件有所不同,查阅许多资料后了解到可以舍弃直接用Quartus调用ModelSim进行联合调试的方法,改为直接从ModelSim中打开testbench文件进行仿真调试,现将学习过程记录如下。

参考:Modelsim超级详细教程 手把手教一看就会

一.建立工程

  1. 先建立一个library工作库,命名为work,方法:File-new-library.(只在第一次创建时需要这一步,如果左下方library列表中已有work,可跳过这一步).在这里插入图片描述

  2. 创建project,本文中以一个简单的二分频器为例,工程名设为half_clk,方法:File-new-project.在这里插入图片描述
    会跳出如下dialog,选择Create New Flie以创建新文件:在这里插入图片描述
    新文件命名与工程名相同,为half_clk:在这里插入图片描述
    最后将前一个对话框关掉即可(因为他不会自己关)。

二.编写主程序

代码如下:
module half_clk(clk_in,rst_n,clk_out);

input clk_in;
input rst_n;

output clk_out;
reg clk_out;

always@(posedge clk_in or negedge rst_n)
	if(rst_n == 1'b0)
	clk_out <= 1'b0;
	else
	clk_out <= ~clk_out;

endmodule

在这里插入图片描述
先保存,再编译,编译成功后左侧project列表里文件后面会出现一个绿色的对勾,下方Transcript框里会出现一行绿色的success字样。

三.编写仿真程序

在左侧空白区域右键单击添加testbench文件,过程:Add to Project - New Flie,命名为half_clk_tb,同样要注意将文件类型修改为Verilog!!(默认类型为HDL,生成的是一个压缩包,迷惑).
代码如下(是按照个人的编程习惯写的):
timescale 1ns/1ns(前面少一个角标)
`define clock_period 200

module half_clk_tb;
reg clk_in;
reg rst_n;

wire clk_out;

half_clk half_clk_0(
	.clk_in(clk_in),
	.rst_n(rst_n),
	.clk_out(clk_out)
	);

initial clk_in = 1'b1;
always #(`clock_period/2) clk_in = ~clk_in;

initial begin
rst_n = 1'b0;
#380;
rst_n = 1'b1;
#5000;
$stop;
end

endmodule
同样保存后再编译。

四.编译仿真

在上方菜单栏找到“Compile All”进行全编译,然后在左侧Library选项卡下右键单击testbench文件选择Simulate运行仿真。
仿真完成后出现Object选项框,可以看到文件中涉及到的所有输入输出信号,ctrl+A全选,右键-Add wave添加波形,再打开wave窗口,上方工具栏找到Run all,就可以看到全部的仿真波形了。此时可以在wave窗口根据自己的喜好对所显示的内容继续宁增删或修改,方法跟旧版本ModelSim完全相同,于是不做赘述。效果如下:
在这里插入图片描述
仿真完成后记得quit,方法:Simulation - End Simulation。

至此,全部仿真结束。接下来打开一个之前用Quartus Prime pro17.1编写的工程文件测试一下是否能成功运行仿真。

五.尝试运用

  1. 采用直接打开之前编写的工程的方法。
    发现open-不论是选择prj文件夹下的.qpf文件还是选择simulate-modelsim文件夹下的.vf文件,再全部编译时软件所编译的内容仍旧是上一个二分频工程里的file,与现在打开的文件无关,效果如下图, 可以说明这种尝试是无意义的。
    在这里插入图片描述
  2. 新建一个project
    前面的步骤跟上一个工程的创建步骤完全相同,这次将文件命名为fish(只是示例)
    在这里插入图片描述
    代码随便复制一段之前写的东西,然后编译。编译成功√
    testbench也随便复制一段之前的,编译。√
    add wave,run all,观察波形,如图
    在这里插入图片描述
    方法奏效。但这次所实验的只是一个简单的程序,如果涉及到的文件比较多,结构比较复杂了可能会麻烦一些。

THE END.(小白的学习笔记,如果有大佬看到希望可以不吝赐教🙏)

六.后记

在之后的使用过程中又有一点新的体会,记录如下:
按照上述记录来说,是无法直接打开quartus生成的project的,但随着ModelSim用的越来越多,现在也比以前更熟悉了,学会了使用Modelsim直接打开Quartus生成的程序的办法。

1.使用Quartus编写project(内含ip核),命名为ip_test
2.在top文件中例化pll ip核,定义输入时钟频率为100MHz,输出时钟频率为156.25MHz
3.程序写完之后在Quartus中全编译,成功
4.打开ModelSim,删除当前work中全部文件,将ip_test工程中的文件编译到work中,方法:
在这里插入图片描述
在这一步需要编译三个部分的文件:工程中涉及到的.v文件、testbench文件、ip核文件夹下的.v文件。
ip核文件
在这里插入图片描述
全部编译成功后,work库下是这样的:
在这里插入图片描述
5.开始仿真。仿真前要注意添加几个lib:lpm库、primitive库、mf库、器件库,否则ip核仿真会失败,一般情况下这几个库就足够了,但如果所用到的ip核没有在这几个库中那就还需要自己查询并添加对应的lib(这一点我还在学习怎么查会更快速有效)。方法如下:Simulate-start simulation-libraries-add,然后从下拉选项中选择对应lib
在这里插入图片描述
添加完成后不要关闭对话框,切换到design选项卡下,选择要仿真的testbench文件,点击ok,仿真就开始运行啦!最后再根据自己的需求进行调试即可~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值