modelsim使用教程

modelsim使用教程
modelsim使用教程

第8章 使用ModelSim进行设计仿真

ModelSim为HDL仿真工具,我们可以利用该软件来实现对所设计的VHDL或Verilog程序进行仿真,支持IEEE常见的各种硬件描述语言标准。可以进行两种语言的混合仿真,但推荐大家只对一种语言仿真。ModelSim常见的版本分为ModelSim XE和ModelSim SE两种,ModelSim版本更新很快,目前最新版本为5.8版本,该版本支持VHDL的2002标准以及Verilog的2001标准,此外,在该版本的Linux、HP和SUN工作站等平台支持VHDL、Verilog 和SystemC的混合仿真,但在Windows平台上不支持SystemC的仿真。本章将对ModelSim5.7版本进行介绍,目的是希望看完本章,读者可以简单地使用ModelSim进行仿真,有关更深入地教程,还是参考ModelSim附带的文档。在网址https://www.360docs.net/doc/be12201915.html,/support/上也可以找到深入的教程,在该页面上注册以后,会在电子邮件中收到发过来的密码,根据邮件地址和密码登陆后,会有一些高级教程和使用要点(Application Notes)下载。

ModelSim5.7SE版本内部划分为更细的版本编号,从ModelSim5.7aSE到ModelSim5.7gSE等等。读者可以选择任一版本。另外,如果ModelSim是和ISE一起使用的话,你需要编译Xilinx的一些库文件,这些库文件包括unisim、simprim、xilinxcorelib、aim、pls、cpld等,有了这些库文件,可以在ISE中生成设计的行为仿真(将设计转换为RTL描述后进行的仿真)、转换后仿真(将设计转换为Xilinx器件的基本模块来实现后进行的仿真)、映射后仿真(将设计用Xilinx的具体器件的具体模块实现后进行的仿真,仿真中包含了器件的延时,但由于没有布局布线无法提取出互连线的信息,因此仿真中不包含互连线的延时、电容、电阻等信息)、布局布线后仿真(将设计对Xilinx具体器件进行布局布线后,提取出互连线的信息,进行的仿真包含了器件的延时以及互连线的延时等信息)的各种模型,然后在ModelSim中对这些模型进行仿真,由于ISE和ModelSim已经实现了无缝的连接,在ISE中只需设置一个可视的波形文件,然后点几下鼠标就可以实现各种仿真,具体的方法在ISE的使用一章中有较为详细的介绍,可以参阅具体的章节。同时,也可以使用ModelSim的XE(Xilinx Edition)版本,由于该版本是Xilinx版,其中自然就集成了Xilinx的各种库文件,使用时就不需要考虑库文件方面的问题了。对于ISE不同版本集成了不同版本的ModelSim,虽然是集成,还是需要单独进行安装的。对于ISE6.1版本配套的ModelSimXE版本为ModelSim5.7cXE。

本章为ModelSim的初级教程,读者读完本章可以较为熟练的使用ModelSim进行设计仿真,本章没有也不可能涉及ModelSim的各个方面,要想全面的掌握ModelSim可以参阅软件文档。

8.1 设计准备

在本节中将介绍ModelSim5.7的安装,Xilinx仿真库的设置等方面的内容,不同的版本的安装过程大致相同,在此不再多讲,只是若你安装XE版本时,会出现选择是否是免费的Starter版本,如果不想购买可以选择该选项,其实,Starter版本足够完成我们遇见的设计仿真。若你连在互联网上,可以在线申请License文件,选取开始->程序->ModelSimXEII5.7c->Submit License Request,会打开一个网页,如果你在Xilinx网站上未注册,可以先在线注册,已经注册的话先登录,会出现另一界面,显示你的注册信息,点击Submit就可以申请License了。过几分钟可以到你的电子邮箱里收取License文件。若安装ModelSim的机器没有联到互联网,可以点击开始->程序->ModelSimXEII5.7c->License Request Instructions,会打开一个文本文件,安装要求填写并发到指定的邮箱即可,但这种方法又是很难得到回应。得到License文件后,再点击开始->程序->ModelSimXEII5.7c->Licensing Wizard,指定License文件即可。对于非XE版本的ModelSim 安装同一般软件的安装。

ModelSim的各个版本可以从互联网上免费得到,购买的只是License文件,ModelSim 的下载地址为https://www.360docs.net/doc/be12201915.html,/,进入这个界面可以点击Download,用户填写完一张表格后可以得到一个小时的下载时间,读者在首页上点击Evaluations来得到评估版本的license文件。

ModelSim软件的加密采用的是Flexlm方法,Flexlm(Flexible License Manager)是由Globetrotter 公司发明的软件加密方法,Globetrotter 公司向软件厂商出售相关开发软件,软件厂商把此加密程序集成到自己的软件中,该方法是目前最为流行的EDA软件加密方法,已被80%以上的EDA软件公司所采用,该方法可以锁定机器的硬盘号,网卡号,使用日期,支持加密狗等,以保护软件的知识产权。打开我们得到的ModelSim Starter版本得到的 License.dat文件可以看到如下内容:

FEATURE xe-starter modeltech 2004.12 1-jan-00 uncounted \

9C0FA6415C9327086559 HOSTID=DISK_SERIAL_NUM=c61e85a ck=244 其中,FEATURE是关键字;xe-starter是FEATURE名,即允许开通的功能;modeltech 是厂商标识;2004.12是版本标记,可以是时间,也可以是版本号;1-jan-00为过期时间,如果是permanent或0,表示永不过期,这里的00就表示不过期;uncounted表示使用人数限制;9C0FA6415C9327086559是根据以上条件和Flexlm加密算法计算出的密码;HOSTID=DISK_SERIAL_NUM=c61e85a表示运行机器的特征,可以指定运行机器的硬盘号、网卡物理地址以及加密狗等,这里指定的是机器的硬盘号,只有硬盘号为c61e85a时才可以使用。ModelSim不像有些EDA软件需要专门的管理工具来管理License,大多数EDA软件是需要管理工具来管理的,如PADS、ActiveHDL等等,这些软件安装时会有安装License Server的选项,管理工具可以在控制面板里的FLEXlm License Manager进行设置。对于ModelSim只需要在环境变量里指明license文件的位置即可,运行ModelSim LicenseWizard可以自动设置环境变量,若需要手动设置,在Win95/98下在autoexec.bat中

加入如下一行:SET LM_LICENSE_FILE=c:\flexlm\license.dat,如果在一台机器上安装了多个这种加密方式的EDA软件,可以用分号隔开多个license文件,如:

SET LM_LICENSE_FILE=c:\flexlm\license1.dat ; d:\altera\license2.dat

在Win2000和NT操作系统下,直接在系统环境变量中设定这些参数。具体方法是在我的电脑上点击右键,选择属性,点击高级,点击环境变量,再新建一个变量,变量名为LM_LICENSE_FILE ,变量值为license文件的存放地址。

在使用由Flexlm加密的EDA文件时,不要随意更改系统时间,因为Flexlm加密系统会监测系统文件的时间。

另外ModelSim的版本很多,基本的有PE、LE、SE版本,PE为个人版本,功能最少,支持的操作系统为32位WINDOWS 98/NT/ME/2000/XP;LE版本支持的操作系统为32位LINUX;SE版本为全功能版本,支持32位操作系统AIX, HP-UX, LINUX + SOLARIS,WINDOWS 98/NT/ME/2000/XP,64位操作系统AIX, LINUX (ITANIUM-2), HP-UX, SOLARIS,以及HP-UX, LINUX等平台。

8.2 菜单和工具栏介绍

这里以ModelSimXEII5.7c为例来说明,本节说明ModelSim的菜单和工具栏,读者有一个初步的了解就可以了。可以通过点击开始->程序->ModelSim XEII5.7c->ModelSim或点击桌面上的快捷方式来运行该软件,出现的界面如图8-2-1所示。在图的最上端为标题栏;下面一行为菜单栏;再下面为工具栏;左半部分为工作区(Workspace),在其中可以通过双击查看当前的工程及对库进行管理;右半部分为命令窗口区,在其中出现的命令行及提示信息称为脚本(Transcript);最下面一行为状态栏。这里要注意的是,有些操作是无法通过菜单和工具栏来完成的,学习ModelSim一定要学会使用命令行方式来操作,常用的命令并不多,不是很难掌握,在后续章节将介绍仿真中的一些常见命令。因此,本节内容读者略读一下就可以了,实际试一下会更好。

