quartus II和modelsim的基本使用.docx

上传人:b****8 文档编号:10402920 上传时间:2023-02-11 格式:DOCX 页数:65 大小:2.23MB
下载 相关 举报
quartus II和modelsim的基本使用.docx_第1页
第1页 / 共65页
quartus II和modelsim的基本使用.docx_第2页
第2页 / 共65页
quartus II和modelsim的基本使用.docx_第3页
第3页 / 共65页
quartus II和modelsim的基本使用.docx_第4页
第4页 / 共65页
quartus II和modelsim的基本使用.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

quartus II和modelsim的基本使用.docx

《quartus II和modelsim的基本使用.docx》由会员分享,可在线阅读,更多相关《quartus II和modelsim的基本使用.docx(65页珍藏版)》请在冰豆网上搜索。

quartus II和modelsim的基本使用.docx

quartusII和modelsim的基本使用

目录

1quartusII基本操作3

(1)新建工程3

(2)文件的组织形式7

(3)给工程添加一个文件7

(4)文件的编译10

2Modelsim的基本使用12

(1)测试平台testbench12

(2)在modelsim中编写测试文件和用户设计的模块12

(3)基本仿真流程14

1,creattheworkingdesignlibrary14

2,compilethedesignuints15

3,optimizethedesign16

4,loadthedesign17

5,runthesimulation18

(4)modelsim工程20

1,createanewproject20

2,addobjectstotheproject21

3,compilethedesign21

4,optimizefordesignvisibility22

5,loadthedesign22

(5)使用多个库进行仿真22

1,建立实验环境22

2,新建工程23

3,关联其他库24

3quartusII和modelsim的联合使用27

(1)ip核的使用27

(2)从quartusII调用modelsim进行仿真34

1,基本设置34

2,仿真39

(3)modelsim直接仿真quartusII的IP核。

39

1,脚本记录文件40

2,仿真需要的库51

3,关联库并仿真52

我所使用的是quartusIIverison11.1,使用的语言是verilogHDL,打开软件界面如下图所示:

1quartusII基本操作

(1)新建工程

选择file菜单下的newprojectwizard,会弹出如下图所示界面:

点击next,来到下面的页面:

第一栏要输入的是工程的存储路径,我输入的是:

G:

/code/verilogtest/20150411_basic_tool/t1

第二栏是工程的名字:

basic_tool

第三栏里会自动填入和工程名字一样的字符,默认工程中顶层模块的名字和工程名相同,顶层模块在工程的编写过程中是可以更改的,这个先不用管它。

需要注意的是路径必须是英文路径,文件夹和工程名字只能是英文字母或者”_”。

然后点击next进入如下

图所示的界面

这个界面的意思是如果在工程文件夹下已经有verilogHDL文件了,可以直接添加进来作为工程文件,先不用管它直接next进入如下图所示的界面:

刚才称呼的一系列“界面”换成“窗口”比较合适。

这个窗口的目的是选择期间型号。

先随便选一个就行,像我选的是cycloneII系列的ep2c8q208c8芯片。

然后点击next进入下图所示的窗口:

这个窗口的目的选择仿真工具和语言,也可以先不选。

点击NEXT进入下面窗口:

这个窗口是对刚刚所有操作的总结,便于检查哪些参数设定错了,到目前为止,工程目录下依然什么都没有:

但是当我们点击finish的时候,工程目录下出现了一个文件夹和两个文件如下图所示:

工程的基本配置信息就包含在里面,后缀.qpf的文件就是quartusprojectfile.以后可以通过双击该文件直接打开工程。

(2)文件的组织形式

新建工程之后,主界面左上角出现了如下图所示的窗口:

如果没有的话到view菜单下找找,问题不大。

它显示了工程的器件型号和层次结构。

在quartusII工程中,每一个verilogHDL文件都是一个模块(module),模块之间通过端口互联,可以是平行的关系,也可以构成上下级的层次关系,一般上层模块会在自己的文件中调用下层模块。

顶层模块处于这个层次的最顶端。

(3)给工程添加一个文件

在菜单栏依次单击file->new,会出现下图所示的窗口:

选择verilogHDLfile,然后点击OK。

会出现如下图所示的文件页面:

一般背景是白色的,我觉得刺眼就设成黑色的了,在tool->option选项下可以更改这些设置。

在编辑文件之前先把它保存在工程目录下是个好习惯。

我把文件命名为mul保存之后工程目录下出现了变化如下图:

在工程导航界面也多了一个文件如下图所示:

(如果熟练使用快捷键的话,从新建文件到保存文件可以不用鼠标,自己摸索吧)

接下来往文件里写入代码:

这是一个二选一多路器的模块,a,b是输入,sel是选择信号,c是输出。

Sel是高电平的时候b的状态会被输出,sel是低电平的时候,a的状态会被输出。

