EDA技术及应用-基于FPGA的电子系统设计:Quartus II集成开发工具_第1页
EDA技术及应用-基于FPGA的电子系统设计:Quartus II集成开发工具_第2页
EDA技术及应用-基于FPGA的电子系统设计:Quartus II集成开发工具_第3页
EDA技术及应用-基于FPGA的电子系统设计:Quartus II集成开发工具_第4页
EDA技术及应用-基于FPGA的电子系统设计:Quartus II集成开发工具_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

QuartusII集成开发工具QuartusII是Altera公司提供的EDA设计工具。作为当今业界最优秀的EDA设计工具之一,该工具软件为Altera公司的器件能达到最高性能和集成度提供了保证。QuartusII系统提供了一种与结构无关的设计环境,它使得Altera通用可编程逻辑器件的设计者能方便地进行设计输入、快速处理和器件编程。QuartusII是Altera的FPGA/CPLD集成开发软件,具有完善的可视化设计环境,并具有标准的EDA工具接口,基于QuartusII进行EDA设计开发的流程图如图1所示,包括以下步骤。

(1)设计输入:包括原理图输入、HDL文本输入、EDIF网表输入及波形输入等几种方式。

(2)编译:先根据设计要求设定编译方式和编译策略,如器件的选择、逻辑综合方式的选择等。然后根据设定的参数和策略,对设计项目进行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真和编程使用。

(3)仿真:包括功能仿真、时序仿真和定时分析,用以验证设计项目的逻辑功能和时序关系是否正确。

(4)编程与验证:用得到的编程文件通过编程电缆配置PLD,加入实际激励,进行在线测试。

在设计过程中,如果出现错误,则需要重新回到设计输入阶段,在改正错误或调整电路后重复上述过程。基于QuartusII进行EDA设计开发的流程

4.1QuartusII软件的图形用户界面(GUI)QuartusII软件界面

在QuartusII软件界面,有6个窗口,可以通过在菜单View->UtilityWindows中进行显示和隐藏切换。1.ProjectNavigator窗口Navigator窗口包括三个可以相互切换的标签,其中“Hierarchy”标签提供了逻辑单元、寄存器以及存储器位资源使用等信息;“Files”和“DesignUnits”标签提供了工程文件和设计单元的列表。2.Status窗口Status窗口显示编译各阶段的进度和逝去时间。3.Finder窗口NodeFinder窗口允许设计者查看存储在工程数据库中的任何节点名。4.Messages窗口Messages窗口提供了详细的编译报告、警告和错误信息。设计者可以根据某个消息定位到QuartusII软件不同窗口中的一个节点。5.ChangeManager窗口ChangeManager窗口可以跟踪在ChipEditor中对设计文件进行的变更消息。6.TclConsole窗口TclConsole窗口在图形用户界面中提供了一个可以输入Tcl命令或执行Tcl脚本文件的控制台。4.2基于QuartusII软件进行EDA设计开发流程①双击桌面上

QuartusII9.1的图标,启动

QuartusII9.1软件

②新建工程

③设置不用的引脚

④输入设计文件⑤全编译

⑥指定芯片的管脚

⑦全编译

⑧仿真

下载硬件测试1、新建项目QuartusII只对项目进行编译、综合、下载编程。创建项目中主要完成以下步骤:

(1)生成一个新的项目文件;

(2)将设计文件加入新项目;

(3)指定项目所针对的目标器件;

(4)指定第三方EDA软件。

注意:(1)设计文件如果在生成项目文件时没有,需要在后续工作中完成。(2)可以根据需要适当的指定第三方EDA软件,没有要求可使用QuartusII自带工具。(1)点击“Next”进入项目创建步骤一,生成项目存放路径、项目名、顶层实体名,如图所示。注意:工程名和顶层实体名必须相同。生成项目路径、项目名和顶层实体名添加文件2、设置不用的引脚

选择菜单“Assignments”->“Settings”,如图所示将不使用的引脚设为三态输入,以防带电烧毁3、新建文件

选择菜单“File”->“New,如下图所示,在弹出的对话框中,设计人员可以选择需要创建的文件类型,常用的文件创建类型有原理图文件(BlockDiagrams/Schematics),硬件描述语言文件(如Veriloghdl,VHDL,AHDL等),还有“OtherFiles”标签下的矢量波形文件(VectorWaveFormFile)。下面以4位全加器为例,先介绍原理图设计方式。1、原理图设计方式实现4位全加器(1)1位半加器设计