图8-2-1 ModelSim界面

8.2.1标题栏

与一般的Windows窗口相同,界面的最上一行为标题栏,显示当前的应用程序的名称,通过点击标题栏的图标(或Alt键+SpaceBar空格键)可以对窗口进行诸如改变窗口大小、移动窗口位置、关闭窗口之类的操作,这些与Windows完全相同。

8.2.2 菜单栏

标题栏下方为菜单栏。菜单栏有八个菜单项,分别是:File(文件)、Edit(编辑)、View (视图)、Compile(编译)、Simulate(仿真)、Tools(工具)、Window(窗口)、Help(帮助)。下面分别罗列其具体选项。

1. File(文件)菜单

文件菜单通常包含了对工程及文件等的操作。ModelSim的文件菜单包含的命令有:

New(新建),Open(打开),Close(关闭),Import(导入),Save(保存),Delete(删除),Change Directory(更改路径),Transcript(对脚本进行管理),Add to Project(为工程添加文件),Recent Directories(最近几次的工作路径),Recen Projects(最近几次工程),Quit (退出)。

(1) 新建文件命令(File/ New)

单击File/ New命令,将会出现一个子菜单,共包含四个选项:单击Floder(新建文件夹)后,会出现对话框,提示输入新建的文件夹的名字,即可在当前目录下新建一个文件夹;单击Source(新建源文件)后,会出现源文件类型的选项(VHDL,Verilog,Other),点击可分别新建对应格式的源文件;单击Project(新建工程)后,会出现对话框,提示在Project Name处输入新建工程的名称,在Project Location处指定新建工程的存放路径,在Default Library Name处指明默认的设计库的名称,用户设计的文件将编译到该库中;单击Library(新建一个库)后,会出现对话框,提示选择Creat a New library and a logical mapping to it(新建一个库并建立一个逻辑映象)或A map to an existing library(新建一个到已存在库的映象),在Lirary name处输入新建库的名称,在Library phycial name处输入存放库的文件名称。

(2) Open(打开文件)

单击会出现子菜单选择打开File(文件)、Project(工程)及Dataset(WLF文件)。

(3) Close(关闭)

单击会出现子菜单选择关闭Project(工程)或Dataset(仿真数据文件)。

(4) Import(导入)

导入新的库,在进行某些仿真时需要的一些库可以通过该方法导入,根据提示指定源库路径及目标库路径,一步步操作完成。注意ModelSim安装目录下的modelsim.ini文件不能为只读。在该文件中保存了ModelSim的一些设置信息,后续章节将详细讨论该文件的内容及其含义。

(5) Save(保存)

保存当前仿真数据。

(6) Delete(删除)

删除指定的工程,即删除.mpf文件,mpf是ModelSim工程的后缀名。

(7) Change Directory(改变路径)

改变当前工作路径,ModelSim使用的是绝对路径,而不是相对路径,这与ISE不同,在ISE中,你可以将你的设计整个目录拷贝到其他任何地方,只要目录完整,你可以直接打开工程文件。而在ModelSim中,若将整个目录拷贝到其他地方,打开工程时其指向仍为原来工程的地址,可以通过更改路径来设置新的路径。

(8) Transcript(脚本)

单击会出现子菜单选择操作Save Transcript(保存主窗口中脚本)、Save Transcript As (把主窗口中脚本另存为一个新文件)或Clear Transcript(清除主窗口中的脚本)。

(9) Add to Project(添加到工程)

单击会出现子菜单选择操作File(添加文件到当前工程)、Simulation Configuration(添

加设定的仿真配置)或Folder(添加文件夹)。

(10) Recent Directories(最近几次工作路径)

可以从中选取最近几次的工作路径。

(11) Recen Projects(最近几次工程)

可以打开最近几次的工程。

(12) Quit(退出)

退出 Model Sim.

2. Edit(编辑)菜单

类似于Windows应用程序,在编辑菜单中包含了对文本的一些常用的操作。

(1) Copy(复制)

复制选中的文档

(2) Paste(粘贴)

把剪切或复制的文档粘贴到当前插入点之前。

(3) Select All(全选)

选中主窗口中所有的抄本文档。

(4) Unselect All(取消全选)

取消已选文本的选中状态。

(5) Find(查找)

在命令窗口中查找字符或字符串。

3. View(视图)菜单

类似于其他Windows应用程序,视图菜单可以控制在屏幕上显示哪些窗口。

(1) All Windows(所有窗口)

打开所有的Model Sim窗口,你试一下该命令会发现ModelSim打开了许多窗口,包括波形窗口、信号列表窗口、源文件窗口等等。

(2) Dataflow(数据流)

打开Dataflow窗口,在该窗口中显示数据的流向。

(3) List(列表)

打开列表窗口。

(4) Process(进程)

打开过程窗口,该窗口显示了设计中的进程所在的位置。

(5) Signals(信号)

打开信号窗口。该窗口显示了设计中所有信号的列表

(6) Source(源文件)

打开源文件窗口,可以在源文件窗口中显示设计中使用的源文件。

(7) Structure(结构)

打开结构窗口,该窗口以列表方式显示了设计中所有到的结构,双击某一结构,可以

查找定义该结构的语句。

(8) Variables(变量)

打开变量窗口,该窗口以列表方式显示了设计中定义的所有变量。

(9) Wave(波形)

打开波形窗口,这是我们仿真时经常需要查看的窗口,在其中显示了输入和输出的波形。

(10) Datasets

打开Dataset浏览器来打开、关闭、重命名或激活一个Dataset。你在使用的时候会发现没有什么变化,这时候你可以看看Workspace窗口下是不是多了一个选项卡。该选项卡显示的内容与Structure窗口显示的完全相同。

(11) Coverage(覆盖率)

查看仿真的代码覆盖率。

(12) Active Processes(活动的进程)

当前正在执行的进程。

(13) workspace(工作区)

打开当前的工作区。

(14) Encoding(编码)

以不同的编码查看。

(15) Properties

显示工作区中选中对象的属性。

4. Compile(编译)菜单

(1) Compile(编译)

把HDL源文件编译到当前工程的工作库中。

(2) Compile Options(编译选项)

设置VHDL和Verilog编译选项,例如可以选择编译时采用的语法标准等。

(3) Compile All(全编译)

编译当前工程中的所有文件。

(4) Compile Select(编译选中的文件)

编译当前工程中的选中文件。

(5) Compile Order(编译顺序)

设置编译顺序,一般系统会根据设计对VHDL自动生成编译顺序,但对于Verilog需要指定编译顺序。

(6) Compile Report(编译报告)

有关工程中已选文件的编译报告。

(7) Compile Summary(编译摘要)

有关工程中所有文件的编译报告。

5. Simulate(仿真)菜单

这里的编译及运行命令类似于VC等高级语言的调试时候的命令。

(1) Simulate(仿真)

装载设计单元。

(2) Simulation Options(仿真选项)

设置仿真选项。

(3) Run(运行)

Run ***ns:在该仿真时间长度内进行仿真。若要改变长度,可在Simulation Options中设置或在工具栏中修改;

Run-All(运行所有仿真):进行仿真,直到用户停止它;

Continue(继续):继续仿真;

Run-Next(运行到下一事件):运行到下一个事件发生为止;

Step(单步):单步仿真;

Step-Over:仿真至子程序结束;

Restrat:重新开始仿真,重新加载设计模块,并初始化仿真时间为零。

(4) Break(停止)

停止当前的仿真。

(5) End Simulation(结束仿真)

结束当前仿真。

6. Tool(工具)菜单

(1) Waveform Compare(波形比较)

在子菜单中有具体进行波形比较的命令。

(2) Coverage(覆盖率)

测试仿真的代码覆盖率,所谓代码覆盖率是指仿真运行到当前已运行的代码占所有代码的比例,当然是越接近100%越好。

(3) Breakpoints(断点设置)