(4)文件的编译

上图中下面被按下的按钮主要检查当前文件是否有语法错误。

而它上面那个横三角一样的按钮是对整个工程进行编译。

对整个工程进行编译包括了对单个文件进行语法检查,或者应该这样理解:

在编译工程之前应当保证语法没错误,如果开发者忘记了进行语法检查而直接编译工程,quartusII会自动进行语法检查。

在你没按顺序操作的时候,quartusII会自动帮你补齐被漏掉的操作步骤。

此时的工程名还叫做basic_tool。

但是工程中没有basic_tool.v这个文件,编译整个工程的时候会报错:

找不到顶层文件。

此时应当把我们工程中唯一的.v文件mul.v设为顶层模块。

操作方法是右击工程导航中的mul文件,如下图所示:

编译成功之后到底我们的代码能做什么?

可以通过RTL视图来理解这个问题。

也就是寄存器传输级别的视图。

在task窗口下一次点击:

compiledesign->analysis&synthesis->netlistviewers->RTLviewer

得到如下图所示的视图:

我们刚刚的代码通过编译变成了下载所需的文件,这个文件被下载到FPGA中之后,FPGA芯片里就会有上图所示的逻辑门被搭建起来。

它正是二选一多路器的门级结构。

2Modelsim的基本使用

我所使用的modelsim版本是modelsimSE10.1a。

打开软件界面如下图所示:

(1)测试平台testbench

在仿真之前必须写一个测试文件,它也是一个模块。

是调用顶层模块的模块,但它并不属于工程的一部分,最终也不会被下载到芯片中。

它的作用就是产生激励信号输入给用户编写的模块,然后通过观察输出来分析设计是否符合要求。

既然不会被下载到芯片中,如何给激励信号,又如何产生输出?

modelsim会通过仿真完成这个过程。

(2)在modelsim中编写测试文件和用户设计的模块

File->new->source->Verilog

打开文件编辑界面如下图所示:

任意输入一个字符之后就可以CTRL+S保存,我把它保存在一个单独的文件夹中,命名mul.v

注意该软件也不支持中文路径。

接下来可以手动写入代码,我是直接粘贴了quartusII工程中的代码。

如下图所示:

 

同样的方式新建测试文件并编写,保存。

如下图所示:

(3)基本仿真流程

1,creattheworkingdesignlibrary

在开始仿真之前,我们要新建一个库并且把与仿真有关的文件编译到库中。

从菜单栏依次点击:

file->changedirectory

会出现创建新的库的对话框,默认库的名字是work,我们无需更改就用这个名字。

点击OK我们就有了anewlibrary叫做work

接下来会出现对话框让我们指定alogicalmappingtoit,

我把它指定到了上一步保存测试文件的位置。

如下图所示:

当你点击确定之后看一下相应文件夹下都出现了哪些新的东西,但是不要通过文本编辑器之类的工具随意更改这新信息。

同时在软件界面最下面的transcript窗口中也会出现相应记录:

再看library窗口下出现了一个空的work库:

2,compilethedesignuints

建好了库我们就把仿真相关的文件编译到库中。

依次点击:

compile->compile出现如下图所示的对话框:

如果compile无效,可能是有别的工程处于打开的状态,关闭它就好了。

选中要编译的文件,点击compile。

当编译结束后点击done。

从transcript窗口下的记录可以得知编译的结果。

编译结束之后work库出现了新的变化:

3,optimizethedesign

把下面的命令输入transcript窗口:

vopt+acctb-otb_opt

这个命令的含义和作用先不必深究。

注意空格,否则会报错。

然后点击键盘的enter键,命令开始执行。

优化结束之后,work库又有了新的变化:

4,loadthedesign

在transcript窗口输入命令vsimtb_opt,点击enter开始执行,如下图所示:

loadthedesign成功之后软件界面也发生变化:

5,runthesimulation

仿真调试的过程比较复杂,这里只列出几个简单步骤,以后会详细介绍。

上图中的M1代表模块mul的一个实体,在本例程中mul模块也只有一个实体。

鼠标右击出现菜单,左击addwave。

会把该实体的输入输出信号全部加入到仿真波形窗口如下图所示:

接下来点击上面的run图标(在点之前把run的时间设置为2000ns)

然后波形窗口就会仿真出从0s到2000ns之间四路信号的状态变化:

那个像黑色放大镜一样的图标(zoomfull)会把全部波形充满整个屏幕。

从波形观察,用户编写的模块mul实现了二选一多路器的功能。

(4)modelsim工程

既然新建一个work库就可以仿真,为什么还需要modelsim的工程呢?

因为modelsim工程可以更好地组织文件和保存仿真配置信息。

1,createanewproject

首先新建一个文件夹并把设计文件拷贝到该文件夹下:

首先changedirectory到刚刚新建的工程文件夹t3。

具体步骤参考(3)基本仿真流程1,creatingtheworkdesignlibrary

然后菜单栏依次点击file->new->project,出现如下图所示的对话框:

Projectname我命名为mul

Projectlocation自动指向了刚刚新建的工程文件夹t3.

默认的库名称依然用work。

最下面的modelsim.ini是初始化配置文件,这里不用深究。

然后点击ok;

工程文件夹下出现了变化:

后缀为.mpf就是modelsimprojectfile。

以后可以双击该文件直接打开modelsim并进入该工程。

2,addobjectstotheproject

同时软件界面出现了对话框,因为我们已经有写好的.v文件了,所以选择addingexistingfile

然后把mul.v和tb.v添加进去。

随后软件界面恩恩工程面板出现了刚才添加的文件:

后面的问号代表他们还没有通过编译。

3,compilethedesign

选择compileall,也可以分别选中每个文件单独编译。

如果找不到快捷图标就到菜单栏的compile中去找。

编译成功之后问号会变绿色的对号,如果没通过编译会显示红色的X号。

编译成功的文件会包含到work库中。

4,optimizefordesignvisibility

把下面的命令输入transcript窗口:

vopt+acctb-otb_opt

然后点击enter。

5,loadthedesign

在transcript窗口输入命令vsimtb_opt,点击enter开始执行。

(5)使用多个库进行仿真

1,建立实验环境

新建一个叫做resource_library的文件夹,把前面写好的mul.v文件复制进来。

在不同的路径下新建一个叫做testbench的文件夹,把前面写好的tb.v文件复制进来。

 

打开modelsim,按照前面介绍的建立库的方式建立一个叫做part_lib的库,并把mul.v编译到库中。

注意编译的时候默认的库是work,要改选成刚刚建立的part_lib.

2,新建工程

按照前面介绍过的方式新建工程,我们要建立一个只包含测试文件的工程。

注意两点:

1,在新建工程之前changederectory到包含测试文件的文件夹下。

2,下图中的copylibrarymapping要选中。

然后把tb.v加入工程中并编译。

3,关联其他库

(1)按照以前介绍过的方法:

vopt+acctb-otb_opt

结果报了一个错误:

这个错误是说没有找到mul.v文件。

按照上一节的方法把mul.v文件加入工程,然后编译到work库中当然可以解决问题。

但是在mul.v已经被编译到part_lib库的情况下,我们有另外一种办法。

在transcript窗口中输入下面的命令即可退出仿真:

quit-sim

(2)关联part_lib库:

1,选中simulate图标出现如下图所示的窗口:

在design标签下不勾选左下角的enableoptimization.

然后在library标签下点击searchlibrary窗口右侧的add图标。

在出现的对话框中点击browse。

然后从中选中part_lib的路径。

点击ok。

这样库的关联就完成了。

回到design标签下发现designunit是空的。

只需点击work库中的tb.v。

designunit就出现了,右下角的ok按钮也解除了禁用状态。

点击这个OK仿真就开始了。

 

3quartusII和modelsim的联合使用

(1)ip核的使用

在集成电路的可重用设计方法学中,IP核,全称知识产权核(英语:

intellectualpropertycore),是指某一方提供的、形式为逻辑单元、芯片设计的可重用模块。

QuartusII提供了功能丰富的免费ip核。

把常用通用的功能封装成IP核,开发过程中直接调用IP核非常方便。

我们将调用一个rom的ip核。

1,首先在quartusII中建立一个叫做rom的工程。

2,然后建立一个memeory文件,她是rom的初始化文件,记录的是rom的每个位置存储的值,我们通过编辑这个文件可以更改rom初始化的值。

A,新建文件,选择memeoryinitializationfile.

点击ok之后出现下图所示对话框,这里可以选择rom的大小和深度。

点击ok之后出现了文件,它的样子非常形象:

点击代表存储位置的方格即可编辑它存储的值。

编辑完成之后点击保存。

.mif文件出现在了工程中:

3,调用IP核产生rom模块。

菜单栏依次点击tool->megawizardplug_inmanager

出现如下图所示的对话框,使用ROM的IP核并不是这一章节的重点,所以不做详细介绍。

就按照图片一步步勾选一直点next就可以了。

 

上图中在左侧选择了我们要生成的ip核:

一个端口的rom

右侧给这个模块命名为ROM

上图给rom指定了初始化文件。

点击finish之后如果出现了这个对话框就点yes。

之后我们看到rom.v文件出现在了工程中,现在只需要能看懂它的端口就够了。

这个rom模块内部实现rom功能的代码被隐藏了。

4,写测试文件

(2)从quartusII调用modelsim进行仿真

