博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ModelSim 仿真教程
阅读量:2222 次
发布时间:2019-05-08

本文共 2453 字,大约阅读时间需要 8 分钟。

本教程为结合成都某公司总经理的教导及本人仿真经验所创,希望能对大家有所帮助,错误之处望能指出,不胜感激!

下图为我们进行ModelSim仿真的步骤框图。在本文中,讲的将是虚线框内的部分,其余部分也有涉及(具体文件已经在示例的工程中)。

一.ModelSim 软件

在本教程中,我们使用的 ModelSim 软件版本是“Modelsim 6.2b”。因为涉及到版权问题,本文并不提供软件的下载链接。

二.工程文件框架介绍

在本教程中,将以较为简单的工程 “binaryzation”(二值化)为例来讲述:

(本工程可在下载得到。)

工程 binaryzation 文件总目录:

   

由上图,工程 Binaryzation 包含了四个子文件bench,doc,matlab,rtl,sim。下边介绍这几个文件夹的作用:

1.bench 

用于放置测试文件(testbench)。在本工程中,测试文件为binaryzation_tb.vhd。见下图:

 

2.doc 

 用于放置工程的说明文件。在本工程中,说明文件为Binaryzation.doc。见下图:

 

3.matlab

用于放置matlab文件及一些图像。Malab文件主要是用于生成测试数据及分析仿真结果。见下图:

 

4.rtl 

用于放置工程设计文件。见下图:

 

5.sim

用于放置do文件(执行仿真)、仿真中间结果或最后仿真结果。见下图:

 

其中 work 及 vsim.wlf 为仿真时自动产生的文件,可以不用管;X.txt为matlab代码产生的图像数据,用于测试输入;Y.txt保存的是仿真结果数据;lanbojini_heibai.jpg为Matlab读入Y.txt数据后以图像的形式展示出来;size.txt存储的是matlab中间数据,只是为了方便matlab展示结果图片。最后的是三个do文件,它们才是真正的执行仿真的文件,下边简单介绍下它们:

1)“binaryzation_wave.do”

里边保存的是波形数据。如何生成将在后文进行;

2)“binaryzation_sim.do”

里边是对仿真的各项进行设置,详细见工程的文件或下截图:

红色框内的文件根据自己设计文件的情况进行更改。同时注意编译那部分编译文件的先后顺序,一般是小模块文件在前,大模块文件(引用了小模块)在后。

 

3)“sim.do”

放置的是要执行哪个仿真文件(do文件,如 binaryzation_sim.do),非常简单,主要是为了方便后续仿真。举个例子:我刚好想在该文件的基础上再增加一个“binaryzation_wb.vhd”(与binaryzation.vhd一般有一定关系,在实现的时候可能调用了这个早些设计的文件)设计文件,但这个文件又与binaryzation.vhd有关系,那我就可以直接在rtl->vhdl目录下新建一个binaryzation_wb.vhd,同样在bench->vhdl新建binaryzation_wb_tb.vhd, 在sim->rtl_sim新建binaryzation_wb_sim.do、binaryzation_wb_wave.do。这时我在“sim.do”简单的再添加一个“do binaryzation_wb_sim.do”这条语句就可以了,再将“do binaryzation _sim.do”注释掉我就可以进行新设计模块的仿真了。见下图:

 

关键在于,如果我觉得早些设计的模块binaryzation.vhd有问题,我按下图操作就可以轻易测试这个原先的模块了。

 

还有另外一点值得说的是,sim.do要比dobinaryzation_sim.do、do binaryzation_wb_sim.do来的好记,容易记忆。

三.测试文件Testbench(tb)的撰写

Testbench简单来说是为设计文件(如binaryzation.vhd)提供输入、将仿真结果输出至外部文件(输出至外部文件也可不用,按实际情况来定)的VHDL文件。下边以binaryzation_tb.vhd为便来讲讲怎么写testbench。

1.  输入

1)从一个文件X.txt读入用于测试的数据(由matlab代码产生,具体代码见matlab文件夹)。详细注释见原工程,下图读入模块并无注释。

 

2)clock、reset、wren信号的产生

 

2.  输出

将仿真结果数据写入一个Y.txt的文件(最后由matlab代码调用以图像形式展示出来)。详细注释见原工程,下图读入模块并无注释。

 

3.  与设计文件binaryzation.vhd连接。

具体连接方法见下图:

 

四.ModelSim仿真

1. 执行DO文件

执行DO文件的地方,见下图红框

 

       执行方法,见下图:

 

2. Wave文件的生成

由View->Wave打开波形图,将“binaryzation_sim.do”中的“do binaryzation_wave.do”注释掉,执行do sim.do,可以看到Wave中并没有波形数据产生。此时如下图操作:

 

(此时选择显示哪个波形是为展示用的,随便选的,所以大家可以根据自己需要选择显示哪些波形)选中Wave窗口(点击下就行了),再点击保存,按下图保存就可以了:

 

然后将“binaryzation_sim.do”中注释掉的“do binaryzation_wave.do”重新添加上,再执行do sim.do就能看到Wave窗口有波形数据了。见下图:

 

大家还可以更改显示波形数据的属性,具体情况根据自己需要来定,见下图:

大家修改设置后记得要保存哦...

五. 仿真结果

这是仿真之前的灰度图片

这是仿真(二值化)之后的图片

本教程到这里就结束了,希望能够帮到你。如果你有问题,我们可以共同探讨。

 

 

转载于:https://www.cnblogs.com/xiehongfeng100/archive/2013/04/02/3674271.html

你可能感兴趣的文章
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>
contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
查看>>
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>
PHPstudy中遇到的坑No input file specified,以及传到linux环境下遇到的坑,模板文件不存在
查看>>
TP5.1事务操作和TP5事务回滚操作多表
查看>>