单击此选项出现断点设置对话框,设置断点。

(4) Execute Macro(执行宏文件)

所谓的宏文件就是保存后的脚本,脚本保存起来,以后可以利用该命令来重新执行。

(5) Options(选项)

Transcript File:设置脚本文件的保存。

Command History:命令历史。

Save File:保存脚本文件。

Saved Lines:限制脚本文件的行数。

Line Prefix:设置每一行的初始前缀。

Update Rate:设置状态条的刷新频率。

ModelSim Prompt:改变ModelSim的命令提示符。VSIM Prompt: 改变VSIM的命令提示符。Paused Prompt: 改变Paused的命令提示符。HTML Viewer:设置打开在线帮助的文件。

(6) Edit Preferences(编辑参数选取):

设置编辑参数。

(7) Save Preferences(保存参数选取):

设置保存用的参数。

7. Window (窗口)菜单:

(1) Initial Layout(初始化版面)

恢复所有窗口到初始时的大小和位置。

(2) Cascade(层叠)

使所有打开的窗口层叠。

(3) Tile Horizontally(水平平铺)

水平分隔屏幕,显示所用打开的窗口。

(4) Tile Vertically(垂直平铺)

垂直分隔屏幕,显示所用打开的窗口。

(5) Layout Style(版面格式)

Default(默认格式):与Initial Layout格式相同;Classic(经典格式):采样低于5.5版本的格式;Cascade:与Cascade格式相同;Horizontally:与Tile Horizontally格式相同;Vertically:与Tile Vertically格式相同。

(6) Icon Children

除了主窗口之外的其他窗口缩为图标。

(7) Icon All

将所有窗口缩为图标。

(8) Deicon All

将所用缩为图标的窗口还原。

8. Help(帮助)菜单

(1) About ModelSim

显示ModelSim的版本、版权等信息。

(2) Release Notes

显示ModelSim的版本发布信息。

(3) Welocme Menu

显示欢迎画面。

(4) PDF Documentation

在子菜单中可以选择ModelSim的PDF文档。

SE HTML Documentation:ModelSim的超文本文档。

(5) Tcl Help:Tcl帮助文档。

Tcl是Tools Command Language的缩写, 它是一种可扩充的命令解释语言,具有与C 语言的接口和命令的能力,应用非常广泛,这方面也有专门的书籍。.

(6) Tcl Man Pages:Tcl主页面。

(7) Technotes:技术文档。

8.2.3工具栏

ModelSim的工具栏如图8-2-2所示。从左到右依次为:打开、复制、粘贴、如何更新ModelSim、编译选定、编译全部、仿真、停止仿真、重新开始仿真、仿真步长、运行一步、继续运行、运行所有、单步执行、主程序的单步执行。

图8-2-2 ModelSim的工具栏

8.2.4 状态栏

ModelSim的状态条如图8-2-3所示,其中Project后面为当前工程的名称,Now后面为当前仿真时间。最右边的为选定的仿真结构中变量。

图8-2-3 ModelSim的状态栏

8.3 从一个例子开始学习ModelSim

前面两节简要介绍了有关ModelSim的安装以及用户界面的功能,初学者可能会觉得又很多名词看不懂,这一节我们来从一个简单的例子学习ModelSim的简单的使用。学完本节你会发现ModelSim不仅好用,而且易用。

这一节我们使用的例子是一个分频电路的设计。所谓分频电路是将较高频率的时钟分频,得到较低频率的时钟,分频电路的使用较为广泛,例如,我们要编写一个显示时间的电路就需要一个分频器,将晶振的频率分频得到1Hz的时钟信号。分频有几种方法,对于较为规则的分频,如2分频、4分频、8分频等可以调用ISE本身的库函数来实现,对于较不规则的分频,我们也有两种方法,一种是利用计数器的某一位来作为分频输出,一种是

计数器计数到某一数值时,分频时钟信号翻转来实现分频。两种方法的可以从其仿真结果得到。之所以选择这个例子,是因为这里例子有实用价值并且设计本身简单,仿真也较为简单。好了,下面我们开始我们的设计。

8.3.1 图形界面对设计进行仿真

考虑到初学者,这里的讲述较为详细,初学者可以按照如下步骤开始:

1、运行ModelSim,方法是点击开始->程序->ModelSim XE II 5.7c->ModelSim或

双击桌面上的快捷方式,会出现如图8-3-1所示的界面,如果上一次使用

ModelSim建立过工程,这时候会自动打开上一次所建立的工程;

图8-3-1 ModelSim开始界面

2、点击File->New->Project,会出现如图8-3-2所示的界面,在Project Name中

我们输入建立的工程名字为DivClkSimu,在Project Location中输入工程保存

的路径为D:/yuProj/modelsim/DivClk,注意ModelSim不能为一个工程自动建

立一个目录,这里我们最好是自己在Project Location中输入路径来为工程建

立目录,在Default Library Name中为我们的设计编译到哪一个库中,这里我

们使用默认值,这样,在我们编译设计文件后,在Workspace窗口的Library

中就会出现work库。这里我们输入完以后,点击OK;

图8.3.2 新建工程窗口

3、这时有对话框如同8-3-3所示,提示我们给定的工程路径不存在,是否建立该

路径,我们的目的就是为工程建立一个新目录,因此,点击确定;

图8-3-3 确认建立新的工程目录

4、这时候出现如同8-3-4所示的界面,可以点击不同的图标来为工程添加不同的

项目,点击Create New File可以为工程添加新建的文件,点击Add Existing File

为工程添加已经存在的文件,点击Create Simulation为工程添加仿真,点击

Create New Folder可以为工程添加新的目录。这里我们点击Create New File;

图8-3-4 为工程添加项目

5、出现界面如图8-3-5所示,我们在File Name中输入DivClkHDL作为文件的

名称,Add file as type为输入文件的类型为VHDL、Verilog、TCL或text,这

里我们使用默认设置VHDL,Folder为新建的文件所在的路径,Top Level为

在我们刚才所设定的工程路径下。点击OK;并在Add items to the Project窗

口点击Close关闭该窗口;

图8-3-5 为工程添加新文件

6、这时候在Workspace窗口中出现了Project选项卡,在其中有DivClkHDL.vhd,

其状态栏有一个问号,表示未编译,我们双击该文件,这时候出现窗口

edit-DivClkHDL.vhd的编辑窗口,在其中我们输入我们的设计文件如下:library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity divclk1 is

Port ( clk : in std_logic;

divclk : out std_logic);

end divclk1;

architecture Behavioral of divclk1 is

signal counter : std_logic_vector(4 downto 0):="00000";

signal tempdivclk: std_logic:='0';

begin

process(clk)

begin

if clk'event and clk='1' then

then

if(counter>="11000")

counter<="00000";

tempdivclk;

tempdivclk<=not

else

counter<=counter+'1';

if;

end

end if;

end process;

divclk<=tempdivclk;

end Behavioral;

7、点击File->Save,并退出该窗口(File->Close);

8、在WorkSpace窗口的DivClkHDL.vhd上点击右键,选择Compile->Compile

All,如同8-3-6所示;

图8-3-6 编译设计中的文件

9、在脚本窗口中将出现一行绿色字体Compile of DivClkHDL.vhd was

successful.,说明文件编译成功,在该文件的状态栏后有一绿色的对号,表示

编译成功;

10、下面我们开始仿真,点击菜单Simulate->Simulate,会出现如同8-3-7所示的

界面,我们展开Design选项卡下的work库,并选中其中的behavioral,这是

在Simulate中出现了work.divclk1(behavioral)表示我们所要仿真的对象,

Resolution为仿真的时间精度,这里我们使用默认值,点击OK;

图8-3-7 选择仿真对象

11、为了观察波形窗口,我们点击菜单View->Wave;

12、这时候出现的Wave窗口为空,里面什么都没有,我们要为该窗口添加我们

需要观察的对象,首先在主窗口而不是波形窗口中点击View->Signals打开信

号列表窗口如图8-3-8所示,在改窗口中点击Add->Wave->Signals in Design,

这时候在波形窗口中就可以看到这些信号了;

图8-3-8 信号列表窗口

13、下面我们就开始仿真了,在主窗口中输入命令对信号进行驱动,首先我们为

