ModelSim用户手册

ModelSim用户手册
ModelSim用户手册

MODEL SIM 5.4版

使用指南

世界上最流行的VHDL语言模拟器

ModelSim /VHDL, ModelSim /VLOG, ModelSim /LNL, 和ModelSim /PLUS是由Model Technology开发,未经授权不得拷贝,复制,没有Model Technology 公司的书面许可不得进行其他任何形式的复制。

本手册上对程序的描述是经过许可的,未经允许不得使用和拷贝。

最终用户可以打印随产品附送的联机文件。

通过购买许可证可以获得数字和拷贝的打印权。

Microsystems公司的注册商标。

其他商标和注册商标都是其拥有者的财产ModelSim 是Model Technology公司的注册商标。

PostScript是Adobe Systems公司的注册商标。

UNIX是AT&T公司在美国和其他国家的注册商标。

FLEXlm是Globetrotter软件公司的商标。

IBM, AT,PC,ATX和RISC System/6000是IBM公司的商标。

Windows,Microsoft,和MS-DOS是Microsoft公司的注册商标。

OSF/Motif是OSF公司的商标。

SPARC(SUN公司的工作站系统)是SPARC国际公司的商标。

Sun Microsystems,Sun, SunOS 和 OpenWindows 是Sun

Model Technology公司版权受保护,Model Technology公司授权用户可以打印在线文档(只能用于内部商业目的)。

2000年3月出版

Model Technology公司地址:

10450 SW Nimbus Avenue / Bldg. R-B

Portland OR 97223-4347 USA

电话: 503-641-1340

传真: 503-526-5410

e-mail: support@https://www.360docs.net/doc/1717115188.html,, sales@https://www.360docs.net/doc/1717115188.html,

主页: https://www.360docs.net/doc/1717115188.html,

目录

介绍 5

前言 9

第一章创建一个项目 1-11

第二章 VHDL基础 2-19

第四章批模式仿真的运行 4-41

第五章在启动中执行指令 5-45

第六章 Tcl/Tk 和 ModelSim 6-47

第七章 Verilog 基础 7-63

第八章 VHDL/Verilog的混合仿真 8-81

第九章基于性能分析器的仿真 9-91

第十章基于代码覆盖的仿真 10-107

第十一章查找名字与值 11-115

第十二章波形窗口的使用 12-119

技术支持,资料更新,和许可证 127

软件认证协议 135

索引 141

介绍

本章内容

软件环境

ModelSim的图形界面

支持的标准

假设

索引

软件环境

这些文件支持ModelSim SE/EE 5.4的UNIX版,Microsoft Windows NT 4.0版, 和Windows 95/98/2000版。

如果你使用的是ModelSim软件的后续版本,请点击软件附带的README文件。任何追加的信息都在那里。

虽然这些文件适用于VHDL和Verilog,但是即使你的设计只限于一种硬件描述语言,你也会发现这些文件是非常有用的参考。

ModelSim的图形界面

当你的操作系统提供windows管理结构,那么ModelSim的控制就具有windows的特征,像菜单,按钮,和滚动条。

还有一些界面支持如下操作系统:

* SPARCstation with OpenWindows, OSF/Motif, 或 CDE

* IBM RISC System/6000 with OSF/Motif

* Hewlett-Packard HP 9000 Series 700 with HP VUE, OSF/Motif, 或CDE

* Linux (Red Hat v. 6.0 or later) with KDE 或 GNOME

* Microsoft Windows NT and Windows 95/98/2000

因为ModelSim的图形界面是以Tcl/TK为基础的,你也可以使用工具建立你自己的仿真环境.

你很容易就能实现优化配置,命令仿真的可变优化.图形界面的命令可以让你改变和替换原有的windows菜单,菜单操作和按钮.

支持的标准

Model Sim VHDL 支持IEEE 1076-1987, 1076-1993 VHDL标准,支持 VHDL互用性的1164-1993标准多值逻辑系统和1076.2-1996标准的 VHDL精确包标准

用Model Sim开发的任何设计都与其他的VHDL系统兼容,其都符合IEEE 标准 1076 1987 或 1076-1993.。

Model Sim Verilog是基于IEEE标准1364-1995的标准硬件描述语言。(Model Sim 5.2e不支持PL12.0的VP1程序) 开放的Verilog V2.0国际版应用也很广泛 ModelSim PE 和EE版支持 PLI(程序设计语言界面)和VCD(值跳变) 另外,所有的产品都支持SDF 1.0 到 3.0, VITAL 2.2b, 和VITAL’95 –IEEE 1076.4-1995. 假设

我们假设您已经非常熟悉您的操作系统。

您应该很熟悉您图形界面的窗口操作功能:不是开放WINDOWS,OSF/MOTIF,就是Microsoft Windows NT/95/98/2000,我们也假定您具有VHDL和VERILOG的应用知识。

尽管Mode lSim是一款非常卓越的面向HDL概念学习和实践的工具,但这个文档不是为这个目的而编写的。

建议

非常欢迎您来电,来函,传真,或EMAIL提出任何有关本手册和Mode lSim 软件的意见和问题

Model Technology Incorporated

10450 SW Nimbus Avenue, Bldg. R-B

Portland, OR 97223-4347 USA

电话: 503-641-1340

传真: 503-526-5410

email: manuals@https://www.360docs.net/doc/1717115188.html,

网址: https://www.360docs.net/doc/1717115188.html,

索引

Mode lSim 的文件通过我们的网站https://www.360docs.net/doc/1717115188.html,/resources/ index.html下载,

前言

在您学习这些课程之前我们会给您提供详细的介绍。您将决定通过最好的方式在您的操作系统中创建目录,拷贝文件和执行程序。(当您用Mode lSi m的图形界面来进行仿真的话,这种界面对所有的应用平台来说都是一致的)另外,您可以在Mode lSi m的用户手册和命令参考中找到详细的VHDL,Verilog, 和兼容VHDL/Verilog仿真的资料。(看“索引”)