选择“BlockDiagrams/SchematicsFile”后,单击OK按钮进入编辑界面,如图所示。

在图形编辑工作区域双击鼠标左键或单击符号工具,弹出元器件符号选择对话框,如下图所示。宏功能函数(megafunctions)库中包含很多种可直接使用的参数化模块,基本单元符号(Primitives)库中包含所有Altera公司的基本单元,其他库(Others)中包含与MAX+PLUSII兼容的所有中规模器件,如常用的74系列符号。

在“Primitives”中,选择“logic”子库中的异或门(xor)和两输入与门(and2),两个输入引脚和两个输出引脚,相互连接构成1位半加器,如下图所示。1位半加器原理图

将设计好的半加器原理图保存于已建的项目目录F:\my_project\adder4下,文件名为half_adder.bdf。

在打开半加器原理图的情况下,选择菜单File→Create/Update→CerateSymbolFileForCurrentFile项,即可将当前文件half_adder.bdf变成一个元件模块符号存盘,等待在1位全加器的设计中调用。如下图所示。(2)1位全加器设计

选择菜单File->New,在弹出的对话框中选择BlockDiagrams/SchematicsFile类型,打开一个新的原理图编辑窗口。在编辑窗口双击鼠标,弹出Symbol窗口,图中,除了QuartusII软件自带的元器件外,上步中生成的half_adder半加器模块也在可调用库元件列表中。

在原理图中调入半加器、或门(or2)、输入引脚、输出引脚,将这些元件进行连接,构成1位全加器,如图所示,将设计好的全加器保存为full_adder.bdf,保存在项目目录F:\my_project\adder4下。

在打开1位全加器原理图的情况下,选择菜单File→Create/Update→CerateSymbolFileForCurrentFile项,即可将当前文件full_adder.bdf变成一个元件模块符号存盘,等待在4位全加器的设计中调用。如图所示。(3)4位全加器原理图设计

选择菜单File->New,在弹出的对话框中选择BlockDiagrams/SchematicsFile类型,打开一个新的原理图编辑窗口。在编辑窗口双击鼠标,弹出Symbol窗口,除了QuartusII软件自带的元器件外,上步中生成的full_adder全加器模块也在可调用库元件列表中。

在原理图中调入4个1位全加器、输入引脚、输出引脚,将这些元件进行连接,构成4位全加器,如图所示,将设计好的全加器保存为adder4.bdf,保存在项目目录F:\my_project\adder4下。4、设计项目的编译QuartusII编译器主要完成设计项目的检查和逻辑综合,将项目最终设计结果生成器件的下载文件,并为模拟和编程产生输出文件。QuartusII编译器的典型工作流程如图所示。

在QuartusII软件中选择菜单Processing->ComplierTool项,则出现QuartusII编译窗口,如图所示,图中标出了全编译过程中各个模块的功能。下表给出了QuartusII编译过程中各个功能模块的简单功能描述,同时给出了对应功能模块的可执行命令文件。启动编译器QuartusII软件的编译器包括多个独立的模块,如图所示,各模块可以单独运行,也可以选择菜单Processing->StartCompilation或者工具栏启动全译过程。

对于4位全加器,通过3个原理图设计文件实现,分别为half_adder.bdf,full_adder.bdf,adder4.bdf,并且都放在项目目录F:\my_project\adder4下,由于QuartusII软件的编译器是对项目进行编译,项目代表了一个电路系统实体,所以顶层实体名必须和项目名一致,顶层实体是由顶层文件实现的,所以顶层实体名和顶层文件名也要一致,在上述三个文件中,哪个是顶层文件?哪些个又是子文件呢?很明显,在通过原理图设计过程中,4位全加器设计文件(adder4.bdf)属于顶层文件,该文件中调用了4个1位全加器(full_adder.bdf),1位全加器又调用了1位半加器(half_adder.bdf),

在项目导航视图窗口,“Files”标签下右击adder4.bdf,选择“SetasTop-levelEntity”,这时“Hierarchy”标签下显示的顶层实体名就和该顶层文件名一致。

单击工具栏

进行全编译,在编译过程中,状态窗口和消息窗口会自动显示出来。在状态窗口中将显示全编译过程中各个模块和整个编译进程的进度以及所用的时间,在消息窗口中将显示编译过程中的信息,如图所示。最后的编译结果在编译报告中显示出来,整个编译过程在后台完成。状态窗口报告窗口消息窗口