时钟信号输入驱动:force clk 0 0 ,1 10000 -r 20000其中force为命令,clk表

示为clk信号驱动,0 0表示在零时刻该值为0,1 10000表示在10ns处值为1,

-r 20000表示从20ns处开始重复(repeat),可以看出我们这里的输入时钟为

50MHz,即周期为20ns;

14、以十进制查看counter信号波形,在波形窗口中,右键点击counter信号,点

击Radix->Decimal,该信号的值就以十进制显示了;

15、开始仿真,在主窗口中输入run 3us,表示运行仿真3微秒,这时候如果你的

机器配置较低那就要等几分钟时间了,这时候你可以看看CPU的利用率一直

为100%,仿真是比较占资源,并且以后对波形的操作机器反应也很慢,如

果仿真很慢你可以看看状态栏的当前仿真时间是多少;

16、这时候点击按钮(在当前波形窗口中显示所有波形),点击可以在波形

窗口添加竖线,点击可以调整选定竖线在选定信号的变化处,调整完毕,

我们可以在波形窗口看到如图8-3-9所示的窗口,可以看到分频得到的时钟占

空比为1(即一个周期内容为1时间等于波形为0的时间),分频后周期为1us;

图8-3-9 仿真波形窗口

17、退出仿真,在主窗口中点击Simulate->End Simulation,会出现对话框,提示

我们是否确认退出仿真,我们点击是退出仿真;

18、仿真结果分析,这里我们的输入时钟为50MHz,周期为20ns,通过分频语句

得到频率为1MHz,周期为1us的时钟,使用时可以调整分频语句

if(counter>="11000") then中的值及位宽来调整分频后的时钟频率。设我们需

要从周期为T(ns)的时钟得到周期为X(ns)的脉冲,可以用如下的方法计

算出此处应有的值: ((X/T)/2)-1,例如此处我们要从周期为20ns的时钟得到

周期为1000ns(1us)的脉冲,((X/T)/2)-1=((1000/20)/2-1)=24=(11000)Bin因

此可以得到该式中的值。

8.3.2 使用命令行方式对设计进行仿真

在这一小节里我们主要通过在主窗口中输入命令行来进行仿真,并不是所有的操作都是用命令行方式来实现的。我们所设计的例子是另外一种分频方式,即使用计数器的某一位作为分频得到的时钟。我们可以按照如下步骤来实现。

1、新建工程DivClk2Proj,打开ModelSim,点击File->New->Project,在工程名

中输入DivClk2Proj,在工程保存路径中输入D:/yuProj/modelsim/DivClk2,点

击OK,并在随后出现的对话框中点击确定来确认建立该目录;

2、在随后出现的Add items to the Project窗口中,点击Creat New File,出现Create

Project File窗口,我们点击Browse找到我们刚刚建立的文件夹,并输入文件

名,之后,在File Name框中应为D:/yuProj/modelsim/DivClk2/DivClk2HDL,

选择Add file as type为VHDL,Folder为Top Level,点击OK,并点击Add items

to the Project窗口中的Close来将其关闭;

3、在主窗口中双击Workspace窗口中DivClk2HDL.vhd,出现编辑窗口,在窗口

中输入如下代码:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity divclk1 is

Port ( clk : in std_logic:='0';

divclk : out std_logic);

end divclk1;

architecture Behavioral of divclk1 is

signal counter : std_logic_vector(5 downto 0):="000000";

begin

process(clk)

begin

if clk'event and clk='1' then

then

if(counter>="110001")

counter<="000000";

else

counter<=counter+'1';

if;

end

if;

end

end

process;

divclk<=counter(5);

end Behavioral;

4、保存该文件并编译,方法同8.3.1,在该文件上点击右键选择Compile

->Compile All;

5、运行仿真,在主窗口输入命令:vsim work.divclk1,注意此处的divclk1表示

设计中的实体名;

6、以下的仿真同8.3.1节,为时钟信号添加驱动,输入命令:force clk 0 0,1 10000

-r 20000,将仿真时钟设为50MHz;

7、打开波形窗口,输入命令:view wave,这时会看到空的波形窗口已经打开;

8、为波形窗口添加信号,输入命令:add wave -hex *,这里的*表示添加设计中

所有的信号,-hex表示以十六进制来表示波形窗口中的信号值;

9、开始仿真,输入命令,run 3us,这时候在波形窗口中出现仿真波形,调整窗

口大小,并添加鼠标线,得到如图8-3-10所示的波形窗口;

图8-3-10 仿真波形

10、退出仿真,输入命令:quit –sim。

11、仿真结果分析,这里我们的输入时钟为50MHz,周期为20ns,分频得到的时

钟周期为1us,占空比不为1。使用时可以调整分频语句if(counter>="110001")

then中的值及位宽来调整分频后的时钟频率。设我们需要从周期为T(ns)

的时钟得到周期为X(ns)的脉冲,可以用如下的方法计算出此处应有的值:

(X/T)-1,例如此处我们要从周期为20ns的时钟得到周期为1000ns(1us)的

脉冲,(X/T)-1=(1000/20)-1)=49=(110001)Bin因此可以得到该式中的值。8.4 使用Testbench和TEXTIO对设计进行仿真

在上一节中,我们对使用ModelSim进行设计仿真有了一定的认识,这一节我们使用较为高级的仿真方式:TestBench和TEXTIO来进行设计仿真。TestBench可以理解为一个

平台,该平台包含待仿真的模块,具体一点是TestBench为一个电路板,在该电路板中包含了我们设计的用HDL语言描述的电路,这块电路板与外界没有任何的接口,其功能仅仅是仿真测试我们设计电路,我们可将设计的电路中的端口的信号描绘出来,进行仿真分析。也许看到这里你还是不很明白,这不要紧,看完后面一个例子就很清楚了。TEXTIO是VHDL 标准库STD中的一个程序包(Package),它提供了VHDL与磁盘文件直接访问的桥梁,我们可以利用它来读取或写入仿真数据到磁盘中的文件,TEXTIO的使用是通过TestBench 来进行的,即我们在TestBench中可以调用TEXTIO进行仿真,下面我们就介绍两者的使用。

8.4.1 使用TestBench对设计进行仿真

这里我们先看一个例子,我们的设计同上一节,即设计一个分频模块,其源代码如8.3.2节所述。这里我们为其编写一个TestBench,代码如下:

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.numeric_std.ALL;

ENTITY divclk1_tb IS

END divclk1_tb;

ARCHITECTURE behavior OF divclk1_tb IS

COMPONENT divclk1

PORT(

clk : IN std_logic;

divclk : OUT std_logic

);

END COMPONENT;

SIGNAL clk : std_logic:='0';

SIGNAL divclk : std_logic;

BEGIN

uut: divclk1 PORT MAP(

clk => clk,

divclk => divclk

);

clk<= not clk after 10 ns;

END;

下面我开始在ModelSim中使用TestBench对设计进行仿真;

1、打开ModelSim,新建工程TestBenchTest;

2、将8.3.2节的分频模块设计文件添加到当前工程中,如果你不知道怎么添加,方法

ModelSim使用的一点心得体会

ModelSim使用的一点心得- - 1、至今还没有弄明白为什么要用ModelSim,因为看波形Quartus II自带的工具就可以了啊。 2、我刚刚接触modelsim,我想大多数菜鸟跟我一样,看过如何使用ModelSim的介绍,说句实话,那些介绍写的都太过简单,仿佛大家都不屑写上一些比较“弱智”的步骤,恰恰就是这些看似累赘的步走,难为我好久。 教程上都写道,modelsim的简单使用方法如下:建立库- 影射库到物理目录- 编译代码- 启动仿真。首先建立库就叫我头晕。库的概念用在这儿实在不合适,把我吓坏了,也就没心思看下一步了。在我看来,教程应该这么写: <1> 建立一个目录modelsimStudy。用任何文本编辑器编辑一个简单的例子程序,比如计数器counter.vhd。有clk、ena、reset输入,cnt作为输出。 <2> 打开Modelsim,首先create project,工程名随意取了,比如命名为test,目录设在modelsimStudy下,默认的库work不变(这样就不用管什么建立库之类的东西了)。然后add existing file,把counter.vhd加入当前工程。 <3> 编译这个文件,通过之后,work下面会出现counter这个实体。然后选中它,右键,simulate(左键双击也可)。 <4> ModelSim有很多窗口(新手就怕这个),一开始只要选择view下面的objects 和wave窗口就行了。旧版的signal窗口在6.0的版本改名为Objects(这个我是摸索了好久才发现的,是不是太笨了?)。wave窗口刚打开时是空的,需要在objects窗口的add -> wave -> signals in region。这时,wave上就有clk\ ena \ reset等信号了。 <5> 我们给clk来个输入激励,在object窗口中选中clk,右键选clock,给它定义个时钟。