实例引导WINDOWS的路径解析器————当您尝试这个实例时,可在你的操作系统上使用解析器

命令,按钮和菜单等效方法

课程中的大部分步骤都是要通过按钮和菜单的选册来实现的。

适当的时候,在步骤中,VSIM命令行(PROMPT:*提示符号,DOS*),或者菜单模式(MENU:)其中括号中的选择是等效的。

这个例子说明3种run –all命令的操作方法,一种是按钮,一种是提示光标(DOS命令),还有一种是菜单选择。

拖和拉

拖和拉操作允许你在窗口中拷贝和移动信号。如果拖和拉操作作为课程的一个步骤来讲,他就跟MENUS(菜单模式)和PROMPTS(提示光标模式)非常类似了。命令的历史记录

这一课的工作,你要把注意力集中在主记录窗口上。

按钮和菜单选择对命令的调用都记录在那里。

你可以通过移动箭头来查看这些命令的历史记录。或者用一种捷径,既通过Mode lSi m/VSIM的PROMPT(提示光标模式,DOS)来查看命令的历史记录

在主记录器里重复命令

ModelSim的主记录可以被保存下来,通过DO文件来重复执行主记录里的最终文件。

在任何时间,在仿真前或仿真中你都可以存储记录。如果你不想存储全部的命令历史记录,你可以通过选项来清除记录(File > Clear Transcript)存储记录的的内容可以通过选择主菜单的File > Save Main As来实现,用DO命令可以重复此命令。do 例如,如果你把一系列编译命令存储为mycompile.do (the .do 扩展名是随意可选择的),你可以用一个命令重新编译。do mycompile.do 注意:在这个例子里PROMPT和RETURN都没有结束一个命令行。

第一章创建一个项目

本章目的:

·了解“欢迎到ModelSim”的对话框特征

·创建一个项目(.mpf文件)

欢迎到ModelSim的对话框

在第一次打开ModelSim时,你将会看到欢迎到ModelSim的对话框(如果屏幕没有显示,你可以在主窗口选择Help > Enable Welcome,在下次您启动ModelSim 时就会显示正常了)从这个对话框,你能:

显示快速启动菜单,这个菜单包含了对一些普通问题的解答。

运行ModelSim的认证诊断

用项目创建魔法师从打草稿或拷贝一个已有的项目来创建一个新的项目

打开一个已有的项目

点击Done 进入ModelSim的主窗口。

创建一个项目

在规范或测试的HDL设计下,一个项目提供一个实体。

最小配置情况下,有一个根目录,一个操作库,和一个会话状态,这些都存储在项目的根目录下一个a .mpf文件里。

一个项目由以下几个部分组成:

HDL资源文件

子目录

本地库

整体库的资料

如果需要更多有关项目文件使用的信息,请看ModelSim的用户手册。

注意:从5.3版开始,Mode lSim 公司后缀为.mpf的扩展文件是指项目文件。在过去的版本里modelsim.ini 文件(系统初始化文件)被作为项目文件。

1.下列其中一种方式可以启动Mode lSim

在UNIX的Shell模式下键入vsim

在你的Windows操作系统下,可以通过点击开始菜单里的Windows快捷图标modelsim.exe或者在DOS模式下执行文件modelsim.exe

2.在Welcome to ModelSim的对话框里选Create a Project按键

(如果Welcome to ModelSim的对话框没有显示,你可以在主窗口选择Help > Enable Welcome,在下次您启动ModelSim时就会显示正常了)通过从ModelSim的主窗口选择FileNew > New Project,你也可以进入创建一个新项目的对话框。

点击Create a Project 按钮打开创建一个新项目的对话框和一个项目创建魔

法师。

项目创建魔法师可以在项目创建的每一个步给你提供帮助。

它提供Verilog 或VHDL资源文件种类的输入选择,然后帮你添加到项目里。

3.在创建一个新项目的对话框里,你可以选择创建一个新的草稿性的项目,或者

拷贝一个存在的项目。启动一个项目最简单的方式就是拷贝一个类似的项目。

让我们选择“拷贝一个存在的项目”

4.指定“新项目的路径”在项目目录树下指定一个目录。这个目录必须已经存在-否则完成这个对话框也不能创建它。

5.指定“新项目的名字”它将作为项目的根目录名和.mpf文件的名字。

6.指定一个“存在的项目”的名字,指定完整路径和后缀为.mpf的文件。在这一课,浏览路径modeltech/examples/projects/vhdl/vhdl.mpf并选择此文件

7.一旦您已经指定了足够的信息来拷贝一个已经存在的项目,这时“OK”按钮就会处于可点击状态。选择OK,通过一个默认的工作库引导项目目录的建立。然后您将被问到“如果您想把这个项目转化成你当前的项目,请选择YES按钮”

8.在这个对话框里,如果您想为你的项目创建一个新HDL资源文件,请选择NO按钮,然后在Welcome to ModelSim的对话框里点击DONE按钮。现在您就能开始编辑你的项目了。

9.选择Options > Edit Project.这可以打开编辑项目“E dit Project”的对话框.点击下拉菜单到资源文件“Source File”的条目,同时选择资源counter.vh d. 一旦选择了资源文件,编译的按钮就变成可点击状态了。

10.在“Edit Project”对话框中点击编译按钮。随着资源文件编译的完成,“Add to Library”的按钮就会变成可点击状态了。

11.在“Edit Project”对话框中点击“Add to Library”,然后点击“Done”。注意:联合“Compile”和“Add to Library”创建一个脚本(DO文件)将会重新编译整个项目。你必须在“Compile ”后执行“Add to Library ”来创建一个正确的脚本。通过使用菜单Main > Design > Compile Project 可以重新编译一个项目。

