QuartusII Modelsim使用教程

4 篇文章 3 订阅
订阅专栏

我的博客:QuartusII Modelsim使用教程 | Infinite journey (infinite-zh.com)

QuartusII中Modelsim是一个很好的仿真软件,相较于VWF,它的仿真时间更长、显示更具体、界面更友好,另外Modelsim还可以结合TestBench来进行仿真,省去了自己设置信号的过程。本文将从以下几个方面来介绍Modelsim的使用:

  • 1、Modelsim联合TestBench进行仿真;
  • 2、Modelsim仿真的几个小窍门;
  • 3、Modelsim软件的bug

1、Modelsim联合TestBench进行仿真

我一开始的时候对TestBench很不习惯,因为一搜TestBench就有各样的语法,让人头大,但后来在我写了一两个之后,我就不禁发出感叹“我是**”,TestBench免去了我打开modelsim之后,手动配置输入信号、时钟等,大大提高了我的仿真效率。

在Verilog代码写好编译好之后,可以通过Processing->Start->Start Test Bench Template Writer来自动生成一个TestBench模板。我们可以看到他是长这个样子的

// Copyright (C) 2017  Intel Corporation. All rights reserved.
// Your use of Intel Corporation's design tools, logic functions 
// and other software and tools, and its AMPP partner logic 
// functions, and any output files from any of the foregoing 
// (including device programming or simulation files), and any 
// associated documentation or information are expressly subject 
// to the terms and conditions of the Intel Program License 
// Subscription Agreement, the Intel Quartus Prime License Agreement,
// the Intel FPGA IP License Agreement, or other applicable license
// agreement, including, without limitation, that your use is for
// the sole purpose of programming logic devices manufactured by
// Intel and sold by Intel or its authorized distributors.  Please
// refer to the applicable agreement for further details.

// *****************************************************************************
// This file contains a Verilog test bench template that is freely editable to  
// suit user's needs .Comments are provided in each section to help the user    
// fill out necessary details.                                                  
// *****************************************************************************
// Generated on "05/17/2020 21:30:07"
                                                                                
// Verilog Test Bench template for design : AES_encryp
// 
// Simulation tool : ModelSim-Altera (Verilog)
// 

