《2022年modelsim使用教程 .pdf》由会员分享,可在线阅读,更多相关《2022年modelsim使用教程 .pdf(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 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的混合仿真, 但
2、在 Windows平台上不支持SystemC的仿真。 本章将对 ModelSim5.7版本进行介绍,目的是希望看完本章,读者可以简单地使用ModelSim 进行仿真,有关更深入地教程,还是参考ModelSim 附带的文档。在网址http:/ 上也可以找到深入的教程,在该页面上注册以后,会在电子邮件中收到发过来的密码,根据邮件地址和密码登陆后,会有一些高级教程和使用要点(Application Notes )下载。ModelSim5.7SE版 本 内 部 划 分 为 更 细 的 版 本 编 号 , 从ModelSim5.7aSE到ModelSim5.7gSE 等等。读者可以选择任一版本。另外,如
3、果ModelSim 是和 ISE 一起使用的话,你需要编译Xilinx 的一些库文件,这些库文件包括unisim、simprim 、xilinxcorelib 、aim、pls、cpld 等,有了这些库文件,可以在ISE 中生成设计的行为仿真(将设计转换为RTL 描述后进行的仿真) 、转换后仿真 (将设计转换为Xilinx器件的基本模块来实现后进行的仿真)、映射后仿真 (将设计用Xilinx 的具体器件的具体模块实现后进行的仿真,仿真中包含了器件的延时,但由于没有布局布线无法提取出互连线的信息,因此仿真中不包含互连线的延时、电容、电阻等信息)、布局布线后仿真(将设计对Xilinx具体器件进行布
4、局布线后,提取出互连线的信息,进行的仿真包含了器件的延时以及互连线的延时等信息)的各种模型, 然后在 ModelSim 中对这些模型进行仿真,由于 ISE 和 ModelSim 已经实现了无缝的连接, 在 ISE 中只需设置一个可视的波形文件,然后点几下鼠标就可以实现各种仿真,具体的方法在ISE 的使用一章中有较为详细的介绍,可以参阅具体的章节。同时,也可以使用 ModelSim 的 XE(Xilinx Edition)版本,由于该版本是Xilinx 版,其中自然就集成了Xilinx的各种库文件,使用时就不需要考虑库文件方面的问题了。对于ISE 不同版本集成了不同版本的ModelSim ,虽然
5、是集成,还是需要单独进行安装的。对于ISE6.1 版本配套的 ModelSimXE版本为 ModelSim5.7cXE 。本章为 ModelSim 的初级教程, 读者读完本章可以较为熟练的使用ModelSim 进行设计仿真, 本章没有也不可能涉及ModelSim 的各个方面, 要想全面的掌握ModelSim 可以参阅软件文档。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 37 页 - - - - - - - - - 8.1 设计准备在本节中将介绍ModelSim5.7
6、的安装, Xilinx仿真库的设置等方面的内容,不同的版本的安装过程大致相同,在此不再多讲,只是若你安装XE 版本时,会出现选择是否是免费的 Starter 版本,如果不想购买可以选择该选项,其实,Starter 版本足够完成我们遇见的设计 仿 真 。 若 你 连 在 互 联 网 上 , 可 以 在 线 申 请License文 件 , 选 取 开 始 - 程 序-ModelSimXEII5.7c-Submit License Request,会打开一个网页,如果你在Xilinx 网站上未注册,可以先在线注册,已经注册的话先登录,会出现另一界面,显示你的注册信息,点击 Submit 就可以申请L
7、icense 了。过几分钟可以到你的电子邮箱里收取License 文件。若安装 ModelSim的机器没有联到互联网,可以点击开始-程序 -ModelSimXEII5.7c-License Request Instructions,会打开一个文本文件,安装要求填写并发到指定的邮箱即可,但这种方 法 又 是 很 难 得 到 回 应 。 得 到License文 件 后 , 再 点 击 开 始 - 程 序-ModelSimXEII5.7c-Licensing Wizard, 指定 License 文件即可。对于非 XE 版本的 ModelSim安装同一般软件的安装。ModelSim 的各个版本可以从
8、互联网上免费得到,购买的只是License文件, ModelSim的下载地址为http:/ ,进入这个界面可以点击Download ,用户填写完一张表格后可以得到一个小时的下载时间,读者在首页上点击Evaluations 来得到评估版本的license文件。ModelSim 软件的加密采用的是Flexlm 方法, Flexlm (Flexible License Manager )是由Globetrotter 公司发明的软件加密方法,Globetrotter 公司向软件厂商出售相关开发软件,软件厂商把此加密程序集成到自己的软件中,该方法是目前最为流行的EDA软件加密方法,已被 80%以上的 E
9、DA 软件公司所采用,该方法可以锁定机器的硬盘号,网卡号, 使用日期,支持加密狗等, 以保护软件的知识产权。打开我们得到的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 是版本标
10、记,可以是时间,也可以是版本号;1-jan-00 为过期时间,如果是 permanent 或 0,表示永不过期,这里的00 就表示不过期; uncounted 表示使用人数限制; 9C0FA6415C9327086559是根据以上条件和Flexlm加密算法计算出的密码;HOSTID=DISK_SERIAL_NUM=c61e85a表示运行机器的特征,可以指定运行机器的硬盘号、网卡物理地址以及加密狗等,这里指定的是机器的硬盘号,只有硬盘号为c61e85a 时才可以使用。 ModelSim不像有些EDA 软件需要专门的管理工具来管理License,大多数EDA 软件是需要管理工具来管理的,如PADS
11、、ActiveHDL等等,这些软件安装时会有安装 License Server 的选项,管理工具可以在控制面板里的FLEXlm License Manager进行设置。对于ModelSim只需要在环境变量里指明license 文件的位置即可,运行ModelSim LicenseWizard 可以自动设置环境变量,若需要手动设置,在Win95/98 下在 autoexec.bat 中名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 37 页 - - - - - - - - -
12、 加入如下一行 :SET LM_LICENSE_FILE=c:flexlmlicense.dat,如果在一台机器上安装了多个这种加密方式的EDA 软件,可以用分号隔开多个license 文件,如 : SET LM_LICENSE_FILE=c:flexlmlicense1.dat ; d:alteralicense2.dat 在 Win2000 和 NT 操作系统下 ,直接在系统环境变量中设定这些参数。具体方法是在我的电脑上点击右键,选择属性,点击高级,点击环境变量,再新建一个变量,变量名为LM_LICENSE_FILE ,变量值为license 文件的存放地址。在使用由Flexlm 加密的
13、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-
14、UX, LINUX等平台。8.2 菜单和工具栏介绍这里以 ModelSimXEII5.7c为例来说明,本节说明ModelSim 的菜单和工具栏,读者有一个初步的了解就可以了。可以通过点击开始-程序 -ModelSim XEII5.7c-ModelSim或点击桌面上的快捷方式来运行该软件,出现的界面如图8-2-1 所示。在图的最上端为标题栏;下面一行为菜单栏;再下面为工具栏;左半部分为工作区(Workspace) ,在其中可以通过双击查看当前的工程及对库进行管理;右半部分为命令窗口区,在其中出现的命令行及提示信息称为脚本(Transcript) ;最下面一行为状态栏。这里要注意的是,有些操作是无
15、法通过菜单和工具栏来完成的,学习ModelSim 一定要学会使用命令行方式来操作,常用的命令并不多,不是很难掌握,在后续章节将介绍仿真中的一些常见命令。因此,本节内容读者略读一下就可以了,实际试一下会更好。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 37 页 - - - - - - - - - 图 8-2-1 ModelSim界面 8.2.1 标题栏与一般的Windows 窗口相同, 界面的最上一行为标题栏,显示当前的应用程序的名称,通过点击标题栏的图标(或 Alt
16、键 SpaceBar 空格键)可以对窗口进行诸如改变窗口大小、移动窗口位置、关闭窗口之类的操作,这些与Windows 完全相同。8.2.2 菜单栏标题栏下方为菜单栏。菜单栏有八个菜单项,分别是:File(文件)、Edit(编辑)、View(视图)、Compile(编译)、Simulate(仿真)、Tools(工具)、Window (窗口)、Help(帮助) 。下面分别罗列其具体选项。1. File(文件)菜单文件菜单通常包含了对工程及文件等的操作。ModelSim的文件菜单包含的命令有:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
17、 - 名师精心整理 - - - - - - - 第 4 页,共 37 页 - - - - - - - - - New(新建),Open(打开),Close(关闭),Import(导入),Save (保存),Delete(删除),Change Directory (更改路径),Transcript(对脚本进行管理) ,Add to Project (为工程添加文件) ,Recent Directories(最近几次的工作路径),Recen Projects(最近几次工程) ,Quit(退出)。(1) 新建文件命令(File/ New )单击 File/ New 命令,将会出现一个子菜单,共包含四
18、个选项:单击Floder(新建文件夹)后,会出现对话框,提示输入新建的文件夹的名字,即可在当前目录下新建一个文件夹;单击 Source(新建源文件)后,会出现源文件类型的选项(VHDL ,Verilog,Other) ,点击可分别新建对应格式的源文件;单击Project(新建工程)后,会出现对话框,提示在Project Name 处输入新建工程的名称,在Project Location 处指定新建工程的存放路径,在Default Library Name处指明默认的设计库的名称,用户设计的文件将编译到该库中;单击Library(新建一个库) 后,会出现对话框, 提示选择Creat a New
19、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(导入)导入新的库,在进行某些仿真时需要
20、的一些库可以通过该方法导入,根据提示指定源库路径及目标库路径,一步步操作完成。 注意 ModelSim 安装目录下的modelsim.ini 文件不能为只读。在该文件中保存了ModelSim 的一些设置信息,后续章节将详细讨论该文件的内容及其含义。(5) Save(保存)保存当前仿真数据。(6) Delete(删除)删除指定的工程,即删除.mpf 文件, mpf 是 ModelSim 工程的后缀名。(7) Change Directory (改变路径)改变当前工作路径,ModelSim 使用的是绝对路径,而不是相对路径,这与ISE 不同,在 ISE 中,你可以将你的设计整个目录拷贝到其他任何地
21、方,只要目录完整,你可以直接打开工程文件。而在ModelSim中,若将整个目录拷贝到其他地方,打开工程时其指向仍为原来工程的地址,可以通过更改路径来设置新的路径。(8) Transcript(脚本)单击会出现子菜单选择操作Save Transcript (保存主窗口中脚本) 、Save Transcript As(把主窗口中脚本另存为一个新文件)或Clear Transcript (清除主窗口中的脚本)。(9) Add to Project (添加到工程)单击会出现子菜单选择操作File(添加文件到当前工程)、Simulation Configuration (添名师资料总结 - - -精品资
22、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 37 页 - - - - - - - - - 加设定的仿真配置)或Folder(添加文件夹) 。(10) Recent Directories(最近几次工作路径)可以从中选取最近几次的工作路径。(11) Recen Projects(最近几次工程)可以打开最近几次的工程。(12) Quit(退出)退出 Model Sim. 2. Edit(编辑)菜单类似于 Windows 应用程序,在编辑菜单中包含了对文本的一些常用的操作。(1) Copy(复制)复制选
23、中的文档(2) Paste (粘贴)把剪切或复制的文档粘贴到当前插入点之前。(3) Select All(全选)选中主窗口中所有的抄本文档。(4) Unselect All (取消全选)取消已选文本的选中状态。(5) Find(查找)在命令窗口中查找字符或字符串。3. View(视图)菜单类似于其他Windows 应用程序,视图菜单可以控制在屏幕上显示哪些窗口。(1) All Windows (所有窗口)打开所有的Model Sim窗口,你试一下该命令会发现ModelSim 打开了许多窗口,包括波形窗口、信号列表窗口、源文件窗口等等。(2) Dataflow (数据流)打开 Dataflow
24、窗口,在该窗口中显示数据的流向。(3) List(列表)打开列表窗口。(4) Process (进程)打开过程窗口,该窗口显示了设计中的进程所在的位置。(5) Signals(信号)打开信号窗口。该窗口显示了设计中所有信号的列表(6) Source(源文件)打开源文件窗口,可以在源文件窗口中显示设计中使用的源文件。(7) Structure(结构)打开结构窗口,该窗口以列表方式显示了设计中所有到的结构,双击某一结构,可以名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 37
25、 页 - - - - - - - - - 查找定义该结构的语句。(8) Variables(变量)打开变量窗口,该窗口以列表方式显示了设计中定义的所有变量。(9) Wave(波形)打开波形窗口,这是我们仿真时经常需要查看的窗口,在其中显示了输入和输出的波形。(10) Datasets 打开 Dataset 浏览器来打开、关闭、重命名或激活一个Dataset。你在使用的时候会发现没有什么变化,这时候你可以看看Workspace 窗口下是不是多了一个选项卡。该选项卡显示的内容与Structure 窗口显示的完全相同。(11) Coverage(覆盖率)查看仿真的代码覆盖率。(12) Active
26、Processes(活动的进程)当前正在执行的进程。(13) workspace(工作区)打开当前的工作区。(14) Encoding(编码)以不同的编码查看。(15) Properties 显示工作区中选中对象的属性。4. Compile(编译)菜单(1) Compile(编译)把 HDL 源文件编译到当前工程的工作库中。(2) Compile Options (编译选项)设置 VHDL 和 Verilog 编译选项,例如可以选择编译时采用的语法标准等。(3) Compile All (全编译)编译当前工程中的所有文件。(4) Compile Select(编译选中的文件)编译当前工程中的选
27、中文件。(5) Compile Order (编译顺序)设置编译顺序,一般系统会根据设计对VHDL 自动生成编译顺序,但对于Verilog 需要指定编译顺序。(6) Compile Report (编译报告)有关工程中已选文件的编译报告。(7) Compile Summary (编译摘要)有关工程中所有文件的编译报告。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 37 页 - - - - - - - - - 5. Simulate(仿真)菜单这里的编译及运行命令类似于V
28、C 等高级语言的调试时候的命令。(1) Simulate(仿真)装载设计单元。(2) Simulation Options (仿真选项)设置仿真选项。(3) Run(运行)Run *ns: 在该仿真时间长度内进行仿真。若要改变长度,可在Simulation Options中设置或在工具栏中修改;Run-All (运行所有仿真) :进行仿真,直到用户停止它;Continue(继续):继续仿真;Run-Next (运行到下一事件) :运行到下一个事件发生为止;Step(单步):单步仿真;Step-Over:仿真至子程序结束;Restrat:重新开始仿真,重新加载设计模块,并初始化仿真时间为零。(4
29、) Break(停止)停止当前的仿真。(5) End Simulation (结束仿真)结束当前仿真。6. Tool(工具)菜单(1) Waveform Compare(波形比较)在子菜单中有具体进行波形比较的命令。(2) Coverage(覆盖率)测试仿真的代码覆盖率,所谓代码覆盖率是指仿真运行到当前已运行的代码占所有代码的比例,当然是越接近100越好。(3) Breakpoints(断点设置)单击此选项出现断点设置对话框,设置断点。(4) Execute Macro(执行宏文件)所谓的宏文件就是保存后的脚本,脚本保存起来,以后可以利用该命令来重新执行。(5) Options(选项)Tran
30、script File: 设置脚本文件的保存。Command History: 命令历史。Save File:保存脚本文件。Saved Lines:限制脚本文件的行数。Line Prefix: 设置每一行的初始前缀。Update Rate:设置状态条的刷新频率。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 37 页 - - - - - - - - - ModelSim Prompt: 改变 ModelSim 的命令提示符。VSIM Prompt: 改变 VSIM 的命令
31、提示符。Paused Prompt: 改变 Paused的命令提示符。HTML Viewer: 设置打开在线帮助的文件。 (6) Edit Preferences(编辑参数选取) :设置编辑参数。(7) Save Preferences (保存参数选取) :设置保存用的参数。7. Window (窗口)菜单:(1) Initial Layout (初始化版面)恢复所有窗口到初始时的大小和位置。(2) Cascade (层叠)使所有打开的窗口层叠。(3) Tile Horizontally (水平平铺)水平分隔屏幕,显示所用打开的窗口。(4) Tile Vertically (垂直平铺)垂直分隔
32、屏幕,显示所用打开的窗口。(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)
33、About ModelSim 显示 ModelSim 的版本、版权等信息。(2) Release Notes 显示 ModelSim 的版本发布信息。(3) Welocme Menu 显示欢迎画面。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 37 页 - - - - - - - - - (4) PDF Documentation 在子菜单中可以选择ModelSim 的 PDF 文档。SE HTML Documentation :ModelSim 的超文本文档。(5)
34、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 状态栏
35、ModelSim 的状态条如图8-2-3 所示,其中Project 后面为当前工程的名称,Now 后面为当前仿真时间。最右边的为选定的仿真结构中变量。图 8-2-3 ModelSim的状态栏8.3 从一个例子开始学习ModelSim 前面两节简要介绍了有关ModelSim 的安装以及用户界面的功能,初学者可能会觉得又很多名词看不懂,这一节我们来从一个简单的例子学习ModelSim 的简单的使用。学完本节你会发现ModelSim 不仅好用,而且易用。这一节我们使用的例子是一个分频电路的设计。所谓分频电路是将较高频率的时钟分频,得到较低频率的时钟,分频电路的使用较为广泛,例如,我们要编写一个显示时
36、间的电路就需要一个分频器,将晶振的频率分频得到1Hz 的时钟信号。分频有几种方法,对于较为规则的分频,如2 分频、 4 分频、 8 分频等可以调用ISE 本身的库函数来实现,对于较不规则的分频,我们也有两种方法,一种是利用计数器的某一位来作为分频输出,一种是名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 37 页 - - - - - - - - - 计数器计数到某一数值时,分频时钟信号翻转来实现分频。两种方法的可以从其仿真结果得到。之所以选择这个例子,是因为这里例子有实
37、用价值并且设计本身简单,仿真也较为简单。好了,下面我们开始我们的设计。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 中我们输入建立的工程名字为DivCl
38、kSimu ,在 Project Location 中输入工程保存的路径为D:/yuProj/modelsim/DivClk,注意 ModelSim 不能为一个工程自动建立一个目录,这里我们最好是自己在Project Location 中输入路径来为工程建立目录,在Default Library Name中为我们的设计编译到哪一个库中,这里我们使用默认值,这样,在我们编译设计文件后,在Workspace 窗口的 Library中就会出现work 库。这里我们输入完以后,点击OK ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
39、名师精心整理 - - - - - - - 第 11 页,共 37 页 - - - - - - - - - 图 8.3.2 新建工程窗口3、这时有对话框如同8-3-3 所示,提示我们给定的工程路径不存在,是否建立该路径,我们的目的就是为工程建立一个新目录,因此,点击确定;图 8-3-3 确认建立新的工程目录4、这时候出现如同8-3-4 所示的界面, 可以点击不同的图标来为工程添加不同的项目,点击 Create New File 可以为工程添加新建的文件,点击 Add Existing File为工程添加已经存在的文件,点击Create Simulation为工程添加仿真,点击Create New
40、 Folder 可以为工程添加新的目录。这里我们点击Create New File ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 37 页 - - - - - - - - - 图 8-3-4 为工程添加项目5、出现界面如图8-3-5 所示,我们在File Name 中输入 DivClkHDL作为文件的名称, Add file as type 为输入文件的类型为VHDL 、Verilog 、TCL 或 text,这里我们使用默认设置VHDL ,Folder 为新建的文
41、件所在的路径,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
42、IEEE.STD_LOGIC_UNSIGNED.ALL; entity divclk1 is 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 37 页 - - - - - - - - - Port ( clk : in std_logic; divclk : out std_logic); end divclk1; architecture Behavioral of divclk1 is signal counter : std_logic_vector(4 down
43、to 0):=00000; signal tempdivclk: std_logic:=0; begin process(clk) begin if clkevent and clk=1 then if(counter=11000) then counter=00000; tempdivclk=not tempdivclk; else counter=counter+1; end if; end if; end process; divclkSave,并退出该窗口(File-Close ) ;8、在 WorkSpace 窗口的DivClkHDL.vhd上点击右键,选择Compile-Compi
44、le All ,如同 8-3-6 所示;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 37 页 - - - - - - - - - 图 8-3-6 编译设计中的文件9、在 脚 本 窗 口 中 将 出 现 一 行 绿 色 字 体Compile of DivClkHDL.vhd was successful.,说明文件编译成功,在该文件的状态栏后有一绿色的对号,表示编译成功;10、下面我们开始仿真,点击菜单Simulate-Simulate ,会出现如同8-3-7 所示的
45、界面,我们展开Design 选项卡下的work 库,并选中其中的behavioral,这是在 Simulate 中出现了work.divclk1(behavioral)表示我们所要仿真的对象,Resolution 为仿真的时间精度,这里我们使用默认值,点击OK;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 37 页 - - - - - - - - - 图 8-3-7 选择仿真对象11、为了观察波形窗口,我们点击菜单View-Wave ;12、这时候出现的Wave 窗口
46、为空,里面什么都没有,我们要为该窗口添加我们需要观察的对象, 首先在主窗口而不是波形窗口中点击View-Signals 打开信号列表窗口如图8-3-8 所示,在改窗口中点击Add-Wave-Signals in Design ,这时候在波形窗口中就可以看到这些信号了;图 8-3-8 信号列表窗口 13、下面我们就开始仿真了,在主窗口中输入命令对信号进行驱动,首先我们为时钟信号输入驱动:force clk 0 0 ,1 10000 -r 20000其中 force 为命令, clk 表名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
47、 名师精心整理 - - - - - - - 第 16 页,共 37 页 - - - - - - - - - 示为 clk 信号驱动,0 0 表示在零时刻该值为0, 1 10000 表示在 10ns 处值为 1,-r 20000 表示从 20ns 处开始重复(repeat) ,可以看出我们这里的输入时钟为50MHz ,即周期为20ns;14、以十进制查看counter 信号波形,在波形窗口中,右键点击counter 信号,点击 Radix-Decimal ,该信号的值就以十进制显示了;15、开始仿真,在主窗口中输入run 3us,表示运行仿真3 微秒,这时候如果你的机器配置较低那就要等几分钟时间
48、了,这时候你可以看看CPU 的利用率一直为 100,仿真是比较占资源,并且以后对波形的操作机器反应也很慢,如果仿真很慢你可以看看状态栏的当前仿真时间是多少;16、这时候点击按钮(在当前波形窗口中显示所有波形),点击可以在波形窗口添加竖线,点击可以调整选定竖线在选定信号的变化处,调整完毕,我们可以在波形窗口看到如图8-3-9 所示的窗口, 可以看到分频得到的时钟占空比为 1 (即一个周期内容为1 时间等于波形为0 的时间), 分频后周期为1us;图 8-3-9 仿真波形窗口17、退出仿真,在主窗口中点击Simulate-End Simulation,会出现对话框,提示我们是否确认退出仿真,我们点
49、击是退出仿真;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因此可以得到该式中的值。名师资料
50、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 37 页 - - - - - - - - - 8.3.2 使用命令行方式对设计进行仿真在这一小节里我们主要通过在主窗口中输入命令行来进行仿真,并不是所有的操作都是用命令行方式来实现的。我们所设计的例子是另外一种分频方式,即使用计数器的某一位作为分频得到的时钟。我们可以按照如下步骤来实现。1、新建工程DivClk2Proj ,打开 ModelSim ,点击 File-New-Project ,在工程名中输入 DivClk2Proj