这里记载一下使用modelsim进行简单的仿真,方便以后使用的时候进行查看。所谓的简单的仿真,就是没有IP核、只用图形界面不用tcl脚本进行的仿真。简单的仿真步骤为:

1、改变路径到工作环境下的路径下面,创建工程。

2、添加仿真的源文件(.v文件等)。

3、编译源文件。

4、启动仿真,添加仿真信号。

5、调试、查看仿真波形。

这里就使用一个简单的例子——8分频电路,进行演示和讲解:

1、改变路径到工作环境下的路径下面,创建工程:

  ①打开modelsim后如果有工程,则先关掉工程:

        

关掉工程:

         

  ②改变工作路径:

   ③创建工程

        

        

OK之后,在当前的工作目录下面就创建了一个“work”的文件夹,这也就是物理库:

      

2、添加仿真源文件

            

或者右击空白处:

       

然后进行选择添加:

      

        

        

3、编译源文件

    

或者:

        

编译成功后:

      

如果编译不成功的,根据提示的信息,进行修改代码,然后对不成功的模块进行部分编译:

    

(如果modelsim看到的中文是乱码,那么可以在编辑器中进行模式转换,如从ASC转换成xxx编码模式),然后修改再编译(注意,所有的目录都应该放在英文路径中)。

4、启动仿真,添加仿真信号。

  ①切换到库选项卡,点开work,启动仿真

  在信息栏上面有两个选项卡:library和project两个选项卡,编译完之后,文件被编译到work目录下(library上面有work的选项,点开可以看到设计和仿真的.v文件),work文件夹里面包含此次工程编译库的信息;用modelsim打开的是.mpf
文件,也就是.mpf是modelsim的工程文件。

                

右击tb文件(如下图所示),选中测试模块的文件,右击,选择第二个simulation without optimistic(不进行优化代码再仿真,因为优化代码可能会把一些信号给优化掉),然后就启动了仿真:

           

  ②进行添加仿真信号

  启动仿真后,信息栏上面的选项卡会增加一个选项:sim;也就是总共有三个选项卡在信息栏上面(Library,project,sim)在sim选项中,左边是模块的整体结构;右击例化的设计文件,选择 ADD wire,就可以添加信号到波形窗口

     

然后就弹出了波形窗口:

     

5、调试、查看仿真波形。

  ①点击运行

         

就可以看到波形了:

    

Run是每点击一次运行固定的时间(如100ns);

Continuerun是一直运行,直到点击break,点击break后显示波形;

runall是运行所有,直到点击break,点击break后显示波形。

  ②看波形,发现不对;修改代码后,需要在project区进行重新编译,然后回到sim区,点击重新开始,然后根据①的步骤就可以继续完成简单的仿真工作了。

注:添加仿真信号可以直接把信号拖到波形窗口区:

       

然后可以调试查看波形。关于其他调试、查看波形的技巧,以后学习了、用到了再进行记录。

使用Modelsim进行简单仿真的更多相关文章

  1. 基于modelsim-SE的简单仿真流程—下

    基于modelsim-SE的简单仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile A ...

  2. 基于modelsim-SE的简单仿真流程—上

    基于modelsim-SE的简单仿真流程 编写RTL功能代码 要进行功能仿真,首先得用需要仿真的模块,也就是RTL功能代码,简称待测试的模块,该模块也就是在设计下载到FPGA的电路.一个电路模块想要有 ...

  3. 通过文件读写方式实现Matlab和Modelsim的联合仿真

    虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...

  4. vivado和modelsim联合调试仿真

    vivado和modelsim联合调试仿真 0赞 发表于 2017/5/10 19:10:59 阅读(881) 评论(0) 使用vivado和modelsim联合调试仿真时,在破解完modelsim后 ...

  5. Modelsim SE自动化仿真——如何将.do文件中自定义的库链接到testbench顶层模块

    我们用Modelsim SE进行仿真时,为了方便,一般会编写.do文件来启动当前仿真.关于.do文件的编写,一般网上都有成型的模板,我们只要稍微改几个参数,就可以符合我们的仿真需求了.但是如果仿真时需 ...

  6. 用Modelsim SE 直接仿真 Altera(Intel PSG) IP核 需要注意的问题

    如果我们直接用Modelsim SE仿真 Altera IP核,首先会进入Quartus II目录下找到IP核对应的仿真库源文件,然后在Modelsim SE中进行编译,添加到Modelsim SE的 ...

  7. vivado与modelsim的联合仿真(二)

     最近在做Zynq的项目,曾经尝试使用ISE+PlanAhead+XPS+SDK组合和Vivado+SDK来搭建工程,使用中发现前者及其不方便后者有诸多不稳定.近期得闻Xilinx退出Vivado20 ...

  8. Xilinx ISE如何调用Modelsim进行联合仿真

    图: 在对设计的芯片进行测试时,经常要用到FPGA,可是里面的仿真工具却不如Modelsim那么好用,且在规模比较大时,ISE在仿真时,软件经常会报告内存限制的问题,此时一般会切换到Modelsim软 ...

  9. 怎样用modelsim做后仿真

    摘要: 怎样用modelsim做后仿(编译工具采用quatus) step1:在qurtus改变编译选项:     assignments->EDA tool setting:选择verilog ...

随机推荐

  1. 几个常用的linux命令(操作服务器时会用到)

    目录 tmux 背景 安装 使用 启动一个tmux session 暂时离开当前session 回到之前的session 重命名session 创建window 创建pane ps scp 参考 tm ...

  2. VSTO在幻灯片里面添加按钮对象

    //添加Form窗体,窗体中添加Image控件,单击弹出"PPT"信息提示 //命名引用:using MF = Microsoft.Vbe.Interop.Forms; priva ...

  3. python 自定义回调函数

    回调函数用起来比较爽.特别是在js中,满世界全是回调,那么在python中,怎么来优雅地实现自己的回调函数呢 下面贴一个我写的例子 class BaseHandler(object): def cra ...

  4. IE6不支持position:fixed的解决方法

    解决IE6不支持position:fixed的方法,非常简单,具体调用请参考下面: /*让position:fixed在IE6下可用! */ .fixed-top /* 头部固定 */{positio ...

  5. 在C#中初遇Socket - 1

    后期项目实战:多人在线聊天室 源码位置:https://git.oschina.net/z13qu/BlogProjects 课前须知 这里不讲解Socket和TCP/IP的底层知识 对于初学者来说底 ...

  6. ReactiveCocoa源码解析(三) Signal代码的基本实现

    上篇博客我们详细的聊了ReactiveSwift源码中的Bag容器,详情请参见<ReactiveSwift源码解析之Bag容器>.本篇博客我们就来聊一下信号量,也就是Signal的的几种状 ...

  7. Android 串口设置校验位、速率、停止位等参数

    Android 串口通讯设置校验位.速率.停止位等参数 最近业余时间有个android项目需要和硬件进行通信,通讯方式都是通过串口,android串口通讯google有个开源的demo 和很多人一样我 ...

  8. php中curl远程调用获取数据

    $jump_url=$this->_post('locations'); $url=htmlspecialchars_decode($jump_url); $ch = curl_init(); ...

  9. DOCKER 从入门到放弃(一)

    前言 关于docker的各种概念已有各位大神珠玉在前,请各位自行查看,本系列的目的是各种详细操作步骤 各种概念特别推荐CloudMan的3篇blog: http://www.cnblogs.com/C ...

  10. js字符串转换为数字 总结

    a. 将一个字符串转换为数字的一种缺少些技巧但是很清楚明白的方法就是:把Number()构造函数作为一个函数来调用:  var number = Number(string_value); b. pa ...