modelsim完美教程

准备事项 1.ModelSim试用版下载 2.范例程序下载(史丹佛大学一门课的期末专题Implememtation of Viterbi Decoder:constrain length K=3, code rate R=1/2, register-exchange) 整个project共含7个Verilog程序:system.v (top-level) |-- clkgen.v |-- chip_core.v |-- controller.v |-- spu.v |-- acs4.v |-- acs1.v (或是另外一个Verilog的简单例子,可以从C:\ SynaptiCAD\ Examples\ TutorialFiles\ VeriLoggerBasicVerilo gSimulation\ add4.v and add4test.v) (或是另外一个VHDL的简单例子,可以从C:\ Modeltech_5.7e\ examples\ adder.vhd and testadder.vhd) ModelSim PE /LE /SE 差别在哪? 本篇文章内容主要在教导软件使用,以Verilog程序为范例。假设各位读者已经熟悉Verilog,废话不多说,让我们马上来见识一下ModelSim ... 快速上手四部曲:建立Project、引进HDL Files、Compile、模拟(Simulate/Loading and Run) 1.建立一个新的Project 1-1 第一次执行程序时,可以从[开始] \ [程序集] \ ModelSim SE \ ModelSim;或是执行ModelSim在桌面的快捷方式

ModelSim-Altera_6.5仿真入门教程

平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用ModelSim仿真的基本流程为: 图1.1 使用ModelSim仿真的基本流程 2 开始 2.1 新建工程 打开ModelSim后,其画面如图2.1所示。

图2.1 ModelSim画面 1. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图 2.2所示,此外还允许通过选择.ini文件来映射库设置,或者将其直接拷贝至工程中。

图2.2 创建工程的对话框 2. 按照图2.3所示,设置Project Name为LED_FLOW,Project Location为D:/led_flow。 图2.3 输入工程信息 当单击OK按钮后,在主体窗口的下方将出现Project标签,如图2.4所示。 图2.4 Project标签

3. 之后,将出现Add Items to the Project的对话框,如图2.5所示。 图2.5 在工程中,添加新项目 2.2 在工程中,添加新项目 在Add Items to the Project对话框中,包括以下选项: ?Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件?Add Existing File——添加一个已存在的文件 ?Create Simulation——创建指定源文件和仿真选项的仿真配置 ?Create New Folder——创建一个新的组织文件夹 1. 单击Create New File。打开图 2.6所示窗口。 图2.6 创建工程文件夹 2. 输入文件名称:LED_FLOW,然后选择文件类型为Verilog。

Quartus ii 10.0教程(包含modelsim仿真)

Quartus ii 10.0教程 说明 本文的部分章节,来源于本人翻译的Terasic DE2-115的英文入门文档。 平台 硬件:艾米电子EP2C8-2010增强版套件 软件:Quartus II 10.0 + ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 ?典型的CAD流程 ?开始 ?新建工程 ?录入Verilog设计 ?编译设计 ?引脚分配 ?仿真设计电路 ?编程及配置到FPGA器件 ?测试设计电路 典型的CAD流程 计算机辅助设计(CAD)软件,使得运用可编程逻辑器件实现所需逻辑电路,变得容易。比如现场可编程门阵列(FPGA)。典型的FPGA CAD设计流程如图1所示。

图1 典型的FPGA CAD设计流程 CAD流程包含以下步骤: ?设计输入——所需电路可通过原理图方式或硬件描述语言方式(如Verilog或VHDL)进行设计。 ?综合——输入的设计被综合进入由逻辑元素(LEs,FPGA芯片提供)组成的电路中。 ?功能仿真——综合电路被测试以验证其功能是否正确,次仿真不考虑时序因素。 ?布局布线——CAD Fitter工具决定网表中定义的LEs如何布置成FPGA芯片中的实际LEs。 ?时序分析——分析已布局布线电路中的不同路径的传播延迟,用以指示所需电路的性能。 ?时序仿真——测试已布局布线电路,验证其是否在功能和时序上都正确。 ?编程及配置——设计的电路,通过编程配置开关,被实现到一个物理的FPGA芯片。 配置开关用于配置LEs和建立所需线路连接。 本指南介绍Quartus II软件的基本特征。展示如何使用Verilog硬件描述语言来设计和实现电路。使用GUI来实现Quartus II指令。通过本份指南,读者将学习到: ?新建工程 ?使用Verilog代码录入设计 ?将综合的电路布局到Altera FPGA ?分配电路的输入输出到FPGA上的指定引脚 ?仿真设计电路 ?编程配置艾米电子EP2C8核心板上的FPGA芯片 1. 开始 在Quartus II中设计的每个逻辑电路或子电路,叫做一个工程。软件每次运行一个工程,并将所有信息保存在单一文件夹中。欲开始一个新的逻辑电路设计,第一步就是新建一个文件夹来保存文件。为了保存本指南的设计文件,在D盘新建introtutorial文件夹。指南者运行的范例为一个简单的双路灯控电路。 打开Quartus II软件,将看到类似于图2的画面。该显示画面包括若干窗口,用户可使用鼠标选择,以访问Quartus II软件的相关功能。Quartus II提供的大多数命令都可用菜单形式来访问。例如,在图2中,在File标签下点击左键,可打开如图3所示的菜单。用左键单击Exit可退出Quartus II软件。

ModelSim软件仿真步骤教程

使用ModelSim模擬驗證HDL code 1.在模擬前先準備好我們要模擬的電路檔案(Verilog HDL,TestBench,…) 2. 打開ModelSim,新建一個Project,鍵入Project name 按OK。此處我們的library name 為default library name “work”不必更改。 3.然後再加入我們所要模擬的電路檔案(若尚未準備,可開啟新檔案再將code 鍵入)選Add Existing File,將我們已編輯好的檔案加入。 將我們所需要的檔案加入,按Browse選擇我們所需檔案count.v,

count_test.vt),按下OK。 再將先前所開啟的增加檔案的視窗關閉,按close。 4.按下compile all。

Compile成功沒有顯示出錯誤訊息, 則開始模擬波形 5.按下Simulation, 選擇檔案所在的Library (work), 點選TestBench的Module Name t_Gap_finder 按OK 6.承接上步驟將會跳出以下視窗,若要將所有訊號加入波型中觀察則選擇在 testbench的module name: count_tst按滑鼠右鍵選擇→ Add → Add to Wave。

7.在波型畫面按下Run All開始模擬 跑完後會跳出下面視窗選擇否則可觀察模擬波形,若按下是則會將ModelSim關閉。