在编译过程中如果出现设计上的错误,可以在消息窗口中选择错误信息,在错误信息上双击鼠标左键,或点击鼠标右键,从弹出的右键菜单中选择“LocateinDesignFile”,可以在设计文件中定位错误所在的地方,在右键菜单中选择“Help”,可以查看错误信息的帮助,修改所有错误,直到全编译成功为止。

如果要查看综合结果,可以选择Tools->NetlistViewers->RTLViewer;如果要查看Fitter(适配)结果,可以选择Assignments->TimingClosureFloorplan或Chipplanner。5、设计项目的仿真验证

完成了设计项目的输入、综合以及布局布线等步骤后,还需要使用EDA仿真工具或QuartusII仿真器进行设计的功能与时序仿真。功能仿真只检验设计项目的逻辑功能,时序仿真则将延时信息也考虑在内,更符合系统的实际工作情况。仿真时,应设定仿真类型(功能仿真或时序仿真)和矢量激励源等。矢量激励源可以是矢量波形文件(*.vwf,VectorWaveformFile)、文本矢量文件(*.vec,VectorFile)、矢量表输出文件(*.tbl)或功率输入文件(*.pwf)等,也可以通过Tcl脚本窗口来输入矢量激励源。其中,*.vwf文件是QuartusII中最主要的波形文件。下面着重介绍以矢量波形文件(*.vwf)作为激励源进行仿真的步骤。打开波形编辑器

选择菜单File->New,在New窗口中选择OtherFiles标签下的VectorWaveformFile选项,单击OK按钮,即出现如图所示的波形编辑窗口。输入信号节点

在波形编辑窗口中,分左、中、右三栏,左栏为波形工具栏,给激励源设置波形,中间一栏显示信号节点名和光标值,右栏为波形显示栏。在中间一栏空白处双击鼠标左键,弹出信号节点查找框,如图所示。

点击NodeFinder按钮,弹出“NodeFinder”界面,从“Filter”列表中选择“Pins:all”,在“Named”栏中键入“*”,然后单击List按钮,则在“NodesFound”栏将列出设计中的所有节点名,可以通过移进/移出按钮,对指定的节点号进行操作,移进/移出“SelectedNotes”,如图所示。编辑输入信号波形

点击“OK”按钮,进入波形编辑窗口,通过波形编辑工具条,编辑各输入信号的激励波形,如图所示。选中输入端口号,利用工具条上相应的工具给输入信号赋值。工具条上相应工具作用如图所示。工具条上相应工具作用如图所示。QuartusII软件的波形编辑器默认的仿真结束时间为1μs,通过选择“Edit/EndTime”命令,在“Time”框内修改仿真结束时间,单位可以是s、ms、μs、ns、ps。波形编辑工具:可以改变波形的高低电平值。缩放工具:单击该工具是放大状态,shift和该工具一起使用是缩小状态。计数值工具:给信号设置计数起始值,终止值,值的进制表示方式,起始时间,终止时间,步长值等。时钟工具:该工具主要用于时序电路里给时钟信号设置仿真起始时间,终止时间,周期,位移量,占空比等。在设置时钟之前,一般需要在“Edit/EndTime”菜单下先设定仿真结束时间。任意固定值工具:单击该工具,可以给信号设置不同时间段的信号值。任意值工具:单击该工具,信号波形由QuartusII软件的波形编辑器自动生成随机波形。以4位全加器仿真为例,给输入信号a,b,cin分别设置波形,步骤如下,设置波形如图所示。选择“Edit/EndTime”命令,设置仿真结束时间为40ns;选择信号a,点击任意固定值工具,10ns区间a取值为5,10ns-20ns区间取值为10,20ns-30ns区间取值为13。选择信号b,点击计数值工具,得到b在40ns区间的计数值。选择信号cin,单击波形编辑工具,在区间10ns-30ns之间拖动,电平变为高电平。

波形设置完成后,保存该矢量波形文件为adder4.vwf,保存路径在项目目录F:\my_project\adder4下。仿真器参数设置

选择Processing—>SimulatorTool项,在弹出的对话框中选择仿真模式,仿真模式有功能仿真(Functional)和时序仿真(Timing)两种。下面分别进行这两种仿真,观察下他们之间的区别。

