Modelsim仿真没有想象的那么难,我一直没想着仔细研究一下,本来想着请教别人的,但是最后还是决定找资料,自己好好做一下。

我原先都是调试C语言程序,然后直接用硬件验证的,没有注意到仿真的重要性。在FPGA上面,仿真占了很大的一部分。在我们实际验证之前,就采用仿真来排除可能出现的错误,能够节省很多时间。仿真过程中也可以让我们更加深入的思考所设计的系统。因此Modelsim就显得很重要了。

最初都是使用quartus进行直接调用的,对modelsim的整个操作流程还是不了解,后来直接用modelsim调用编写的程序。

Modelsim也可以编译verilog的程序的,我们可以建立一个空的工程进行编译的。我们这里使用的方法是在quartus里面进行编译。这两种方法我都测试过,都是可以的。

下面现在列出具体的方法。

// 注意一点,最后我们仿真需要两个文件,一个是我们的源文件.V文件,另外一个就是我们的testbench文件。我们最后仿真的时候,其实仿真的是testbench文件。

(1),使用quartus编写源文件,此处以38译码器为例。

/*

decode38

*/

module decode_38(keyin,led,clk);

input clk;

input [2:0]keyin;

output [7:0]led;

reg [2:0]read_key;

reg [7:0]led;

always@(keyin)

begin

read_key=keyin;

case(read_key)

3'd0: led=8'b1111_1110;

3'd1: led=8'b1111_1101;

3'd2: led=8'b1111_1011;

3'd3: led=8'b1111_0111;

3'd4: led=8'b1110_1111;

3'd5: led=8'b1101_1111;

3'd6: led=8'b1011_1111;

3'd7: led=8'b0111_1111;

default:

led=8'b1111_1111;

endcase

end

endmodule

(2)编写testbench文件

`timescale 1 ns/ 1 ps

module decode_38_vlg_tst();

reg clk;

reg [2:0] keyin;

// wires

wire [7:0]  led;

reg [3:0]invect;

initial

begin

#10 clk=1'b0;

forever

#10 clk=~clk;

end

initial

begin

for(invect=0;invect<8;invect=invect+1)

begin

keyin=invect[3:0];

#10 $display($time," clk=%b,keyin=%b,led=%b",clk,keyin,led);

end

end

initial

begin

#120 $stop;

end

decode_38 i1 (

// port map - connection between master ports and signals/registers

.clk(clk),

.keyin(keyin),

.led(led)

);

endmodule

(3)启动modelsim ,File->New->Project,建立工程

(4)保存新建的工程

(5)添加项目到建立的工程之中。此处选择Add Existing File(因为要仿真的文件我们已经编译好了)

(6)选择编译好的文件。需要加载我们的.V文件,以及testbench文件,一次可以加载多个文件的。

(7)在“Project”选项卡中显示刚才加载的文件,此时Status状态栏显示“?”,因为我们现在还没有对其进行编译呢

(8)选择菜单栏Complie进行全编译

(9)打开Library选项卡中的work库,找到我们加载的两个文件(.v .vt)。

(10)选中testbench文件,并右击鼠标,准备simulate

(11)右击我们的testbench文件,选中Add->To Wave-> All items in region

(12)设置仿真时间,我们这里设置10ms

(13)在最下面的命令行窗口输入”run”,或者选中Simulate->Run-All

(14)得到仿真结果

Modelsim仿真过程(完整版)相关推荐

  1. 四阶龙格积分法 matlab,matlab控制系统计算机仿真实验-完整版

    MALTAB 仿真实验指导书 实验一 实验题目: 欧拉法&梯形法的MATLAB 实现 实验目的: 1.熟练掌握MATLAB 的使用方法 2.牢记欧拉法.梯形法的计算过程 3.熟悉欧拉法.梯形法 ...

  2. CentOS 安装 tomcat 环境安装及配置过程完整版

    CentOS 安装 tomcat 环境安装及配置过程 查看安装包信息 yum info tomcat 安装 yum -y install tomcat 查看是否安装成功 rpm -q tomcat 输 ...

  3. python人脸识别opencv_Python基于Opencv来快速实现人脸识别过程详解(完整版)

    前言 随着人工智能的日益火热,计算机视觉领域发展迅速,尤其在人脸识别或物体检测方向更为广泛,今天就为大家带来最基础的人脸识别基础,从一个个函数开始走进这个奥妙的世界. 首先看一下本实验需要的数据集,为 ...

  4. 毕业论文ppt的研究方法及过程计算机专业,计算机毕业论文答辩PPT(完整版)教程文件.ppt...

    计算机毕业论文答辩PPT(完整版)教程文件.ppt Company Logo LOGO 指导教师: XXX 副教授 论文题目:综合评教系统的设计与实现 班级:计算机X班 学生:XX 学号:XXXXXX ...

  5. 换脸视频怎么做出来的?AI视频换脸教程【完整版手把手】免费AI换脸视频工具制作过程详解

    上期分享了wav2lip-GFPGan图片说话转视频的文章: 超写实虚拟数字人再升级:Wav2Lip-GFPGAN完整版教程及效果视频评测[手把手]_baoxueyuan的博客-CSDN博客 部分饱子 ...

  6. 加快modelsim仿真速度的方法(原创)

    ①仿真精度越高,仿真效率月底. 仿真时采用`timescale 1ns/1ns比采用1ns/100ps的仿真效率高 simulation was two billion ns. ②clock gene ...

  7. modelsim仿真正确FPGA运行不正确的可能原因 - cm4写寄存器错

    困住整整一周了,工作进行不下去,中午偶遇导师,指导意见是有两种可能: 1.  FPGA编译器优化代码,可以考虑把综合过程中所有的warning排查一下 2.  verilog里有不可综合的语句. 又及 ...

  8. modelsim仿真不出波形_直接扩频通信(下)仿真

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  9. modelsim仿真加速注意点

    下面说一下我的使用方法(我一般是在linux下使用,考虑到大家大部分都使用windows,所以下面举的例子为windows下的使用方法): 1.建立modelsim子目录 2.第一次运行时,还是需要先 ...