8.觀察波形圖是否與功能符合,若與設計不符則修改設計並重複執行Step 4到 Step 8 Testbench語法 `timescale 1 ps/ 1 ps 前面的1ps代表程式中最小的時間單位 後面的1ps代表運算的精準度

QUARTUSⅡ10波形仿真(ModelSim)入门教程

QUARTUSⅡ10仿真(ModelSim)入门教程平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用ModelSim仿真的基本流程为: 图1.1 使用ModelSim仿真的基本流程 2 开始 2.1 新建工程 打开ModelSim后,其画面如图2.1所示。 图2.1 ModelSim画面

1. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图 2. 2所示,此外还允许通过选择.ini文件来映射库设置,或者将其直接拷贝至工程中。 图2.2 创建工程的对话框 2. 按照图2.3所示,设置Project Name为LED_FLOW,Project Location为D:/led_flow。 图2.3 输入工程信息 当单击OK按钮后,在主体窗口的下方将出现Create Project标签,如图2.4所示。 图2.4 Project标签 3. 之后,将出现Add Items to the Project的对话框,如图2.5所示。 图2.5 在工程中,添加新项目 2.2 在工程中,添加新项目 在Add Items to the Project对话框中,包括以下选项:

?Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件 ?Add Existing File——添加一个已存在的文件 ?Create Simulation——创建指定源文件和仿真选项的仿真配置 ?Create New Folder——创建一个新的组织文件夹 1. 单击Create New File。打开图 2.6所示窗口。 图2.6 创建工程文件夹 2. 输入文件名称:LED_FLOW,然后选择文件类型为Verilog。 图2.7 输入工程文件信息 3. 单击OK,关闭本对话框。新的工程文件将会在工程窗口显示。单击Close,以关闭Add Items to the Project。 图2.8 新的设计文件LED_FLOW.v 4. 双击打开LED_FLOW.v文件(注意:若是Verilog文件已经关联了其他的文本编辑器,则双击后在关联的文本编辑器中打开)。 图2.9 LED_FLOW代码输入窗口 在LED_FLOW.v输入下面的测试平台代码:

modelsim新手入门仿真教程

Modelsim新手入门仿真教程 1.打开modelsim软件,新建一个library。 2.library命名 3.新建一个工程。

3.出现下面界面,点击close。 4.新建一个verilog文件 键入主程序。下面以二分之一分频器为例。

文件代码: module half_clk(reset,clk_in,clk_out); input clk_in,reset; output clk_out; reg clk_out; always@(negedge clk_in) begin if(!reset) clk_out=0; else clk_out=~clk_out; end endmodule 编辑完成后,点击保存。

文件名要与module后面的名称相同。 5.再新建一个测试文件,步骤同上面新建的主程序文件,文件名后缀改为.vt 程序代码如下: `timescale 1ns/100ps `define clk_cycle 50 module top; reg clk,reset; wire clk_out; always #`clk_cycle clk=~clk; initial

begin clk=0; reset=1; #10 reset=0; #110 reset=1; #100000 $stop; end half_clk m0( .reset(reset), .clk_in(clk), .clk_out(clk_out)); Endmodule 6.添加文件,编译文件 先右键点击左边空白处,选择add to project→existing File 选择刚刚新建的两个文件。按ctrl键可以同时选择两个,选择打开,下一步点击ok

ModelSim新手使用手册

ModelSim最基本的操作,初次使用ModelSim的同学,可以看看,相互学习。 无论学哪种语言,我都希望有个IDE来帮助我创建一个工程,管理工程里的文件,能够检查我编写代码的语法错误,能够编译运行出现结果,看看和预期的结果有没有出入,对于Verilog语言,我用过Altera的Quartus II,Xilinx的ISE,还有ModelSim(我用的是Altera 官网的ModelSim_Altera),甚至MAXPlus II,不过感觉这软件太老了,建议还是前三者吧。 学Verilog,找一本好书很重要,参考网友的建议,我也买了一本夏宇闻老师的《Verilog 数字系统设计教程》,用Quartus II来编写代码,个人觉得它的界面比ISE和ModelSim友好,我一般用它编写代码综合后自动生成testbench,然后可以直接调用ModelSim仿真,真的很方便,但学着学着,发现夏老师书里的例子很多都是不可综合的,比如那些系统命令,导致很多现象都发现不了,偶然间我直接打开了ModelSim,打开了软件自带的英文文档,步骤是:Help ->PDF Documentation->Tutorial如下所示: 打开文档的一部分目录: 往下读发现其实ModelSim可以直接创建工程,并仿真的。下面以奇偶校验为例叙述其使用过程(当然前提是你在Altera官网下载了ModelSim并正确安装了)。 1.打开软件,新建一个工程,并保存到自定义的目录中(最好别含中文路径) 2.点击Project,弹出窗口问是否关闭当前工程,点击Yes,接着又弹出如下窗口

我个人的习惯是把Project Name和Default Library Name写成一样,自己定义Project Location。又弹出如下窗口: 3.点击Close(我的版本不能Create New File,其实新建好了工程一样可以新建.v文件),然后点击屏幕下方的Project标签: 如果一开始不是如上图所示的界面,那么可以点击如下图所示红色标记的按键变成上图界面:

modelsim-SE-win64-10.1c下载、安装、破解全攻略

本教程包括软件下载、破解文件下载、安装破解方法,助你一次成功。软件安装好了却不能用,想必大家都有过这样的痛苦和无奈。这款软件的破解花了我整整一个下午的时间,期间在网上找了各种方法尝试均以失败告终,差点让我放弃破解而着手去换操作系统。网上的方法多存在着疏漏和差错,所以这也是我写次教程的初衷,希望能帮到大家,少走弯路。本人使用系统声明:win8 64 位专业版过程如下: 1 运行modelsim-win64-10.1c-se.exe,安装软件;软件下载链接:https://www.360docs.net/doc/be12201915.html,/s/1mgoL67e 破解文件下载:https://www.360docs.net/doc/be12201915.html,/s/1c0zlrRa(好请点赞,多谢支持)注意事项:安装路径可自行设置,但不要出现汉字,(本例:D:\modeltech64_10.1c) 2 安装过程中一直选择yes 即可,最后reboot(重启)询问选Yes、No 似乎都可以,我在安装的过程中选择的是No,即我没有重启系统; 3 将解压的破解文件(MentorKG.exe 和patch_dll.bat)复制到安装目录下的win6 4 文件夹中。(本例:D:\modeltech64_10.1c\win64 文件夹中); 4 进入安装目录下的win64 文件夹找到mgls.dll mgls64.dll 两个文件,去掉只读属性; 5 运行patch_dll.bat,稍等一段时间后即可生成一个TXT 文本,将其另存为LICENSE.TXT,另存路径选择你安装目录的win64 文件夹下;(本例:D:\modeltech64_10.1c\win64 文件夹中) 6 恢复mgls.dll 和mgls64.dll 两个文件的只读属性; 7 环境变量设置:win8 中是这样的这台电脑》右键选择【属性】》【高级系统设置】》【环境变量】点击【新建】打开编辑对话框,【变量名】命名为MGLS_LICENSE_FILE ,【变量值】为你LICENSE.TXT 的文件路径,(本例变量值D:\modeltech64_10.1c\win64\LICENSE.TXT)在win8 环境变量页面有用户变量和系统变量两个环境变量,我是选择两个都设置了。破解完毕,祝你成功!

modelsim详细使用教程(一看就会)

Modelsim详细使用方法 很多的modelsim教程中都讲得很丰富,但忽视了对整个仿真过程的清晰解读,而且都是拿counter范例举例子,有些小白就不会迁移了。这里我们着眼于能顺利的跑通一个自己写的程序,一步一步的讲解,如果你是一个初学者,这再适合你不过了,虽然貌似字写得比较多,那是因为写得相当的详细,一看就会啦O(∩_∩)O~ 一、建立工程 1、在建立工程(project)前,先建立一个工作库(library),一般将这个library命名为 work。尤其是第一次运行modelsim时,是没有这个“work”的。但我们的project 一般都是在这个work下面工作的,所以有必要先建立这个work。 File→new→library 点击library后会弹出一个对话框,问是否要创建work,点击OK。就能看见work.

2、如果在library中有work,就不必执行上一步骤了,直接新建工程。 File→new→project 会弹出 在Project Name中写入工程的名字,这里我们写一个二分频器,所以命名half_clk,然后点击OK。 会出现

由于我们是要仿一个自己写的程序,所以这里我们选择Create New File。 在File Name中写入文件名(这里的file name和刚刚建立的project name可以一致也可以不一致)。注意Add file as type 要选择成Verilog(默认的是VHDL),然后OK。 发现屏幕中间的那个对话框没有自己消失,我们需要手动关闭它,点close。 并且在project中出现了一个half_clk.V的文件,这个就是我们刚刚新建的那个file。 这样工程就建立完毕了。 二、写代码: 1、写主程序:双击half_clk.v文件会出现程序编辑区,在这个区间里写好自己 的程序,这里我们写一个简单的二分频的代码: module half_clk_dai( clk_in, rst, clk_out ); input clk_in; input rst;

