相对于简单的仿真,复杂的仿真是指由多个文件、甚至调用了IP核、使用tcl脚本进行的仿真。其实仿真步骤跟图形化的差不多,只不过每一步用脚本写好,然后再在软件里面run一下,主要过程就是:

  1、准备好各种源文件(机械操作)。

  2、修改modelsim工作路径,创建modelsim工程文件(机械操作)。

  3、书写modelsim脚本

  4、运行脚本,执行仿真

  上面的步骤中,最主要的就是第三步了,书写脚本是很重要的。下面我将按照上面的步骤,联合Altera公司(已经被Intel收购)的Quartus II 进行仿真一个IP核,这个IP核是ROM核,仿真出一个正弦波形。

=====================================================================

①为了规范设计,我使用下面的文件管理结构:

        

②根据上面的管理目录,创建文件夹

=====================================================================

然后就开始仿真之旅:

1、准备好源文件

  这一步要用到的是QII软件、matlab软件。

使用过ROM核的都知道,需要一个初始化的文件进行初始化,这里的初始化文件使用matlab和QII生成。

(1)获取ROM核的初始化文件。

  ①打开matlab之后,修改工作路径:

双击matlab选择路径:

  ②创建.m脚本文件,进行编写产生初始化文件的脚本(如.mif文件):

创建:

编写:

脚本文件不解释了,自己好好看一下内容吧,具体可以参考我的另一篇博文:http://www.cnblogs.com/IClearner/p/7273366.html。

保存:

,自己修改名字

  ③运行,产生.mif文件

得到了.mif文件

,

(2)QII产生IP核文件

  ①在进行产生IP核文件中,先进行转换.mif文件,也就是把.mif文件转换成.hex文件,这是因为,初始化ROM的文件有两种,也就是.mif文件和.hex文件。然而modelsim只能读取.hex文件,可是.hex文件的格式没有.mif文件那么简单,因此先产生.mif文件,再通过.hex文件进行转换。

  拷贝.mif文件到quarturs_prj下面的ipcore_dir中:

  打开QII,打开.mif文件:

得到:

另存为.hex文件:

选择成.hex格式,顺便想改个名也是可以的:

然后就得到了.hex文件:

  ②创建工程,生成ROM IP核。

  创建工程忽略,直接记录生成ROM的过程(其实也可以直接生成IP核而不创建工程):

先选verilog文件,再点...进行设置文件名/修改IP核。

这里就要注意了(注意上图),这里有altera_mf文件,这个就是进行仿真ROM核时需要的仿真文件。

OK,ROM IP核就生成了:

  ③创建,设计.v文件和测试脚本文件

2、修改modelsim工作路径,创建modelsim工程文件

所以的源文件都准备好了之后,就开始创建工程文件了

①这里创建工程的路径跟简单使用modelsim的操作差不多,不再详述:关闭工程,改变modelsim工作路径(工作路径选到sim文件夹里面),创建工程之后,弹出这个。

但是到这里的时候就不一样了:不添加任何的文件,直接关闭。

然后进行下面的操作(这些操作都是为了能够得到仿真波形所设置的):

②首先,根据仿真所要的库,进行移植库文件跟.hex文件到sim目录中:

移植仿真需要的库到sim中的altera_lib中:

注:仿真需要的库如果不添加,或者modelsim读取不到,就会有警告或者错误生成,到时候就需要根据提示信息进行修改;

仿真需要的库可以在IP核.v文件中查看,也可以在设置IP核时查看,此外对于复杂的IP核,会有相应的tcl文件进行解释,查看该tcl文件就可以找到需要添加哪些库了:

3、书写modelsim的tcl脚本

上面的.do文件可以参考我的另一篇博文:http://www.cnblogs.com/IClearner/p/7273441.html,主要有三点:

  添加设计的仿真文件、添加库文件、添加设计文件、添加IP核的.v文件

  这一步主要就是添加源文件了,跟图形化界面差不多,也可以用图形化界面进行仿真IP核。(当文件相当多的时候,就建议用脚本了,这里用图形化还是比较方便的,毕竟只有四个文件,但是用图形化的时候,要注意那些初始化文件的位置!!;这里只是作为一个用脚本的示范)

4、在modelsim中进行运行.do文件

运行之后,没有错误,就出现下面的波形了;

进一步用模拟的形式查看一下:

就看到了美美的正弦波了:

Modelsim的使用——复杂的仿真的更多相关文章

  1. 87.在ModelSim中添加Xilinx ISE仿真库

    在ModelSim中添加Xilinx ISE仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下.如作者是安装在D:\softwares\ ...

  2. 【仿真】【modelsim】:verilog功能仿真流程

    一.编写verilog源文件,在diamond中编译.编写testbench文件.在diamond设置中将仿真工具设置为modelsim,运行仿真向导 二.自动进入modelsim, 编译全部 运行仿 ...

  3. 基于Modelsim的视频捕获模拟仿真

    一.前言 针对牟新刚编著的<基于FPGA的数字图像处理原理及应用>中第五章系统仿真中关于视频捕获模拟的例子进行补充和仿真验证,简言之,吊书袋子. 2020-02-27 21:09:05 二 ...

  4. 基于Modelsim的直方图统计算法仿真

    一.前言 本篇主要针对牟新刚编著<基于FPGA的数字图像处理及应用>第六章第五节中直方图统计相关类容进行总结,包括代码实现及 基于Modelsim的仿真.书读百遍,其意自现. 2020-0 ...

  5. ModelSim仿真入门

    ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...

  6. Modelsim使用笔记(一个完成工程的仿真)

    这学期在玩Altera的板子,不不, 现在应该叫intel PSG.在QuartusII13.0上老喜欢用modelsim_ae做仿真,小工程用起来也方便,但是我做IIC配置摄像头的时序仿真时,就显得 ...

  7. vivado与modelsim的联合仿真

    转载: 一.在vivado中设置modelsim(即第三方仿真工具)的安装路径.在vivado菜单中选择“Tools”——>“Options...”,选择“General”选项卡,将滚动条拉倒最 ...

  8. 怎样用modelsim做后仿真

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

  9. 【黑金原创教程】【Modelsim】【第一章】Modelsim仿真的扫盲文

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

随机推荐

  1. Linux Centos 下安装软件 三种方式(转)

    Linux学习的路还很远呢,各位码农,新年快乐哈! 1)一种是软件的源代码,您需要自己动手编译它.这种软件安装包通常是用gzip压缩过的tar包(后缀为.tar.gz). 2)另一种是软件的可执行程序 ...

  2. VMware Workstation 学习笔记

    1. 什么是虚拟机:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.可以运行在一个完全隔离环境中的完整计算机系统. 2. 虚拟机的用途:测试软件.搭建某种特定需求的环境 ...

  3. OpenStack中部署glance的步骤

    OpenStack中部署glance的步骤(基于Ubuntu14.04系统) author:headsen  chen   2017-10-13   08:34:35 个人原创,转载请注明作者,出处, ...

  4. python 全栈开发,Day4(正式)

    一.列表 列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li = ['alex',123,Ture,(1,2,3,'wusir') ...

  5. 笔记:JDBC 数据库

    数据库 URL 在连接数据库时,我们必须使用各种与数据库类型相关的参数,例如主机名.端口号和数据库名称等,JDBC使用了一种与普通URL相类似的语法来描述数据库,JDBC URL 一般语法为: jdb ...

  6. android:layout_weight属性详解

    1. 按比例显示LinearLayout内各个子控件,需设置android:layout_width="0dp",如果为竖直方向的设置android:layout_height=& ...

  7. selenium2自动化测试学习笔记(三)

    今天是学习selenium的第三天,今天的主题是自动登录126邮箱. 今天总结碰到的坑有三个: 1.frame内元素抓取,使用driver.switch_to.frame(frameId)方法切换锁定 ...

  8. .Net开发之旅(一个年少轻狂的程序员的感慨)

    高端大气上档次.这次当时一个身为懵懂初中生的我对程序员这一职位的描述.那时虽不是随处都能看到黑客大军的波及,但至少是知道所谓的黑客爸爸的厉害,一言不合说被黑就被黑.对于懵懂的我那是一种向往.自己也曾想 ...

  9. java多线程的(一)-之java线程的使用

    一.摘要 每天都和电脑打交道,也相信大家使用过资源管理器杀掉过进程.而windows本身就是多进程的操作系统 在这里我们理解两组基本概念: 1.进程和线程的区别???? 2.并行与并发的区别???? ...

  10. 使用IDEA配置Maven + SpringMVC + Mybatis 【一步一步踩坑详细配置完成】

    PS:初学,想使用Maven配置一个SpringMVC的开发环境,照着网上的各种图文解说,配置了好久都没成功,有些写的不够详细,有些只有写一半,走了不少弯弯绕绕,踩了不少的坑,此文将正确配置成功的步骤 ...