因为上一节准备的工程中调用了IP核,它的功能代码被隐藏起来,我们无法把它的代码文件拷贝出来加入modelsim工程中,

通过从quartusII中调用modelsim的方法可以避开这个问题。

1,基本设置

A,在上一节的基础上,点击:

tool->option

在左侧选择EDATOOLOPTIONS,然后在modelsim那一栏填入调用modelsim的地址。

这个地址可以通过右击modelsim桌面图标,然后选择属性看到。

注意不要填入末尾的modelsim.exe。

B,菜单栏选择assignments->setting,然后在出现的对话框中选择EDATOOLSETTING下面的simulation:

在右侧nativelinksettings下激活comliletestbench,然后点击TestBenches按钮:

点击new按钮:

填入testbench的名字:

rom_tb.点击filename右侧三个省略号一样的按钮:

来到工程目录下选中写好的testbench文件,点击OPEN按钮:

点击ADD按钮:

然后点击OK:

继续点击OK:

 

点击APPLY,OK.

2,仿真

编译通过之后点击RTLsimulation图标(在tool->simulation菜单下也可以找到)

随即就会调用MODELSIM进行仿真。

要注意在这之前modelsim要处于关闭状态。

这个过程比较慢但是最终我们得到了仿真波形:

从波形来看,rom的功能正常,而且初始化成功。

Modelsim有一个版本是modelsim-altera,quartus调用它会快一些。

(3)modelsim直接仿真quartusII的IP核。

第二节的仿真方式显然不够灵活。

如果看过前面章节的介绍,已经可以猜到我们将通过关联IP核的库到work库的方法实现仿真。

这个方法网络上教程非常多,大体思路都是把220model.v、altera_mf.v、altera_primitives.v、cycloneii_atoms.v这几个库文件编译之后关联work库。

也可以把它们编译成modelsim的系统库。

具体方法在下面的网址里:

可能是由于版本问题,我把这几个库关联之后依然得不到想要的波形。

下面介绍一种方式,就是通过quartus调用modelsim的方法获得编译库的信息,然后就知道需要哪些库了。

在上一节quartus调用modelsim完成仿真之后,把transprint窗口的内容复制下来内容如下:

1,脚本记录文件

#ReadingD:

/ProgramFiles/modeltech_10.1a/tcl/vsim/pref.tcl

#//ModelSimSE10.1aFeb222012

#//

#//Copyright1991-2012MentorGraphicsCorporation

#//AllRightsReserved.

#//

#//THISWORKCONTAINSTRADESECRETANDPROPRIETARYINFORMATION

#//WHICHISTHEPROPERTYOFMENTORGRAPHICSCORPORATIONORITS

#//LICENSORSANDISSUBJECTTOLICENSETERMS.

#//

#dorom_run_msim_rtl_verilog.do

#if!

[fileisdirectoryverilog_libs]{

#filemkdirverilog_libs

#}

#

#vlibverilog_libs/altera_ver

#**Warning:

(vlib-34)Libraryalreadyexistsat"verilog_libs/altera_ver".

#

#vmapaltera_ver./verilog_libs/altera_ver

#CopyingD:

\ProgramFiles\modeltech_10.1a\win32/../modelsim.initomodelsim.ini

#Modifyingmodelsim.ini

#**Warning:

CopiedD:

\ProgramFiles\modeltech_10.1a\win32/../modelsim.initomodelsim.ini.

#Updatedmodelsim.ini.

#vlog-vlog01compat-workaltera_ver{d:

/altera/11.1/quartus/eda/sim_lib/altera_primitives.v}

#ModelTechnologyModelSimSEvlog10.1aCompiler2012.02Feb222012

#--Compilingmoduleglobal

#--Compilingmodulecarry

#--Compilingmodulecascade

#--Compilingmodulecarry_sum

#--Compilingmoduleexp

#--Compilingmodulesoft

#--Compilingmoduleopndrn

#--Compilingmodulerow_global

#--CompilingmoduleTRI

#--Compilingmodulelut_input

#--Compilingmodulelut_output

#--Compilingmodulelatch

#--Compilingmoduledlatch

#--Compilingmoduleprim_gdff

#--Compilingmoduledff

#--Compilingmoduledffe

#--Compilingmoduledffea

#--Compilingmoduledffeas

#--Compilingmoduleprim_gtff

#--Compilingmoduletff

#--Compilingmoduletffe

#--Compilingmoduleprim_gjkff

#--Compilingmodulejkff

#--Compilingmodulejkffe

#--Compilingmoduleprim_gsrff

#--Compilingmodulesrff

#--Compilingmodulesrffe

#--Compilingmoduleclklock

#--Compilingmodulealt_inbuf

#--Compilingmodulealt_outbuf

#--Compilingmodulealt_outbuf_tri

#--Compilingmodulealt_iobuf

#--Compilingm

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1