`timescale 1 ps/ 1 ps
module AES_encryp_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg [127:0] iKey;
reg [127:0] iPlaintext;
reg rst_n;
// wires                                               
wire [127:0]  oCiphertext;

// assign statements (if any)                          
AES_encryp i1 (
// port map - connection between master ports and signals/registers   
	.clk(clk),
	.iKey(iKey),
	.iPlaintext(iPlaintext),
	.oCiphertext(oCiphertext),
	.rst_n(rst_n)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
                                                       
// --> end                                             
$display("Running testbench");                       
end                                                    
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin                          
                                                       
@eachvec;                                              
// --> end                                             
end                                                    
endmodule

在这里特别提一下最后一个@eachvec 这一串代码,虽然具体不知道这段代码的作用,但如果加上这段代码,那么在进行Modelsim仿真的时候,仿真时间会特别短,clk也无法振动起来,因此再写需要clk的TestBench时建议将@eachvec这一段去了。

那么接下来编写TestBench就变得十分容易,你可以在initial中加入你要初始化的变量,例如rst_n,初始输入的数据等等,除此之外还可以通过#延时,来增加新的输入。然后在always中进行clk的实现,下面是加入初始化变量和时钟的部分TestBench代码。

initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
begin                                                  
	#0 	clk = 0;
		rst_n = 0;
	#5	rst_n = 1;
		iKey = 128'h31_32_33_34_35_36_37_38_39_30_31_32_33_34_35_36;
		iPlaintext = 128'h30_39_38_37_36_35_34_33_32_31_36_35_34_33_32_31;
	#1000	rst_n = 0;
        #5      rst_n = 1;
		iKey = 128'h30_39_38_37_36_35_34_33_32_31_36_35_34_33_32_31;
		iPlaintext = 128'h31_32_33_34_35_36_37_38_39_30_31_32_33_34_35_36;
// --> end                                             
$display("Running testbench");                       
end                                                    
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin                          
    #10 clk = ~clk;                                                                                              
// --> end                                             
end                                                    
endmodule

在写了一两个TestBench之后,也可以去了解一下repeat等的函数,来进一步提高编写TestBench的能力。

以下是配置Modelsim启用TestBench。

点击菜单栏的Assignments->setting->EDA Tool Settings->Simulation如下图所示

之后就一直Ok,然后就可以打开Modelsim进行仿真了。

2、Modelsim仿真的几个小窍门

1、在使用Modelsim时,我们常常会发现代码的问题然后去修改,那么修改了代码之后如何重新Modelsim仿真呢

如上图所示,只要在Modelsim中的Library->work->修改代码的文件->Recompile即可重新编译,不需要再每次重启Modelsim。

在之后如何重新运行Modelsim

如图所示,Simulate->Restart 选择OK即可,在之后run即可

值得一提的是,run不仅可以通过Simulate->run 还可以在如下图中直接输入run 100来运行仿真

2、如何在Modelsim中加入别的变量?

如上图所示,我们可以在sim中选择相应的模块,其中的assign是你在头文件中定义的变量。

另外再加入变量后,需要Restart Modelsim仿真,这样才可以看到数据一开始的变化过程,当然如果不进行Restart,也可以看到你加入变量之后的时间段的结果。

3、Modelsim的软件Bug

Modelsim因为版本问题,可能会有一些的坑,我这里记录一个我最近遇到的坑,之后又新的坑会再继续更新。

1、关于Modelsim无法找到mif文件的问题

在我使用的Quartus17.1的自带的Modelsim中,当我使用ROM IP核的时候,我通过Mif文件写入,但通过modelsim仿真却发现,mif文件并没有能够被modelsim读出来,我也搜索了许多的解决方案,例如,将mif文件放在simulation文件夹下,或者说将mif文件放在工程文件下,但最后都不好使。最后我找到了解决方案:将mif文件的路径改成绝对路径,如下图所示。(PS:这个可能看脸,我同学的同样版本的quartus和modelsim他就可以读出来......)

具体就先更新这么多,日后在实践中又遇到新的问题再回来更新哈。

Quartus IIModelsim软件安装教程
fpga_gcs的博客
11-15 6097
它还提供了最友好的调试环境,具有个性化的图形界面和用户接口,为用户加快调试提供强有力的手段,它是 FPGA/ASIC 设计的首选仿真软件。然后打开电脑的设备管理器,电脑的设备管理器打开方法为:右键点击桌面的【计算机】→【管理】→【设备管理器】或者在搜索窗口搜索【设备管理器】可以在其它设备下面看到 USB-Blaster 设备,前面有个黄色的感叹号,说明电脑已经识别到下载器,但设备的驱动没有安装。Quartus 软件需要大约 6G 的安装空间,大家可根据电脑磁盘空间的大小来选择相应的路径,
quartus II modelsim 破解安装教程
05-21
quartus II modelsim 破解安装教程!
QuartusIIModelsim之间的使用方法
08-04
使用QuartusII生成Testbench,然后打开Modelsim软件,进行单独仿真。
Quartus使用步骤及联合Modelsim仿真教程
m0_64605336的博客
11-12 1万+
Quartus使用记录及与modelsim联合仿真
Quartus II + Modelsim 脚本仿真
最新发布
qq_37624854的博客
12-06 1266
第5步,产生仿真脚本并进行修改:Create the Simulation Script。第3步,指定EDA仿真工具:Specify EDA Tool Settings。,cd切换到mentor_example.do所在路径, 敲入。第1步,创建一个ram ip,并形成一个例化的top层ip。第7步,运行运行mentor_example.do脚本文件。,运行mentor_example.do脚本文件。第2步,自己再单独写一个testbench.v。打开modelsim,在。Transcript栏中。
quartus+modelsim仿真教程
热门推荐
树下等苹果的博客
02-24 2万+
一、编写设计程序 1、新建工程: 打开quartus软件,菜单栏:File->New Project Wizard,然后得到下图界面:点击next。 在该界面中需设置工程目录以及工程名。 本项目没有写好的代码,直接点击next进入下一步。 在以下界面选择相应的设备,这需要根据你手上设备的型号选择。本项目不需要再实物开发板上验证,所以不进行选择或者随意选择一款均可。 接下来是EDA工具选择,选择好后点击next。 最后一步是之前的一个总结报告,直接finish就好。至此,成功新建一个项目。
3、Modelsim编辑与运行
qq_46744717的博客
07-18 2599
3、Modelsim编辑与运行
Quartus II 13.1入门级使用方法 适用于小白
初学小白的博客
07-20 2万+
对于学习FPGA的初学者而言,使用Altera公司芯片的开发板价格较为便宜,参考的资料也多,而与之配套的就是Quartus II开发软件。小白自己使用的就是Quartus II 13.1版本,下面用一个计数器的verilog代码为例,简述一下Quartus II的入门级使用和调用Modelsim仿真的方法。 1:首先养成一个良好的习惯,在做工程前建立一个良好的工程文档(目的是让你自己可以找到该工程!!!)。本次工程文档命名cnt,小白呢,喜欢将工程文档内部分为以下四个文档:doc(放文件资料),par..
Quartus II软件的使用
Kizai的博客
10-24 1万+
在这里,我们只是简单的介绍了一下上述的流程图,让大家有个大致的了解,接下来我们就以流水灯实验的工程为例,对每个流程进行详细的操作演示,一步步、手把手带领大家学习使用Quartus II软件。 在创建工程之前,我们建议大家在硬盘中新建一个文件夹用于存放自己的Quartus工程, 这个工程目录的路径名应该只有字母、数字和下划线,以字母为首字符,且不要包含中文和其它符号。我们在电脑的F盘Verilog文件夹中创建一flow_leds文件夹,用于存放本次流水灯实验的工程,工程文件夹的命名要能反映出工程实现的功能,
quartus联合单独安装的modelsim仿真
小博的博客
05-08 3396
quartus仿真
Quartus II 18.0 基于Modelsim仿真快速入门
08-29
Modelsim仿真快速入门,基于最新版本Quartus II 18.0版本
QuartusII教程(详细与简明两个)
12-23
很不错的教程,一目了然 简洁明了 2个文档,一个简洁,一个详细
Quartus II使用说明(详细).pdf
04-27
Quartus II入门,使用说明(内容详细)
Quartus II使用方法简介
09-26
都是从网上找的,然后整理的,还是不错的………………
QuartusII中文简明使用手册(教程).pdf
09-13
QuartusII中文简明使用手册(教程)QuartusII中文简明使用手册(教程)QuartusII中文简明使用手册(教程)QuartusII中文简明使用手册(教程)QuartusII中文简明使用手册(教程)
SIM.rar_Quartusii modelsim_modelsim_sim
09-19
MODELSIM的实验程序,在QUARTUSii中调用MODELSIM,实现仿真
QuartusIIModelSim入门.pdf
09-05
QuartusIIModelSim快速入门材料,通过一个简单的例子来让读者了解软件的操作和使用,适合入门的小伙伴使用。
基于quartusiimodelsimverilog入门案例源码
04-05
基于quartusiimodelsimverilog入门案例源码 基础实验_01_多路复用器 :4通道8位带三态输出 基础实验_02_多路解复用器 :4通道8位带三态输出 基础实验_03_编码器 :8位输入3位输出编码器 基础实验_04_优先编码器 ...
Quartus IIModelsim安装破解步骤
10-17
Quartus IIModelsim安装破解步骤
modelsim使用教程
05-13
ModelSim是一款常用的仿真工具,用于对硬件描述语言(HDL)进行仿真。下面是ModelSim使用教程: 1. 安装:安装ModelSim需要先下载安装包,双击安装包直接安装即可。 2. 创建项目:打开ModelSim,选择File -> New -> Project,选择一个文件夹作为工作目录,输入项目名称,点击Next。 3. 添加文件:在Add Existing File中添加需要仿真的HDL文件。 4. 编译:在工具栏中选择Compile All,或在Transcript窗口中输入vlog *.v,进行编译。 5. 设置仿真波形:在工具栏中选择Wave -> Add Wave,选择需要仿真的信号,点击Add,然后点击OK。 6. 运行仿真:在工具栏中选择Simulate -> Start Simulation,或在Transcript窗口中输入run,开始仿真。 7. 观察仿真波形:在仿真波形窗口中观察仿真结果。 8. 结束仿真:在工具栏中选择Simulate -> End Simulation,或在Transcript窗口中输入quit,结束仿真。 以上就是ModelSim的基本使用教程,你可以通过这些步骤进行仿真。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • STM32学习——入门小项目 20819
  • wsl2安装与 gcc环境搭建 10423
  • 用20块的摄像头(不带fifo的OV7670)做WiFi实时传图小车 8463
  • QuartusII Modelsim使用教程 7159
  • Xilinx LVDS使用(以DAC AD9736展开) 6973

分类专栏

  • FPGA 4篇
  • STM32 6篇
  • One'Net 1篇
  • 深度学习 1篇
  • Python

最新评论

  • Xilinx LVDS使用(以DAC AD9736展开)

    2301_77500826: 大佬有工程没,可以分享一下不

  • CubeIDE V1.5.0学习笔记(二)——第一个程序点亮LED

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)增加除了各种控件外,文章正文的字数;(2)提升标题与正文的相关性。

  • STM32——串口DMA字库更新

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)提升标题与正文的相关性;(2)增加除了各种控件外,文章正文的字数;(3)增加条理清晰的目录。

  • FPGA除法——迭代除法

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)增加除了各种控件外,文章正文的字数;(2)增加条理清晰的目录;(3)提升标题与正文的相关性。

  • IWR6843 + MMWAVEICBOOST + DCA1000EVM 开箱使用

    qq_45026868: 中间的算是接口板,你雷达有接口的话,可以直接连DCA1000

大家在看

  • linux安装conda环境实践 6
  • 红队与蓝队:有何区别? 504
  • 改进YOLO系列 | 谷歌团队 | CondConv:用于高效推理的条件参数化卷积 776
  • 【自然语言处理】python之人工智能应用篇——文本生成 892
  • Linux学习笔记(一)(以Ubuntu为例) 1562

最新文章

  • IWR6843 + MMWAVEICBOOST + DCA1000EVM 开箱使用
  • kaggle上mmdet的使用与tensorboard的解决方案
  • wsl2安装与 gcc环境搭建
2022年2篇
2021年5篇
2020年5篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

哆哆女性网史姓女孩的女孩起名凡夫俗子是什么意思四川特色餐饮加盟婴儿网上取名起名大全大全父亲姓柴母亲姓张可以起的名字linzhengying互联网公司排名起名98洪水个人小额贷款新生儿起名字大全 免费苏氏起名字女购物狂电影亚冠杯监狱战舰2头皮里莫名鼓起了个包姓马给宝宝起名字啊根据名字起公司名字郭起名字刘雁南五杀电影网如何为孩子起名it工作室起名为什么刚进去女的会叫一声美女的胸部历史老师袁腾飞酸奶店起名起女孩小名乳名大全柴犬起名字日系小孩子男孩起名字alexa排名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化