12.通过点击工具条上的Load Design按钮开始仿真。

Load Design对话框同样会在下面显示(如果你通过命令行方式调用VISM命令,你将看不到此对话框),Load Design对话框允许你选择库和顶级设计单元来仿真,在Design Unit下选择“ counter”, 然后选择“LOAD”按钮。

拷贝一个存在的项目创建一个新项目的的过程到这里就完成了,新创建的项目会在主窗口打开待用.

现在你可以选择离开Mode lSim 或者编辑这个项目的HDL部分直到项目完全确定并且所有文件都编译到项目的库里。

如果你离开了ModelSim ,你可以通过在Welcome to ModelSim的界面中点击“Open Project”重新打开这个项目。

第二章基础VHDL仿真

课程目标:

·创建一个库

·编译VHDL文件

·启动仿真器

·了解基本的VSIM窗口,鼠标,和菜单规范

·用run命令运行VSIM

·列出一些信号

·运用波形显示功能

·约束信号的值

·单步运行仿真

·设置断点

仿真的准备工作

在运行仿真之前,你需要编译你的HDL源代码并且加载顶层设计单元。

1.开始时,为这个练习创建一个新的路径(防止与其它用户正在做的工作混淆)。把这个路径创建出来以后,我们把 \\modeltech\examples 目录下的所有VHDL(*.vhd)文件拷贝进来。

我们通过从这个新的路径下面调用ModelSim或者从ModelSim的主窗口选择File>Change Directory命令来确保我们的当前工作路径就是新建的路径。

2.用下列两种方法之一运行ModelSim:

对于UNIX在命令行下敲入:

vsim –gui

对于Windows-你可以选择点击快捷方式图标进入或者从开始菜单进入或者在DOS命令行下敲入:

modelsim.exe

注意:如果在安装ModelSim的时候,你没有将它添加到你的查找目录中去的话,那么当你在DOS下敲入命令时,你必须同时敲入完整的路径。

3.在你编译任何HDl源代码之前,你需要有一个设计库以便保存编译的结果。要想创建一个新的设计库,你需要在主窗口中选择Design>Creat a New Library,在创建新库的对话框中选择Creat:a new library and a logical mapping to it.在Library中填入work,选OK。

这样,我们就在当前目录下创建了一个子目录,同时在它的下面创建了一个work库。ModelSim在这个子目录下面保存了一个叫_info的文件。(PROMPT:vlib work

vmap work work)

注意:不要用UNIX或者Windows命令来创建库的路径,因为那样不会产生_info 文件。我们通常用ModelSim或者UNIX/DOS的库菜单和或者vlib命令来创建库的路径。

4.在工具栏上选择Compile按钮,把counter.vhd文件编译到新的库中去。

选择按钮后产生了一个叫做Compile HDL Souse Files的对话框。(如果你从命令行调用vcom你就看不到这个对话框)。选择counter.vhd文件,点击Compile按钮,就完成编译了。你可以一次编译多个文件,或者按需要单个编译。

5.现在让我们来加载设计单元。从工具栏中选择Load Design按钮:

加载设计的对话框就出现了,如下所示(如果你从命令行中用counter调用vsim,就看不到这个对话框了)。

对话框让你选择库和顶层设计单元以便仿真。你当然也可以选择仿真的分辨率限制。默认的话,将会如下显示:

﹒Simulator Resolution:default(默认值为1ns)

﹒Library:work

﹒Design Unit:counter

﹒Descrption:entity

如果设计单元是一个实体(就像这个设计中的counter一样),那么点击plus -box prefix来查看所有相关结构。

6.选择实体counter并且选择Load接受它的设置。

7.下一步,从主窗口菜单中选择View>All来打开所有VSIM窗口。

窗口说明可以参考ModelSim的用户手册。

8.从信号窗口菜单中,选择View>List>Signals in Region.这个命令将在列表窗口中显示顶层信号。

9.接下来通过选择View>Wave>Signals in Region from the Signals把顶层信号添加入波形窗口之中。

运行仿真

我们是通过给输入时钟激励来运行仿真的。

1.点击Main window,在VSIM提示符下输入如下命令:

force clk 1 50,0 100 –repeat 100

VSIM如下翻译force命令:

·从当前时刻开始每隔50ns使时钟为1

·当前时刻开始100ns以后时钟为0

·每100ns一个循环,如此重复

注意现在栏中的运行长度字段显示100(ns是当前默认的精度)。一让仿真器运行你就可以看到force命令的影响结果了。

2.现在你可以在主窗口或者波形窗口中通过工具条按钮练习两种Run函数了。(主窗口和波形窗口中的Run函数是一样的)。首先选择Run按钮。运行完成以后选择Run All命令。

Run。这个命令会使仿真器运行,然后在100ns以后自动停止。

Run All。这个命令使仿真器一直运行,在第三步中会介绍怎样中止运行。

3.在主窗口或者波形窗口中选择Break按钮来中止运行。

源窗口中的箭头指向下一个即将执行的HDL文件。(如果仿真器没有在Break 命令发生时评估这个进程,箭头将不被显示)下一步,你将在这个函数的第18行设置一个断点。

4.将光标移向VSIM窗口。下拉窗口显示出第18行。点击或者在第18行的旁边设置断点。在设置断点的那一行你会看到一个红点。断点通过点击可以在有效和无效之间转换。

删除断点,用鼠标右键点击行标号选择删除。

注意:断点只可以被设置在可执行行-由绿色显示的行为可执行行。

5.选择Continue Run按钮来继续你中断的一次运行。VSIM将会跟踪断点,在VSIM 资源窗口中显示一个箭头,在主窗口中显示一个Break信息。