modelsim使用教程6.0

Modelsim 6.0 使用教程 1. Modelsim简介 Modelsim仿真工具是Model公司开发的。它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。 对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。 2.安装 同许多其他软件一样,Modelsim SE同样需要合法的License,通常我们用Kengen产生license.dat。 ⑴.解压安装工具包开始安装,安装时选择Full product安装。当出现Install Hardware Security Key Driver时选择否。当出现Add Modelsim To Path选 择是。出现Modelsim License Wizard时选择Close。 ⑵.在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后 复制到该文件夹下。 ⑶.修改系统的环境变量。右键点击桌面我的电脑图标,属性->高级->环境变量-> (系统变量)新建。按下图所示内容填写,变量值内如果已经有别的路径了, 请用“;”将其与要填的路径分开。LM_LICENSE_FILE = c:\flexlm\license.dat

Modelsim的仿真教程

ModelSim的仿真 1.仿真的分类 仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。仿真主要分为功能仿真和时序仿真。功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。1). 功能仿真( 前仿真) 功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。布局布线以前的仿真都称作功能仿真,它包括综合前仿真(Pre-Synthesis Simulation )和综合后仿真(Post-Synthesis Simulation )。综合前仿真主要针对基于原理框图的设计; 综合后仿真既适合原理图设计, 也适合基于HDL 语言的设计。 2). 时序仿真(后仿真) 时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。 后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。其输入文件为从布局布线结果中抽象出来的门级网表、Testbench 和扩展名为SDO 或SDF 的标准时延文件。SDO 或SDF 的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。一般来说后仿真是必选的,检查设计时序与实际的FPGA 运行情况是否一致,确保设计的可靠性和稳定性。2.仿真的作用 1).设计出能工作的电路:因此功能仿真不是一个孤立的过程,其和综合、时序分析等形成一个反馈工作过程,只有这个过程收敛,各个环节才有意义。而孤立的功能仿真通过是没有意义的,如果在时序分析过程中发现时序不满足需要更改代码,则功能仿真必须从新进行。因此正确的工作流程是:

modelsim使用入门(VHDL_

modelsim使用实例(VHDL) 标签: modelsim仿真testbench FPGA 看了几天的modelsim以及如何在quartusII中调用,浏览了N个网页,尝试了N次,......终于初步完成。下面是入门部分介绍。 modelsim是专业的仿真软件,仿真运行速度比同类的其他仿真软件都要快很多。Quartus 自己都不再做仿真器了,普遍使用modelsim,自有其缘由。 这里用的是modelsim-altera(6.6d)版本,与quartus II 11.0搭配。据说Altera公司推出的Quartus软件不同版本对应不同的modelsim,相互之间不兼容。某些功能齐全的modelsim版本可以进行两种语言的混合编程, modelsim-altera只能支持一种语言进行编程(VHDL或者Verilog选其一)。 1、新建工程 打开modelsim-->file-->new-->project 新建工程,输入工程名,文件存放路径后(不可直接放在某盘下,必须放入文件夹中),进入下一步。 在主体窗口下方出现project标签。见下图。

2、新建文件 --create new file:输入名称div10,选择语言VHDL --关闭对话框 新的工程文件将会在工程窗口出现。 3、写入源程序(VHDL) 双击div10.vhd,打开文本编辑器。 实例代码如下(一个十分频的VHDL源代码):library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity div10 is --实体要与工程名相同 port(clk :in std_logic;

ModelSim 简明操作指南

第一章介绍 本指南是为ModelSim5.5f版本编写的,该版本运行于UNIX和Microsoft Windows 95/98/Me/NT/2000的操作系统环境中。本指南覆盖了VHDL和Verilog 模拟仿真,但是你在学习过程中会发现对于单纯的HDL设计工作而言,它是一个很有用的参考。ModelSim具备强大的模拟仿真功能,在设计、编译、仿真、测试、调试开发过程中,有一整套工具供你使用,而且操作起来极其灵活,可以通过菜单、快捷键和命令行的方式进行工作。ModelSim的窗口管理界面让用户使用起来很方面,它能很好的与操作系统环境协调工作。ModelSim的一个很显著的特点就是它具备命令行的操作方式,类似于一个shell有很多操作指令供你使用,给人的感觉就像是工作在Unix环境下,这种命令行操作方式是基于Tcl/Tk 的,其功能相当强大,这需要在以后的实际应用中慢慢体会。 ModelSim的功能侧重于编译、仿真,不能指定编译的器件,不具有编程下载能力。不象Synplify和MAX+PLUS II可以在编译前选择器件。而且ModelSim 在时序仿真时无法编辑输入波形,不象MAX+PLUS II可以自行设置输入波形,仿真后自动产生输出波形,而是需要在源文件中就确定输入,如编写测试台程序来完成初始化、模块输入的工作,或者通过外部宏文件提供激励。这样才可以看到仿真模块的时序波形图。另外对于Synplify来说,也只具有编译能力,但是比MAX+PLUS II可编译的verilog的内容要多,所以常常可以现在Synplify下编译,生成编译文件再送到MAX+PLUS II中使用。 ModelSim还具有分析代码的能力,可以看出不同的代码段消耗资源的情况,从而可以对代码进行改善,以提高其效率。 第二章ModelSim的主要结构ModelSim的主窗口(Main window)包括菜单栏、工具栏、工作区和命令行操作区。 在工作区可以显示Project Tab、Library Tab、Sim Tab(显示Load Design、Hierarchical Structure);在命令行操作区,可以用命令提示符的方式进行编译、仿真设计,同时打开其他窗口。 在菜单栏View下可以打开,source window、list window、wave window、

modelsim仿真教程

本教程使用软件的下载链接如下: https://www.360docs.net/doc/be12201915.html,/download/quartus_modelsim_setup.zip Molelsim仿真使用教程 ——利用quartus生成网表文件Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件,接下来以一个简单的例子介绍modelsim的基本使用方法。 第一步:建立工程,该过程与quartus使用的教程大部分是一样的,区别如下: 在simluation选项中选择MoselSim-Altera作为仿真工具,fomat中的选项根据编程语言进行选择,本教程以VHDL为例。 第三方的仿真工具 所以在此选择

第二步:新建文件: 新建一个源文件,保存为led.vhd library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity led is port(led_out : out std_logic_vector(7 downto 0); clk : in std_logic; rst_n : in std_logic ); end led; architecture behavior of led is signal light : std_logic_vector (7 downto 0); begin process(clk,rst_n) begin if(rst_n = '0')then light <= "00000010"; elsif(clk'event and clk ='1' )then if(light = "10000000") then light <= "00000001"; else light <= light(6 downto 0)& '0'; end if; end if; end process; led_out <= light; end behavior; 新建一个testbench 文件,保存为testbench.vhd(testbench是电路的激励文件,在后面章节会详细介绍,这里仅仅作为软件的演示不具体介绍testbench的设计过程): library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; entity testbench is end testbench; architecture behavior of testbench is

modelsim简单教程

ModelSim SE简明操作指南批处理模式仿真必须运行在DOS或UNIX提示符下。 1.生成一个新目录,设置成当前工作目录。拷贝..\examples\counter.vhd到该目录下。 2.生成一个新的设计库:vlib work 3.映射库:vmap work work 4.编译源文件:vcom counter.vhd 5.使用宏文件为计数器提供激励。拷贝..\example\stim.do文件到当前工作目录中。 6.生成批处理文件,内容为: add list –decimal * do stim.do write list counter.lst 7.执行下面的命令,运行批处理模式仿真: vsim –do yourfile –wlf saved.wlf counter "在名为“counter”的设计单元调用vsim仿真器 "通过-wlf这个可选项通知仿真器在名为saved.wlf的日志文件中保存仿真结果 "运行yourfile指定:值以十进制的方式列示出来;执行名为stim.do的激励;并将结果写到名为counter.lst的文件中。缺省的设计名为counter。 8.浏览仿真结果vsim –view saved.wlf 9.打开一些窗口view signals list wave 10.在窗口中放置信号add wave * add list * 11.运用Variables windows实验保存的仿真结果。完成了结束仿真: quit –f 有关批处理和命令行模式更多的信息,请参阅ModelSim User’s Manual。第七课Executing Commands at startup 本课与第六课所介绍的工作于相同的目录,也是以命令行方式操作。 1.这里将用到宏文件(DO)提供启动信息。拷贝..\examples\startup.do到当前工作目录。 2.拷贝modeltech目录下的modelsim.ini文件到当前工作目录。然后编辑该文件,指定一个在设计导入之后被执行的命令。用notepad打开ini文件,取消下属语句的注释,它位于文件的[vsim]部分:(修改后保存) Startup=do startup.do 3.浏览这个DO文件,可以发现它用了一个预定义变量$entity来为不同的设计在启动时作不同的事情。 4.键入以下指令指定将被仿真的顶级设计单元,开始仿真:vsim counter 注意到没有显示对话框仿真器就导入了设计单元。对于一再地仿真同一个设计单元,这样做是很便捷的。还可以注意到所有的窗口都打开了,这是因为命令view *包括在启动宏里面。 5.结束ModelSim,执行quit –f命令。 6.在其他例子中是不需要startup.do文件的,所以用文本编辑器注释掉modelsim.ini 文件中的Startup这一行。第八课Finding names and values Finding items by name in tree windows 你可以使用各个窗口(List,Process,Signal,Source,Structure,Variables,and Wave window)中的查找对话框找寻你需要的HDL条目。Edit\FindSearching for item values in the List and Wave windows

ModelsimSE仿真步骤(优选.)

WILDSC ModelsimSE仿真教程 Verilog & VHDL 孙玉阳 2014/6/3 对于ModelsimSE仿真设置网上很难找到详细教程,在此写一篇基于Verilog 和VHDL的ModelsimSE的仿真设置教程,以期缩短大家ModelsimSE学习时间,由于时间仓促,不足之处还请见谅。

目录 1 ModelsimSE仿真——Verilog HDL (2) 1.1 建立资源库 (2) 1.1.1 建立资源库的目的 (2) 1.1.2 建立资源库前准备 (2) 1.1.3 建立资源库的步骤 (3) 1.2 功能仿真 (11) 1.2.1 建立ModelsimSE工程 (11) 1.2.2 添加Quartus工程文件 (12) 1.2.3 编译 (14) 1.2.4 仿真 (18) 1.3 时序仿真 (21) 2 ModelsimSE仿真——VHDL (25) 2.1 建立资源库 (25) 2.1.1 建立资源库的目的 (25) 2.1.2 建立资源库前准备 (25) 2.1.3 建立资源库的步骤 (26) 2.2 功能仿真 (33) 2.2.1 建立ModelsimSE工程 (33) 2.2.2 添加Quartus工程文件 (34) 2.2.3 编译 (37) 2.2.4 仿真 (40) 2.3 时序仿真 (44)

1ModelsimSE仿真——Verilog HDL 1.1建立资源库 1.1.1建立资源库的目的 Quartus Verilog工程文件里面在使用Primitives、Megafunction、LPM等Quartus自带模块时,会调用Quartus本身自带的一些库文件,但是ModelsimSE在仿真Quartus Verilog工程文件时不会自动去调用Quartus的库文件,同时ModelsimSE也不自带与Primitives、Megafunction、LPM相关的库文件。所以在仿真Primitives、Megafunction、LPM等模块时,必须在ModelsimSE里建立与其对应的资源库,否则无法仿真。 1.1.2建立资源库前准备 (备注:若需要后仿真(时序仿真)则进行这一步骤,若只进行前仿真(功能仿真)则跳过此步骤): 打开待仿真的quartus工程,点击菜单Assignments->Settings,打开如下窗口 将以下红色部分设置好,先点击apply,然后点击OK即可

ModelSim简明使用教程

ModelSim6.1入门教程 因为本人在初学Verilog 编程语言时,觉得很难上手的是使用ModelSim ,所以今天和大家交流一下,好了,闲话不多说了,我们开始吧! 1,打开ModelSim 的画面如下: 标准的windows 界面,最上面是菜单栏,以及菜单栏的一些快捷方式。左边是工作空间,里面显示的是一些库文件。右边是编辑区,最下面是交互区,可以通过命令完成所有的操作。我们在此只讲一些基本的命令输入,以完成仿真。 2 ,建立工程,如图所示: 单击Project 之后,画面如下:菜单快捷栏 工作空间栏编辑栏 仿真交互栏

在图中Project Name中输入AND_2,这也是我们建立的第一个工程,路径选择如下图所示,默认库名我们用默认的work。 这一步完成之后,点击ok,如下图:

单击ok后,如下图: 其实应该没有右边的那个Creat Project File选择框,只有左边的Add items to the Project,呵呵,在此偷懒了。单击Add items to the Project中的Creat New File(如果你已经写好了代码,可以通过点击Add Existing Flie添加),如下图: 在File Name中输入AND_2,在Add file as type选项中选择Verilog,其他的使用默认即可。单击ok。

在工作空间中添加了名为AND_2的文件,如图。状态是“?”,说明没有通过编译。其实咱还没开始写代码呢!好了,现在开始正式写代码了。双击图中AND_2文件那一行的任何地方,就会打开右边的编辑区,和其他IDE工具一样,使用编辑器,输入如下代码:module AND_2(clk,rst,A,B,C); input clk,rst,A,B; output C; reg C; always@(posedge clk or negedge rst) if(!rst) C<=1'b0; else C<=A&B; Endmodule 输入完成后,单击保存。 注意:模块名和工程名一定要一样,否则编译不能通过。 3,编译,如下图: 右键单击图中AND_2文件那一行的任意地方,弹出选项如图所示,选择Compile选项的Compile All,如下图所示:

modelsim 10仿真教程

Modelsim仿真教程 一、前期准备 1、正确安装好modelsim和quartus软件。我用的平台的版本是Modelsim SE10.1 和Quartus II10.1。 2、在ModelSim中加入Quartus提供的仿真库 在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面: ·Quartus不支持Testbench; ·调用了megafunction或者lpm库之类的Altera的函数; ·时序仿真要在Modelsim下做仿真。 下面以Altera器件为例,介绍如何在ModelSim中加入Altera的仿真库,Quartus II 软件中自带有Altera的仿真库,只要把它拿到ModelSim中去编译一下就可以了,具体步骤如下: (1).设置仿真库路径 打开ModelSim安装目录(我用的是ModelSim SE10.1版本,安装在C:\modeltech_10.1 目录下),新建文件夹altera,我们就在该目录下存放预编译的各种Altera库。 启动ModelSim SE,在主窗口执行【File】/【Change Directory】命令将路径转到altera 文件夹。

(2).新建库 Quartus II中提供的仿真库文件存放的路径是....\altera\10.1sp1\quartus\eda\sim_lib,每个库文件提供了两种形式:.v(Verilog)格式和.vhd(VHDL)格式两种,根据你所用的语言选择使用。用于编译资源库的文件有220model.v,220model.vhd,220pack.vhd,altera_mf.v,altera_mf.vhd,altera_mf_components.vhd,altera_primitives.v,altera_primitives.vhd, altera_primitives_components.vhd文件。网上的很多教程都是把这些文件一起编译,这样适用于Verilog和VHDL混合仿真,但如果只用一种语言,如Verilog则完全没必要全部编译。下面以该目录下的altera_mf.v为例介绍建立预编译库的方法。 注:ModelSim中仿真库可以分为两大类:第一类是工作库(working),默认值为“work”目录,work目录中包含当前工程下所有被编译的设计单元,编译前必须建立一个work库,并且每个编译有且仅有一个work库;第二类是资源库(resource),存储能被当前编译引用的设计单元,在编译期间允许有多个resource库,这节所讲的都是添加altera资源库。 在主窗口中选择【File】/【New】/【Library】命令,新建一个名为altera_mf的库。 (3).编译库 方便起见在altera文件夹下新建目录src,把用于编译资源库的文件复制到src文件夹中。 在主菜单中选【Compile】/【Compile】命令,弹出Compile Source Files对话框,library 中选择你刚才建立的库名altera_mf,查找范围你选择altera_mf.v文件,刚才你已经把它复制到了...\altera\src目录下。执行编译命令。

相关文档
最新文档