如图所示,SimulationMode选择Functional,Simulationinput选择adder4.vwf,点击GenerateFunctionalSimulationNetlist按钮(在功能仿真之前,要先生成功能仿真所需的网表文件),网表文件生成成功后,点击start按钮,开始进行仿真,打开Report按钮,查看仿真结果。观察仿真结果

4位全加器功能仿真结果如图1所示,时序仿真结果如图2所示。从图中可以看出,功能仿真是没有任何延时信息的,只是逻辑功能的验证,而时序仿真图,不同的输入数据得到的输出结果都会发生延时,并且输出信号sum发生了毛刺现象,这是因为输入信号a,b,cin,通过不同的门结构后,门延迟和线延迟不一样所致。一般组合电路时序仿真时容易出现竞争冒险,即所谓的毛刺现象。图1功能仿真图2时序仿真引脚分配

在前面选择好一个合适的目标器件,完成设计的分析综合过程,得到工程的数据库文件以后,需要对设计中的输入/输出引脚指定具体的器件引脚号,指定引脚号称为引脚分配或引脚锁定。引脚分配的操作步骤如下:(1)选择菜单Assignments->Pins或Assignments->PinPlanner命令,弹出如图所示的引脚分配界面。

位于引脚分配界面的图像描述了所选择芯片封装的顶视图。在该窗口中,尽管有大量信息是可用的,但是对于引脚分配,没有必要查看这些细节信息。

位于引脚分配界面中下方表格列出了设计中所用到的所有输入、输出引脚。用鼠标左键双击“Location”单元,从下拉框中可以指定目标器件的引脚号。

完成所有设计中引脚的指定后,要重新对项目进行编译。器件编程下载

使用QuartusII软件成功编译设计工程之后,就可以对Altera器件进行编程或配置。QuartusII编译器的Assembler模块自动将适配过程的器件、逻辑单元和引脚分配信息转换为器件的编程图像,并将这些图像以目标器件的编程器堆箱文件(.pof)或SRAM对象文件(.sof)的形式保存为编程文件。QuartusII软件的编程器(Programmer)使用该文件对器件进行编程配置。Altera编程器硬件包括MasterBlaster、ByteBlasterMV、ByteBlasterII、USB-Blaster和EthernetBlaster下载电缆。MasterBlaster电缆既可以用于串口也可以用于USB口,ByteBlasterMV电缆用于并口,USB-Blaster电缆使用USB口,EthernetBlaster电缆使用Ethernet网口,ByteBlasterII电缆使用并口。

对器件编程按一下步骤进行。选择菜单Tools->Programmer命令,打开下载窗口,如图所示。练习题:

基于QuartusII软件,用D触发器设计一个2分频电路,并做波形仿真。在此基础上,设计一个4分频和8分频电路,做波形仿真。参考设计如下:图1所示为2分频电路图,其功能仿真波形如图2所示。4.3基于宏功能模块的设计

Megafunction库是Altera提供的参数化模块库。从功能上看,可以把Megafunction库中的元器件分为:算术运算模块(arithmetic)逻辑门模块(gates)储存模块(storage)IO模块(I/O)4.3.1Megafunctions1.算术运算模块库(arithmetic)参数化除法器(lpm_divide)应用举例8位有符号除法器电路参数化除法器(lpm_divide)应用举例生成文件类型和文件名设置输入数据线宽度及类型设置流水线、优化、余数表示方式设置生成文件8位有符号除法器电路余数始终以正数形式表示的功能仿真波形余数非始终以正数形式表示的功能仿真波形2.逻辑门库(gates)补码转换为幅度码的电路lpm_constant(参数化常量模块)应用举例lpm_constant参数设置转换电路波形仿真

参数化锁相环宏模块altpll以输入时钟信号作为参考信号实现锁相,从而输出若干个同步倍频或者分频的片内时钟信号。与直接来自片外的时钟相比,片内时钟可以减少时钟延迟,减小片外干扰,还可改善时钟的建立时间和保持时间,是系统稳定工作的保证。不同系列的芯片对锁相环的支持程度不同,但是基本的参数设置大致相同,下面便举例说明altpll的应用。实验要求:基于QuartusⅡ软件,用altpll锁相环模块实现倍频和分频并仿真。3.I/O模块库(I/O)(1)输入altpll宏功能模块选择芯片和设置参考时钟

锁相环控制信号设置

输入时钟设置