6.点击Step按钮来单步运行仿真。注意在VSIM Variable窗口中变化的值。如果你想的话你可以一直点击Step。

7.完成以后,敲击 quit –force命令退出仿真。这个命令在退出VSIM时不会保存数据。你的窗口位置将会被保存在一个叫做modelsim.ini的文件中,同时窗口会被关闭。(想了解更多关于modelsim.ini文件的知识可以参考ModelSim用户手册)

第三章调试VHDL设计

本课目标:

﹒给出一个VHDL设计平台的例子-这是一个VHDL体系,它示例了一个VHDL设计单元的测试,仿真,和检查结果的过程。

﹒把一个逻辑库名字映射到一个实际的库。

﹒改变默认的运行长度。

﹒在命令窗口中识别断言信息

﹒改变断言中断级别

﹒使用restart命令重启仿真

﹒检查VSIM Variables窗口中的合成类型

﹒改变变量值

﹒使用滤波来触发VSIM列表窗口中的每一行

﹒改变在VSIM列表窗口中显示的信号的基数

准备仿真

1.为练习创建一个新的路径,从\\modeltech\examples目录拷贝如下VHDL文件到新的目录。

·gates.vhd

·adder.vhd

·testadder.vhd

当前的路径一定要是新建的路径。你可以使用的方法有:从新建路径下调用ModelSim或者在ModelSim主窗口中点击File>Change Directory.

2.采用下述两种方法之一启动ModelSim;

对于UNIX来说,在命令行下敲入:

vsim –gui

对于Windows来说,可以从快捷方式图标进入或者从开始菜单进入或者在DOS 下敲入:

modelsim.exe

3.在ModelSim提示符下敲入如下命令以创建一个新的库:

vlib library_2

4.通过在系统提示符下面敲入如下命令,把源文件编译到新的库中去:

vcom –work library_2 gates.vhd adder.vhd testadder.vhd 5.现在让我们把新库映射到工作库中去。想创建一个映射你可以:编辑modelsim.ini文件的[Library]字段或者用vmap命令创建一个逻辑库名:

vmap work library_2

ModelSim会帮你修改modelsim.ini文件。

6.通过在主窗口点选Design>Load New Design或者直接点击Load Design快捷图标来启动仿真器。Load Design对话框如下显示。

7.在对话框中进行如下步骤:

·确保仿真器的设置为缺省值(缺省设置为ns)

·在Design Unit菜单项中选择test_adder_structural一项

·点击Load完成设置。

8.要打开所有的VSIM窗口,你可以在主窗口的VSIM提示符下输入如下指令:

view *

如果在上次你做完练习以后没有人启动仿真器进行新的设置的话,ModelSim 将会在你上一次练习同样的位置打开所有窗口。

9.将高层信号以下列方式拖到列表窗口中去:在确保层没有越界(没有负框),用Edit>Select All全选窗口中的所有信号,拖曳他们到列表窗口。

10.输入如下命令,把顶层信号加入波形窗口:

add wave *

11.现在把工具条中运行长度那一项的值改为1000(ns)。点击运行长度那一项的域就可以改值了(注意那里的箭头对你改值的用处)

仿真的运行与调试

1.点击工具条中的RUN按钮运行仿真。现在窗口中显示了一条错误声明信息,让我们看看错在那里了。进行如下步骤跟踪仿真。

2.首先,选择Options>Simulation改变仿真声明的选项。

3.选择Assertions页。在Break on Assertion项中选择Error然后点OK。这会使仿真器在声明出现后停止在那一行HDL代码处。

4.在工具条中选择Restart按钮重启仿真器。你要把Restart对话框中的选项全选中,再点Restart按钮。

5.在工具条中选择Run按钮。注意资源窗口中的箭头指向声明段。

6.如果你看一下Variables窗口,你会看到i=6。这表明仿真在循环测试第六次以后停止。

7.点击变量名test_patterns旁边的+号可以扩展它。(这时,为了看得清除一些,你可能需要重新调整窗口大小)

8.点击+号,扩展第六个记录test_patterns(6).这时,Variables窗口差不多与如下窗口相似。

声明显示信号sun不等于Variables窗口中的sum域。注意,输入a,b,cin 应该等于输出sum。但是在测试段中有一个错误。想改正错误,你得重启仿真器并改变测试段的初值。

在主窗口敲入:

restart –f

参数-f使得VSIM不出现确认对话框而重启。

10.在进程窗口中可以通过选择test/testbench把变量加入到Variables窗口中去。

11.在变量窗口中,点击test_patterns展开变量test_patterns,再使用同样的方法打开test_pattern(6),然后选中其中的变量sum,使用菜单Edit>Change。

12.在value域中通过在它们上拖拉选上后四位bit,然后用0111替代,点击change按钮。(注意这仅仅是暂时的编辑,你要永久的变化还得去修改源代码。)13.在主窗口中选中run按钮。这样的话,模拟将会无错地运行。

修改新行的触发

在list窗口中,默认的情况下一个列表中的信号的每个传输都会触发出示一个新行。下面的步骤是把这种触发该为每隔100ns一下。

1.在list窗口中,点击菜单Prop>Display Props。

2.在Trigger页执行下列步骤:

取消Trigger On:Signals,

选中Trigger On:Strobe,

在Strobe Period域中写入100,

在First Strobe at域中写入70,

点击OK。

3.你的最后一个操作是将信号a,b,和sum修改为十进制。

选中菜单Prop>signal Props,它会打开一信号属性窗口。

4.这时你就可以在list窗口中选中信号,修改它们的属性,现在做如下改动:

选中信号a,然后选上Decimal,点击按钮Apply;

选中信号b,然后选上Decimal,点击按钮Apply;

选中信号b,然后选上Decimal,点击按钮OK;

仅仅熟悉一下菜单系统,就到了这节课的结束,要退出系统可以使用命令:quit –force