最新文章

  1. 4、linux网络编程--套接字的介绍
  2. VC Post-build使用心得
  3. python selenium 处理弹窗_python中能否使用selenium获取弹窗的文本内容?
  4. GDCM:ReadCanRead的测试程序
  5. 一天学完spark的Scala基础语法教程十三、文件IO操作(idea版本)
  6. 使用split_size优化的ODPS SQL的场景
  7. check the status of 'dd' in progress
  8. android学习十三(android的通知使用)
  9. expect免互交 常用编辑文本
  10. 4200有linux版本么,如何检查Linux版本
  11. 安装软件后,在postinst中执行ldconfig无效?
  12. php 支付宝支付怎样开发,PHP实现个人支付宝支付开发(二) - cmpay
  13. 正则表达式提取HTML中IMG标签的SRC地址
  14. 2021-2022年十类(30+)热门资质证书汇总分享
  15. 浏览器劫持解决:解决浏览器的捆绑问题
  16. JAVA的一些学习方法
  17. C#使用拉依达准则(3σ准则)剔除异常数据(.Net剔除一组数据中的奇异值)
  18. 家里宽带网络连接第二台路由器实验一
  19. 国外网络需要验证中国手机号码的格式(获取手机的验证码时)(kaggle 收不到手机验证码)
  20. 26.Vue列表渲染中key的作用与原理(内含虚拟DOM的对比算法详解)

热门文章

  1. 图像融合(Image Fusion)简介
  2. 自己写strcmp( )函数
  3. nvm安装使用及卸载
  4. ORA-00600 内部错误代码, 参数 [19004]
  5. 2021韩顺平图解linux
  6. PS2键盘第二套键盘扫描码学习发现
  7. 学习JBPM 工作流引擎 API方法(二)
  8. Nginx配置 转发URL中包含特殊字符
  9. Macbook电池优化的七种建议
  10. 集火全屋智能“后装市场”,真正玩得转的没几个