(2)编译和仿真锁相环电路功能仿真波形

ROM(ReadOnlyMemory,只读存储器)是存储器的一种,利用FPGA可以实现ROM的功能,但其不是真正意义上的ROM,因为FPGA器件在掉电后,其内部的所有信息都会丢失,再次工作时需要重新配置。QuartusII提供的参数化ROM是lpm_rom,下面用一个乘法器的例子来说明它的使用方法,这个例子使用lpm_rom构成一个4位×4位的无符号数乘法器,利用查表方法完成乘法功能。4.存储器库(storge)用rom模块实现4×4无符号数乘法器实验要求:基于QuartusⅡ,用rom模块采取查表方式实现4×4无符号数乘法器并仿真。数据线、地址线宽度设置

控制端口设置

添加.mif文件mif文件的生成。ROM存储器的内容存储在*.mif文件中(本例中取名为mult_rom.mif),本例中生成*.mif文件的更好的方法是编写MATLAB程序来完成此项任务,MATLAB程序如下:fid=fopen(‘D:\mult_rom.mif’,’w’);fprintf(fid,’WIDTH=8;\n’);fprintf(fid,’DEPTH=256;\n\n’);fprintf(fid,’ADDRESS_RADIX=UNS;\n’);fprintf(fid,’DATA_RADIX=UNS;\N\N’);fprintf(fid,’CONTENTBEGIN\n’);fori=0:15forj=0:15fprintf(fid,’%d:%d;\n’,i*16+j,i*j);endendfprintf(fid,’END;\n’);fclose(fid);在MATALB环境下运行上面的程序,即在D盘根目录下生成mult_rom.mif文件。

如下图所示是基于ROM实现的4位×4位的无符号数乘法器电路图,其参数设置为:LPM_WIDTH=8LPM_WIDTHAD=8LPM_FILE=mult_rom.mif仿真结果

Maxplus2库主要由74系列数字集成电路组成,包括时序电路宏模块和运算电路宏模块两大类,其中时序电路宏模块包括触发器、锁存器、计数器、分频器、多路复用器和移位寄存器,运算电路宏模块包括逻辑预算模块、加法器、减法器、乘法器、绝对值运算器、数值比较器、编译码器和奇偶校验器。对于这些小规模的集成电路,在数字电路课程中有详细的介绍。他们的调入方法和Megafunction库中的宏模块是一样的,只是端口和参数无法设置。4.3.2Maxplus2库计数器7490设计举例

模10计数器74LS90是异步二-五-十进制加法计数器,它既可以作二进制计数器,又可以作五进制和十进制加法计数器。74LS90由四级主从JK触发器组成,因而在时钟脉冲上跳时计数CLRA(R01)CLRB(R02)SET9A(S91)SET9B(S92)QA(Q0)QB(Q1)QC(Q2)QD(Q3)110X000011X10000XX1110010X0X计数X0X00XX0X00X八进制显示4.3.3Primitives库Primitives库主要由5类模块组成,分别是缓冲器(buffer)、引脚(pin)、存储单元(storge)、逻辑门(logic)和其他功能(other)模块。1.缓冲器库序号宏模块名称功能描述序号宏模块名称功能描述1alt_inbuf输入缓冲器9exp扩展缓冲器2alt_iobuf输入/输出缓冲器10global全局信号缓冲器3alt_outbuf输出缓冲器11lcell逻辑单元分配缓冲器4alt_outbuf_tri三态输出缓冲器12opndm开漏缓冲器5carry双端口缓冲器13row_global行全局信号缓冲器6carry_sun进位缓冲器14soft软缓冲器7cascade级联缓冲器15tri三态缓冲器8clkclock参数化锁相环16wire线段缓冲器2.引脚库序号宏模块名称功能描述序号宏模块名称功能描述1bidir双向端口3output输出端口2input输入端口

3.存储单元库序号宏模块名称功能描述1diffD触发器2dffe带时钟使能的D触发器3dffea带时钟使能和异步置数的D触发器4dffeas带时钟使能和异步/同步置数的D触发器5dlatch带使能端的D触发器6jkffJK触发器7jkffe带时钟使能的JK触发器8latch锁存器9srffSR触发器10srffe带时钟使能的SR触发器11tffT触发器12tff带时钟使能的T触发器4.逻辑门库序号宏模块名称功能描述序号宏模块名称功能描述1and与门7nor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论