第四章批处理模式模拟

本课目的:

·运行批处理模式模拟

·执行宏文件(do)

·察看保存的模拟

批处理模式允许你执行几条命令,它们被写在一个文本文件中。即你用你想运行的命令创建一个文本文件,当你启动Modelsim时,指定它,这在你重复运行一个模拟或一套命令时非常有用。

重点:批处理模式必须运行在DOS或UNIX提示符下,在Windows95/98/NT中,可以沿着Start>Programs>Command Prompt得到DOS,没有另外指示,这课所有的命令都是在DOS或UNIX提示符下。

1.在这课开始之前,你需要创建一个新的目录,使它为当前路径,把下列这个文

件拷贝到你的新目录中:

\\modeltech\examples\counter.vhd

2.创建一个新的设计库(记住:所有的命令都在DOS或UNIX下)

vlib work

3.映射库:

vmap work work

4.然后编译源文件:

vcom counter.vhd

5.用一个宏文件为counter提供触动。为了你的方便,跟随Modelsim已经把这

个文件提供给你了,你需要把这宏文件从安装的目录拷到当前目录上:

\modeltech\examples\stim.do

6.用编辑器创建一个批文件,命名为yourfile,在编辑器中,把下列命令分别写成行:

add list -decimal *

do stim.do

write format list counter.lst

保存在当前目录中。

7.输入下列命令,运行批处理模式模拟:

vsim -wav saved.wav counter < yourfile

这步所做的工作:

·在设计单元counter上调用VISM模拟

·开关参数-wav指示模拟器将模拟结果保存到一个名为saved.wav的log文件中

·使用yourfile的内容是为了指定那些数值以十进制列出,触发文件为stim.do,并将列出的结果写到名为counter.lst,默认的设计单元是counter 8.既然你已将模拟的结果保存在saved.wav,你可以启动参数-view的VSIM命令: vsim -view saved.wav

9.在主窗口中用菜单VIEW打开如下窗口,或者用等价的Modelsim命令:

view structure signals list wave

注意:如果你打开的进程或变量窗口是空的,那是因为你看的是保存的模拟,不是内面产生的模拟;保存在saved.wav文件中的log文件是用来重构当前的窗口。

10.目前你已将窗口都打开了,这时将信号加进去:

add wave *

add list *

11.使用VISM窗口去实验模拟的结果。一切结束后就可以退出:

quit -f

想得到更多的批处理命令模式的信息,请参考Modelsim用户手册。

第五章在启动中执行命令

本课目的:

·用命令指定设计单元

·编辑modelsim.ini文件

·用DO文件在启动中执行命令

重点:这一课也只是在DOS或UNIX下。

1.为了进行这一课,你需要用DO文件为启动提供信息。方便起见,这样的一个启动文件已随着Modelsim程序提供给你了,你只需把它从安装的目录拷到你的当前目录即可:

\\modeltech\examples\startup.do

2.接着,为了在设计单元加载后执行一个指定的命令,你要到modeltech目录底下编辑一个系统初始化文件。具体:用文本编辑器打开

\modeltech\ modelsim.ini

删除文件中下列行,

Startup = do startup.do

并保存。

注意:一定要使文件modelsim.ini能写能修改,这可通过在文件上右击,点击属性,取消“只读”这一选上,然后OK。

3.浏览一下DO文件,会发现它用一个变量Sentity处理了:随启动的设备不同而做不同的处理。

4.开始在指定的高层设计单元上进行模拟,在DOS/UNIX下输入下列命令:

vsim counter

你会注意到,加在设计单元时没有显示加载窗口,这给你反复在同一个设计

单元上模拟带来了方便。还有一个惊喜,所有的窗口都被打开了,这是因为view * 这个命令被包含在启动宏中。

5.如果你计划继续进行下面的练习,继续让ModelSim运行。如果你想退出模拟,在VSIM下输入quit –f.

6.当你不需要startup.do文件做这些工作时,你可以重新用文本编辑器把上面删除的写上去。

第六章 Tcl/Tk和Modelsim

本课目的:

·创建一个“hello world”按钮窗口

·应用一个触发按钮来执行程序

·模拟十字路口的交通灯

·画一个状态机来表示模拟

为了让你对Tcl/Tk在Modelsim里的功能有个感官上的认识,这个课被划分了几个Tcl的例子,这些例子包括一般模拟界面的创建(代码已经写好了)。

注意:你必须用Modelsim SE/EE-VHDL或者Modelsim SE/MIXED完成这些练习。关于Tcl/Tk更多的信息

Tcl/Tk有很多的源信息包含在John K. Ousterhout编写的《Tcl和Tk工具箱》,出版于Addison-Wesley 印刷公司,和Brent Welc编写的《用Tcl和Tk编程实践》,出版社是Prentice Hall,Tcl/Tk是怎样同Modelsim工作的?

Modelsim把Tcl作为一个内涵库包合并了,Tcl库包括Tcl语言的分析库,实现Tcl命令的该例行的事务,和一些允许Tcl扩展到Modelsim的特殊命令程序程序。

Modelsim产生Tcl命令,并把它们传给Tcl分析器执行,命令的产生可以通过从输入源中以字符的形式读入,或者相关的命令字符串。

当Tcl库接受命令,它就把它们分解并传给相关的组件直接执行,为了让Modelsim实现这些命令,回调Tcl来执行命令。

应用Tcl的命令语言,给Modelsim带来了些编程上的方便,Modelsim集中在模拟的命令上,而Tcl特征主要在图形界面,总体编程界面和一些特殊的命令上。有了Tcl合并,Modelsim就不需要那些特征了就能让他的图形界面与所有的平面形势保持一致。

通常的交通灯界面:

Tcl/Tk这课的主题是一个简单的交通灯的控制器例子。这个系统包括三个基本的组件:状态机,一对交通灯,和一对交通传感器。这些组件分别用了三个VHDL文件来描述:traffic.vhd,queue.vhd,tb_traffic.vhd。

你当然可以用Modelsim的原界面来模拟这个系统,但是Tcl/Tk给我们提供了一个新的选择。前面我们既然已经看到体验了一些模拟,我们可以创建一个唯一的可视化界面的模拟。

假设:

假设例子中的代码全部编译过了,下面是用来表示他怎么工作的:

TK

这十字路口图解指出了几个Tcl/Tk“窗口小器件”,一个窗口小器件仅仅是一个用户接口的元素,如同菜单和滚动条一样。Tk窗口小器件是参照Tcl程序创建图形界面对象的,Tk工具箱包括几种窗口小器件,另外一些可以使用这几种来创建。

控制模拟

在Modelsim中,十字路口界面组成部件友谊下作用:

节省时间;

既然几个十字路口空间能调用一个VSIM命令产生一个动作(比如滚动调的动作),这种界面相对从提示符和Modelsim菜单调用命令要节省时间。

几个例子的原始文件的副本

另外几个例子的原始文件的副本的地址是:

..\examples\tcl_tutorial\originals directory

例子的解决方案

通过这个交叉路口实例你应该会修改Tcl文件来完成交叉路口的最终版本。你将会在tcl_tutorial\solutions路径中找到一套完整可以运行的交叉路口实例,在Modelsim命令提示符下调用命令可以运行它们。

cd solutions

do traffic.do

察看文件

在Modelsim命令提示符下使用notepad命令你可以察看任何一个Tcl文件的源代码。

notepad

大部分文件只是只读文件,如果你想修改它们,可以从记事本编辑菜单中取消只读。

Tcl source命令:

Tcl source命令把Tcl文件读入到Tcl分析器中,分析器能分解程序使其在当前的环境中使用,一旦sourced,一个Tcl程序就能在在Modelsim命令提示符下调用,语法如下:

source

例程1——创建一个“hello world”窗口按键

开始这个例程之前应确定已完成“初始化安装” (6-54)。

在这个例程中将学习一个“hello world”按键,将其按下时会打印一条消息。

1.在Model Sim提示下,搜索Tcl文件:

source hello.tcl

再运行hello.tcl中定义的程序:

hello_example

文件hello.tcl被读入VSIM Tcl编译器。hello_example程序中的指令通过VSIM执行,并且将“Hello World”写到主界面。选择按键将再次打印消息。

刚刚已创建了第一个顶层窗口部件。

2.再次调用hello_example程序,注意新按键如何替代原来的按键。程序破坏了第一个按键并创建了新的。注意用notepad查找Tcl文件:

notepad hello.tcl

然后关掉hello_example窗口。

例程2-用一个按键执行一个程序

开始这个例程之前应确定已完成“初始化安装” (6-54)。

这个例程将显示图象库中所有的gif图象。每个按键对于“输入”事件都有对应,并且鼠标按键按下时也有对应。当鼠标放在按键图形上时,图象文件名显示到主窗口。当鼠标按键按下时,其“窗口部件”名将显示到主窗口。

1.通过调用下面这个命令以及这个程序建立一个图象窗口:

source images.tcl

image_example

2.拖动鼠标交叉按键,注意主界面发生了什么。

按下其中一个按键;将看到一个出错对话框。可以通过修改文件images.tcl 解决这个问题。

3.在图象显示的底部按下See Source Code按键或在ModelSim提示下调用notepad查看源文件。

notepad images.tcl

会发现程序pushme不见了;这在images.tcl中注明。

4.用notepad中的菜单选项Edit>Find搜索“proc push”。去掉注释(“#”符号)返回函数到你的源文件,然后用Destroy按键关闭图象窗口。

5.当程序pushme正确运行时将打印它的一个参数——对象名——到界面。

添加程序pushme到你的源文件之后,需要用这些命令重新查找和运行Tcl程序(用向上箭头滚动过这些命令或执行!source):

source images.tcl

image_example

按下所有键,注意主界面中的对象名。之后关闭图象例程的窗口。

例程3-模拟一个十字路口交通灯

在这个例子中将模拟一个十字路口交通灯。所创建的仿真界面允许高效运行“假设”情景。

引入交通十字路口窗口部件

我们的例程这部分介绍交通十字路口窗口部件。你将为这个十字路口添加其它部件来创建一个交通仿真环境。

再次强调,开始这个例程之前应确定已完成“初始化安装” (6-54)。

1.在ModelSim提示下调用这个命令和程序画出十字路口:

source intersection.tcl

draw_intersection

2.由ModelSim提示,用程序set_light_state来改变灯的颜色:

set_light_state green .traffic.i.ns_light

set_light_state green .traffic.i.ew_light

可以从原有的命令用主工具栏的复制和粘贴键来帮助建立指令。

3.在ModelSim提示下用这个命令查看源代码:

notepad intersection.tcl

可以从主菜单中用Edit>Find查找程序(位于文件中部)。

将交通灯连接到仿真

利用十字路口窗口部件,添加when状态把灯连接到实时仿真。当连接完成,仿真交通灯控制器,观察灯的变化。

当需要的仿真条件发生时,用VISM when状态来给仿真做条件调用Tcl程序。对于我们的例子,需要的条件是灯的状态。仿真中无论何时灯改变状态,我们都希望在屏幕上看到灯颜色的变化。

4.在ModelSim提示下用这个命令加载你编译的VHDL库为这些例子作准备:

vsim tb_traffic

确定在程序connect_lights开始前调用这个命令,如果不加载库,就没有设计用来仿真。

5.用下面这个命令和程序把灯连接到仿真:

source lights.tcl

connect_lights

现在试运行仿真;或者选择十字路口的运行键。如果用Run Forever键则选择Break。注意源窗口是如何打开和提示要执行的下一行的。(当中断发生时如果仿真器并不评估执行的程序,源窗口就不打开。)只有东/西方向灯工作时,你可以通过编译lights.tcl文件使两灯都工作。

6.用notepad编辑lights.tcl文件,给南/北方向灯添加一个when状态。

notepad lights.tcl

因为当前状态仅仅针对东/西方向灯,所以需要添加这条命令。可以找到已注释的结论。(记住改变文件的只读状态,这样你可以进行编辑。)你可以在文件末尾找到代码注释(重试Edit>Find)。

7.进行改变之后,重新加载、再次运行仿真。

source lights.tcl

connect_lights

现在灯全部工作。

注意:记住,如果你需要返回到原来的Tcl文件(也许你已经编译了文件但没有正常工作)你会发现文件在tcl_tutorial/originals库中。

将窗口部件添加到显示仿真消息

运行交通灯可能是有趣的,但不是很有用,添加一些显示,这会告诉我们在十字路口的汽车发生了什么。

现在添加队列部件来显示我们所仿真的每两个队列长度的总和。

8.已经提供了东/西窗口部件,用它来显示东/西队列总的长度。让我们编辑源文件为南/北方向添加显示。使用notepad:

notepad queues.tcl

在queues.tcl中有结论注释。

队列显示部件用两个标志部件组成一个封闭框架。第一个标志是一个简单的文字字符串。第二个标志是队列长度值。无论何时队列长度改变,第二个标志中的文字将更新。

9.在添加南/北部件之后,调用这个命令运行你的程序:

source queues.tcl

draw_queues

根据交通指示,汽车以同一速度离开十字路口。那看来很直观,但如果要根据交通流量设计一个十字路口,你可能想改变交通灯的周期。也许某一方向比另一方向有更多的输入交通流。

以比例部件形式添加控制,使得你能快速改变十字路口假设的交通流。

添加“比例”部件控制仿真

下面将添加Tk“比例”部件用来控制到达速度和灯亮的长度。

10.已经有控制东/西队列相互到达时间的东/西部件。可以编辑源代码来添加南/北方向的控制。用这个命令:

notepad controls.tcl

可以去掉代码中的注释来作改变。

同样的,添加南/北部件来控制灯亮的长度。已有对灯进行控制的东/西部件。(也可以去掉代码中的注释来作改变。)

这些控制部件用Tk“比例”部件执行,封装在一个框架内。

当比例部件的值改变时,调用每个比例上用-command选项详细说明的命令。

11.在添加南/北部件之后,调用这个命令运行你的程序:

source controls.tcl

draw_controls

现在你完成了一个完整的十字路口界面。试运行按键和the slider scales.你也可以查看ModelSim的GUI仿真。检查源窗口看VHDL文件,给示意窗口加信号(加wave*)。也可以改变主窗口的运行长度。试用主窗口和十字路口窗口的运行键。

保持路口仿真运行状态以完成下一个例程。如果你想快点重新创建最终的路口环境,就从ModelSim提示中调用这些命令(在“初始化安装”之后(6-54)):

cd solutions

vmap work work

do traffic.do

例程4——画一个代表仿真的状态机

在这个最终的例子中,要画一个代表仿真的状态机,并把它连接到交通灯控制器内部的状态信号。控制器所作的每次转换随着它的发生而显示出来。

原来例子的路口环境需要为这个例子运行。从ModelSim提示中调用这些命令以使其快点运行(在“初始化安装”之后(6-54))。

cd solutions

do traffic.do

1.用这些命令运行状态机:

source state-machine.tcl

draw_state_machine

让我们改变灯的颜色和转换箭头。

2.用这个命令打开源文件:

notepad state-machine.tcl

注意文件中的“ModelSim EXAMPLE part 1”注释。可以把“both_red”状态匹配条件x=125,y=50变为任何条件。(在作出改变之前不需要检查编辑菜单的只读选项。)

3.注意文件中的“ModelSim EXAMPLE part 2”注释。可以将转换箭头匹配条件变为相应的新的“both_red”状态匹配条件。

4.注意文件中的“ModelSim EXAMPLE part 3”注释。将现在的颜色从“黑色”变为“紫色”。

5.准备运行状态机时,再用原来的命令(记住,要复制原来的命令到当前命令行,选择原来的ModelSim提示):

source state-machine.tcl

draw_state_machine

注意变化。有兴趣的话,尝试一些条件的改变。

Tcl/Tk例程结束了。如果愿意可以继续修改和测试例程;可以随时覆盖tcl_tutorial\originals目录下的源文件。

第七章基础Verilog仿真

本课目标:

·编译一个Verilog设计

·检查设计的十六进制文件

·列出设计中的信号

·改变列表属性

·设置断点

·在波形显示中添加和删除光标

注意:本讲中必须使用Model Sim SE/EE-VLOG, Model Sim EE/PLUS, or Model Sim SE/MIXED

准备仿真

如果你已完成原来的任何一个VHDL课程就会注意到Verilog和VHDL仿真过程几乎相同。

1.创建并修改到一个新目录使其为当前目录。

可以通过从新目录调用ModelSim或者从ModelSim主窗口用File>Change Directory命令将目录变为当前目录。

2.从\\modeltech\examples目录将Verilog文件(以“v”为扩展名的文件)复制到当前目录。

在编译一个Verilog设计之前,需要在新目录下创建一个设计库。如果你只熟悉已说明的Verilog仿真,如Cadence Verilog XL,那么这对你来说将是一个新的思想。因为ModelSim是一个已编译的Verilog,就需要为编译所设的目标设计库。如果需要,ModelSim能够将VHDL和Verilog代码编译进相同的库。

3.调用ModelSim:

在UNIX命令提示符下调用:

vsim -gui

在Windows环境下,你可以选择从窗口快捷图标,从开始菜单,或从DOS提示符下调用:

modelsim.exe

这就打开欢迎来到ModelSim和ModelSim主窗口。点击关闭欢迎窗口,将看到主窗口。

4.编译源文件之前,需要一个设计库来装载编译结果。要创建一个新的设计库,可在主窗口中进行菜单选择:Design > Create a New Library.(提示:vlib工作)

在创建一个新库的对话框中,选择Create: a new library and a logical mapping to it。确定Library:简要说明work,然后点击OK。这就在当前目录下创建了一个子目录名为work的你的设计库。这个子目录包含了一个特殊文件名为_info。

注意:记住,库的目录不应该用UNIX/DOS命令来创建,而是用主设计菜单或vlib 命令创建。

接下来,将编译Verilog设计。

例程设计包括两个Verilog源文件,每个包含一个独立的模块。文件counter.v 包含一个名为counter的模块,它执行简单的8位二进制加1计数。另一个文件tcounter.v是一个测试模块(test_counter)用于检验counter。仿真条件下将看到这两个文件利用模块counter通过测试实例化的一个简单的实例(实例名为dut)来进行十六进制配置。以后将有机会看到代码的结构。现在,需要将所有文件编译进work设计库。

5.通过选择工具栏上的Compile按键将编译counter.v和tcounter.v文件编译进work库:

(提示:vlog counter.v tcounter.v)

打开编译HDL源文件对话框。选中两个文件完成编译。Control+click(鼠标左键)点击文件列表中的counter.v,tcounter.v,选择Compile, 然后Done。

注意:编译两个Verilog模块的顺序不重要(除了源代码依赖于编译器指令创建)。对于Verilog XL用户,他们要理解设计单元之间的接口检测或者编译器指令继承的可能存在问题,这一点看起来可能又很奇怪。ModelSim将这检测推迟直到设计由VSIM(HDL仿真器)加载。因此在这里选择在tcounter.v之前或之后编译counter.v都没有关系。

6.从工具栏选择Load Design按键开始仿真:

(提示:vsim test_counter)

Load Design对话框出现,如下所示。

Load Design对话框允许选择设计单元从特定的库来仿真。也可以选择限制仿真的决议。默认的库是work,默认的决议是1ns。

7.选择设计单元:test_counter,点击Load接受这些设置。

8.在主窗口内VSIM提示下输入下面一行,出现信号窗口,列表窗口和波形窗口:

view signals list wave

(主菜单:View>

9.将指示器移到信号窗口选中View菜单选项:View>List>Signal in Region,列出顶级信号。

(提示:添加list\counter\*)

10.现在用ModelSim的拖动和下降功能给波形窗口添加信号。

在信号窗口中,control-click每个clk, rst和count信号组成一个组的选项。点击这个组不放并保持一段时间,然后将它拖动到路径名或波形窗口的值处。

HDL的条目也能够用Edit>Copy和Edit>Paste菜单选项从一个窗口复制到另一个窗口(或者在波形和列表窗口中)。也可以用Edit>Delete选项删除所选条目。

11.接下来打开结构和源窗口。从主窗口选中这些菜单选项:View>Structure和View>Source。(提示:看结构源码)

12.重新整理窗口使你清楚的查看所有打开的窗口(试用菜单选项Windows>Initial Layout),然后点击其中的结构窗口。

结构窗口显示了设计的分级结构。默认只有层级的顶层可扩展。可以通过点击任何行的符号“+”(展开)或“-”(缩短)操控层级。在ModelSim中随处可见这些采用同样的操作技巧的符号。

点击dut:counter(如图所示)旁边的“+”可以看到全部的三个层级:test_counter, counter和一个名为increment的函数。(如果不显示test_counter,那么所仿真的counter就替代test_counter。)

13.点击Function increment,注意其它VSIM窗口如何自动适当的更新。

特别地,源窗口以你在结构窗口中所选择的层级来显示Verilog代码。源文件名也在源窗口标题栏中显示。

以这种方式使用结构窗口类似于说明Verilog的命令。

现在,点击结构窗口中的顶行确定在源窗口显示的是test_counter模块。

运行仿真

现在练习不同于工具栏的运行函数。

1.选择主窗口工具栏上的运行按键。这使仿真运行,100ns之后停止(默认仿真长度)。

(提示:运行)(菜单:Run>Run 100ns)

2.接下来将运行长度选项的运行长度变为500,再次选择运行按键。现在仿真运行整600ns(默认的100ns加上刚申请的500ns)。主窗口底部的状态栏反映了这条信息。

3.执行的上一条命令(运行500)使仿真达到500ns。也可以将仿真提高到特定的时间。典型:

run @ 3000

这将仿真提高到3000ns。注意实际上仿真运行了2400ns(3000-600)。

4.现在从主窗口工具栏选择RUN ALL 按钮将会使仿真器一直运行下去。

(提示:全部运行)(主菜单:RUN>RUN-ALL)

5.选择BREAK按钮来停止运行。

(在主窗口激活状态下按control+c)

所用的SOURSE 窗口未必和上图显示的完全一致,因为你的仿真器很可能在另一个不同的点停止运行。

调试仿真器

接下来,我们来简单看一下ModelSim环境的人机调试特性。我们先从如何使List窗口显示数据开始。

1.在List窗口选/test_counter/count,再从List窗口菜单栏中选Prop>Signal Props。这样Modify Signal Properties(list)对话框就打开了。

为信号计数选一个十进制显示基数,点击OK键。使List窗口输出发生变化:计数信号现在以十进制形式列出,而不是默认的二进制形式。

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/1717115188.html,/s/1mgoL67e 破解文件下载:https://www.360docs.net/doc/1717115188.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/1717115188.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目录下。执行编译命令。

相关文档
最新文档