PLD开发软件QuartusII.docx
《PLD开发软件QuartusII.docx》由会员分享,可在线阅读,更多相关《PLD开发软件QuartusII.docx(29页珍藏版)》请在冰豆网上搜索。
![PLD开发软件QuartusII.docx](https://file1.bdocx.com/fileroot1/2023-2/7/6eab8975-ce59-46e7-9583-9db3da34d93f/6eab8975-ce59-46e7-9583-9db3da34d93f1.gif)
PLD开发软件QuartusII
PLD开发软件QuartusII
————————————————————————————————作者:
————————————————————————————————日期:
附录BPLD开发软件QuartusII8.0简介
B。
1概述
Altera公司的QuartusⅡ设计软件提供完整的多平台设计环境,能够全方位满足各种设计需要,除逻辑设计外,还为可编程单片系统(SOPC)提供全面的设计环境。
QuartusⅡ软件提供了FPGA和CPLD各设计阶段的解决方案.它集设计输入、综合、仿真、编程(配置)于一体,带有丰富的设计库,并有详细的联机帮助功能,且许多操作(如元件复制、删除和文件操作等)与Windows的操作方法完全一样。
此外,QuartusⅡ软件为设计流程的每个阶段提供QuartusⅡ图形用户界面、EDA工具界面以及命令行界面。
可以在整个流程中只使用这些界面中的一个,也可以在设计流程的不同阶段使用不同界面。
本附录将简要介绍Altera于2008年5月推出的QuartusII8。
0设计软件。
QuartusII8。
0支持全部CPLD和FPGA产品,包括40nmStratixIVFPGA和HardCopyASIC。
增强的高级布局布线算法、TimeQuest时序分析器和PowerPlay功耗技术结合StratixIVFPGA体系结构,大大缩短了编译时间、提高了逻辑利用率、降低了成本.即便是设计65nmStratixIIIFPGA,与7。
2版相比,8.0版的编译时间最多缩短了50%,平均缩短22%。
QuartusII8。
0的其他增强特性:
●扩展的SOPCBuilder:
完全支持渐进式编译和TimeQuest时序分析,提供更快的时序逼近和设计迭代,新增的JTAG和SPI桥接组件实现了与其他FPGA或主处理器的外部通信和调试.
●增强的TimeQuest时序分析:
改进了报告和交叉检测功能,更快地完成分析与调试。
●增强的FPGAI/O规划:
在引脚规划器(PinPlanner)中增加引脚交换功能,加速电路板开发.
●新的IP向导:
为成功地使用AlteraPCIExpress和DDR3IP提供专门的设计指南和建议。
●IPMegaCore库集成:
将IPMegaCore库集成在QuartusII软件中,使用户更方便地使用Altera的IP核。
新增的IP包括PCIExpressGen2硬核IP、5个新的视频和图像处理内核,并且对已有的许多IP进行了改进。
●DSPBuilder:
新的高级模块库提高了时序逼近的效果,用户不必手动进行流水线和折叠操作,就可将大量的数字信号处理(DSP)性能提高30%到50%。
B.2用QuartusⅡ进行设计的一般过程
用QuartusⅡ开发FPGA的流程如图B-1所示,分为设计输入、综合、适配(布局布线)、时序分析、仿真和下载六个步骤.
1.设计输入
输入方式有:
原理图(模块框图)、波形图、VHDL、VerilogHDL、AlteraHDL、网表等.QuartusⅡ支持层次化设计,可以将下层设计细节抽象成一个符号(Symbol),供上层设计使用。
QuartusⅡ提供了丰富的库资源,以提高设计的效率。
Primitives库提供了基本的逻辑元件。
Megafunctions库为参数化的模块库,具有很大的灵活性。
Others库提供了74系列器件。
此外,还可设计IP核。
2.编译
编译包括分析和综合模块(Analysis&Synthesis)、适配器(Fitter)、时序分析器(TimingAnalyzer)、编程数据汇编器(Assembler)。
分析和综合模块分析设计文件,建立工程数据库。
适配器对设计进行布局布线,使用由分析和综合步骤建立的数据库,将工程的逻辑和时序要求与器件的可用资源相匹配。
时序分析器计算给定设计在器件上的延时,并标注在网表文件中,进而完成对所设计的逻辑电路的时序分析与性能评估.编程数据汇编器生成编程文件,通过QuartusⅡ中的编程器(Programmer)可以对器件进行编程或配置。
图B—1用QuartusⅡ开发PLD的流程
3.仿真验证
通过仿真可以检查设计中的错误和问题.QuartusⅡ软件可以仿真整个设计,也可以仿真设计的任何部分。
可以指定工程中的任何设计实体为顶层设计实体,并仿真顶层实体及其所有附属设计实体。
仿真有两种方式:
功能仿真和时序仿真。
根据设计者所需的信息类型,既可以进行功能仿真以测试设计的逻辑功能,也可以进行时序仿真,针对目标器件验证设计的逻辑功能和最坏情况下的时序。
4.下载
经编译后生成的编程数据,可以通过QuartusII中的Programmer和下载电缆直接由PC机写入FPGA或CPLD。
常用的下载电缆有:
MasterBlaster、ByteBlasterMV、ByteBlasterⅡ、USB-Blaster和EthernetBlaster。
其中,MasterBlaster电缆既可用于串口也可用于USB口,ByteBlasterMV仅用于并口,两者功能相同。
ByteBlasterⅡ、USB-Blaster和EthernetBlaster电缆增加了对串行配置器件提供编程支持的功能。
ByteBlasterⅡ使用并口,USB—Blaster使用USB口,EthernetBlaster使用以太网口.
对FPGA而言,直接用PC机进行配置,属于被动串行配置方式。
实际上,在编译阶段QuartusⅡ还产生了专门用于FPGA主动配置所需的数据文件,将这些数据写入与FPGA配套的配置用PROM中,就可以用于FPGA的主动配置。
B。
3设计输入
QuartusⅡ所能接受的输入方式有:
原理图(*.bdf文件)、波形图(*.vwf文件)、VHDL(*。
vhd文件)、VerilogHDL(*。
v文件)、AlteraHDL(*.tdf文件)、符号图(*.sym文件)、EDIF网表(*。
edf文件)、VerilogQuartus映射文件(*.vqf)等.EDIF是一种标准的网表格式文件,因此EDIF网表输入方式可以接受来自许多第三方EDA软件(Synopsys、Viewlogic、MentorGraphics等)所生成的设计输入。
在上述众多的输入方式中,最常用的是原理图、HDL文本和层次化设计时要用的符号图.
1.指定工程名称
启动QuartusⅡ后首先出现的是图B-2所示的管理器窗口。
开始一项新设计的第一步是创建一个工程,以便管理属于该工程的数据和文件。
建立新工程的方法如下:
1)选择菜单“File”→“NewProjectWizard…”,打开“NewProjectWizard"对话框。
2)选择适当的驱动器和目录,然后键入工程名,点击“Next”。
3)选择需要添加进工程的文件以及需要的非默认库,点击“Next"。
4)选择目标器件,点击“Next”。
5)选择需要附加的EDA工具,如图B—3,然后点击“Next”.这一步主要是选用QuartusII之外的EDA工具,也可以选择菜单“Assignments”→“Settings”→“EDAToolSettings"进行设置。
6)点击“Finish”。
图B-2QuartusⅡ的主窗口(管理器窗口)
2.建立图形设计文件
第一步打开图形编辑器
1)在管理器窗口选择菜单“File”→“New。
。
。
"或直接在工具栏上点击
按钮,打开“New"列表框。
2)点开“DesignFiles”,选中“BlockDiagram/SchematicFile”项。
3)点击“OK”。
此时便会出现一个图形编辑窗口。
第二步输入元件和模块
1)在图形编辑窗口空白处双击鼠标左键或选择菜单“Edit"→“InsertSymbol…",也可直接在工具栏上点击
按钮,便打开了“Symbol”对话框,如图B—4所示。
2)选择适当的库及所需的元件(模块).
3)点击“OK”。
这样所选元件(模块)就会出现在编辑窗口中。
重复这一步,选择需要的所有模块。
相同的模块可以采用复制的方法产生。
用鼠标左键选中器件并按住左键拖动,可以将模块放到适当的位置.
图B—3添加EDA工具
图B—4“Symbol”对话框
第三步放置输入、输出引脚
输入、输出引脚的处理方法与元件一样。
1)打开“Symbol"对话框。
2)在“Name”框中键入input、output或bidir,分别代表输入、输出和双向I/O.
3)点击“OK”。
输入或输出引脚便会出现在编辑窗口中.重复这一步产生所有的输入和输出引脚,也可以通过复制的方法得到所有引脚。
还可以勾选图B—4中的“Repeat-insertmode"在编辑窗口中重复产生引脚(每点一次左键产生一个引脚,直到点右键在弹出菜单中点“Cancel"结束)。
模块也能以此方式重复输入。
电源和地与输入、输出引脚类似,也作为特殊元件,采用上述方法在“Name”框中键入VCC(电源)或GND(地),即可使它们出现在编辑窗口中。
第四步连线
将电路图中的两个端口相连的方法如下
1)将鼠标指向一个端口,鼠标箭头会自动变成十字“+”;
2)一直按住鼠标左键拖至另一端口;
3)放开左键,则会在两个端口间产生一根连线.
连线时若需要转弯,则在转折处松一下左键,再按住继续移动。
连线的属性通过点鼠标右键在弹出菜单中的管道“ConduitLine”(含多条信号线)、总线“BusLine”、信号线“NodeLine”中选择.
第五步输入/输出引脚和内部连线命名
输入/输出引脚命名的方法是在引脚的“PIN-NAME”位置双击鼠标左键,然后键入信号名。
内部连线的命名方法是:
选中连线,然后键入信号名。
总线的信号名一般用X[n-1.。
0]表示,其中的单个信号名为Xn-1、Xn—2、…、X0。
第六步保存文件
选择菜单“File"→“SaveAs。
。
.”或“Save”,或在工具栏点击
按钮,如是第一次保存,需输入文件名.
第七步建立一个缺省的符号文件
在层次化设计中,如果当前编辑的文件不是顶层文件,则往往需要为其产生一个符号,将其打包成一个模块,以便在上层电路设计时加以引用。
建立符号文件的方法是,选择菜单“File”→“Create/Update”→“CreateSymbolFilesForCurrentFile"即可.
图B—5是以原理图方式设计的一个BCD码模6计数器counter6。
主要器件是一个四位二进制计数器74161(Others库中的元件)和与非门(Primitives库中的元件),采用异步复位的方法将计数的规模改为了六进制。
图B-5用原理图描述的模6计数器
3.建立HDL设计文件
第一步打开文本编辑器
1)在管理器窗口中的选择菜单“File”→“New。
。
。
",或直接在工具栏上点击
按钮,打开“New”列表框.
2)点开“DesignFiles”,然后选择“AHDLFile"、“VerilogHDLFile”或“VHDLFile",点击“OK”.
第二步输入HDL源码
第三步保存文件
选择菜单“File"→“Save",或在工具栏点击
按钮,保存输入的HDL源码.
第四步建立一个缺省的符号文件
与由原理图生成符号文件的方法一样.但会自动地先对HDL文件进行编译,成功后才会生成符号文件。
图B-6是用VHDL描述的一个BCD码十进制计数器counter10。
cr为同步复位信号,低电平有效,oc为进位输出.
图B—6用VHDL描述的模10计数器
4.层次化设计
若设计项目较大,无法用一个文件把电路的设计细节全部描述出来的话,就必须采用层次化的设计方法。
HDL不仅可以在不同的层次上对设计进行描述,而且还可以方便地描述模块间的嵌套关系(通过元件引用)。
但在图形输入方式和原理图与HDL混合输入方式下进行层次化设计就必须借助符号(Symbol)来描述嵌套关系.
前面已分别用原理图方式和VHDL方式描述了一个六进制计数器和一个十进制计数器.现用这两个模块来设计一个模60计数器。
这就需要建立一个顶层的原理图文件。
方法同前,在编辑窗口中调入counter6和counter10。
然后,辅以一个非门,加上适当的连线构成一个模60计数器,如图B—7所示.十进制计数器counter10作BCD码个位,六进制计数器counter6作BCD码十位。
图B-7用层次化设计方法描述的模60计数器
B.4编译
QuartusⅡ编译器主要完成设计工程的检查和逻辑综合,将工程最终设计结果生成器件的下载文件,并为仿真和编程产生输出文件。
第一步打开编译器窗口
在管理器窗口中选择菜单“Processing”→“CompilerTool”,则出现编译器窗口,如图B-8。
从图中可以看出,编译包括分析与综合(Analysis&Synthesis)、适配器(Fitter)、汇编器(Assembler)和时序分析器(TimingAnalyzer)等。
图B-8QuartusⅡ编译器窗口
第二步选项设置
编译器有很多选项设置,但并不是每一项都需要用户去设置,有些设置编译器可自动选择(如器件选择、引脚分配等),而其他的设置往往有缺省值。
在管理器窗口中选菜单“Assignments”→“Settings...",或直接在工具栏中点击
按钮,打开“Settings"对话框,如图B-9。
图B-9“Settings”对话框
1)器件选择
在“Settings”对话框左侧“Category”栏内选择“Device”,然后选择器件的系列和型号,型号可设为“Auto”,编译器自动选择。
如果不选择器件的系列和型号,编译器会自动选择。
器件的选择也可以在建立工程时进行。
对于前述的计数器,选择Cyclone系列的EP1C3T100C6器件作为后续综合与仿真的目标器件。
2)编译过程设置
在“Settings”对话框左侧“Category”栏内选择“CompilationProcessSettings",在“CompilationProcessSettings”页面根据需要选择相应的选项.例如,若需要使重编译的速度加快,可以打开“UseSmartcompilation”;若编译的时候运行编程数据汇编器,打开“RunAssemblerduringcompilation"。
3)分析和综合设置
在“Settings”对话框左侧“Category”栏内选择“Analysis&SynthesisSettings”,在“Analysis&SynthesisSettings”页面可以指定编译器应该执行速度优化(Speed)、面积优化(Area),还是执行平衡优化(Balanced).平衡优化折中考虑速度和资源占用情况.点击“MoreSettings…”按钮,可以设置更多影响分析和综合的选项,如删除重复或冗余逻辑、状态机编码方式等。
此外,可以选择VHDL的版本(1987或1993)、VerilogHDL的版本(1995、2001或SystemVerilog—2005)。
在默认情况下,使用VHDL-1993和Verilog-2001。
还可以设置如下选项实现综合网表优化(“SynthesisNetlistOptimizations”)
●对所见即所得WYSIWYG基本单元再综合;
●进行逻辑门级寄存器再定时,允许在组合逻辑间移动寄存器以平衡时序。
●允许门级寄存器再定时后还可以进一步为平衡Tco/Tsu与Fmax对寄存器再定时。
4)适配设置
在“Settings”对话框左侧“Category”栏内选择“FitterSettings”,在“FitterSettings”页面中可以对时序驱动编译(Timing—drivencompilation)和适配器效果(Fittereffort)进行设置.
需指出,选择“FitterSettings"下“PhysicalSynthesisOptimization”,可以在适配期间实现:
●对组合逻辑进行物理综合优化(Performphysicalsynthesisforcombinationallogic)
●自动插入异步清零或置位信号(Performautomaticasynchronoussignalpipeline)
●使用寄存器复制对寄存器进行物理综合优化(Performregisterduplication)
●使用寄存器再定时对寄存器进行物理综合优化(Performregisterretiming)
5)器件引脚分配
在“ComplierTool”编译器窗口中点击“Analysis&Synthesis"下
按钮,或直接在工具栏中点击
按钮,完成设计的分析和综合,再进行引脚分配.引脚分配有多种方法:
●选菜单“Assignments"→“Pins”或“PinPlanner”项,或直接点击工具栏
按钮,在底层编辑窗口中分配引脚.通过拖拽信号名到引脚、在引脚域选择或直接输入引脚号等方式给输入、输出信号分配引脚,如图B—10所示。
●选菜单“Assignments”→“AssignmentEditor",或直接点击工具栏
按钮,然后在“To”域键入输入或输出信号名、在“AssignmentName”域选择“Location”并在“Value”域输入引脚号,如图B—11所示.
●在图B—7的图形编辑窗口中,选中某个输入或输出信号,按鼠标右键,在弹出菜单中选“Locate”→“LocateinPinPlanner”或“LocateinAssignmentEditor”,然后用类似前二种方法指定引脚号。
●由编译器自动分配。
若未选择具体的器件系列和型号,则只能采用这种方法。
引脚分配好后,可选择菜单“Processing"→“Start"→“StartI/OAssignmentAnalysis”,对I/O分配结果进行分析。
图B—10通过“PinPlanner”分配引脚
图B—11通过“AssignmentEditor”分配引脚
第三步启动编译器
编译器的各模块可以独立运行,也可以依次完整的运行(称为全编译).
选择菜单“Processing"→“StartCompilation",或直接点击工具栏
按钮,或在“ComplierTool”编译器窗口点击“Start”,启动全编译过程.编译结果可在编译报告中查看。
B.5仿真验证
仿真分功能仿真和时序仿真两种.仿真过程分三步.首先要建立波形文件,确定需要观察的信号,设计输入波形,设定一些时间和显示参数.其次才是运行仿真程序。
最后是根据仿真结果(波形)分析电路功能正确与否。
1.建立波形文件
第一步打开波形图编辑器
1)在管理器窗口中选择菜单“File”→“New.。
。
"或直接在工具栏上点击
按钮,打开“New”列表框。
2)点开“Verification/DebuggingFiles”,选中“VectorWaveformFile”项,按“OK"。
此时便会出现一个波形图编辑窗口。
第二步设定时间参数
1)选择菜单“Edit"→“EndTime..。
”项,键入仿真结束时间,按“OK”。
2)选择菜单“Edit”→“GridSize.。
。
”项,键入显示网格间距的时间,按“OK”。
第三步确定需观察的信号
1)在“Edit”菜单中或在波形图编辑窗口左侧“Name”栏空白处,单击鼠标右键选择“Insert"→“InsertNodeorBus。
。
。
”项,打开“InsertNodeorBus…”对话框。
2)点击“NodeFinder…”按钮,打开“NodeFinder”对话框.在“Filter”下拉框中选择信号类别,如选“Pins:
all",表示选择所有引脚(信号)。
3)点“List”按钮,将所选类别的所有信号均列于“NodesFound”框中。
4)从“NodesFound"框中选择信号,然后按“≥”箭头,使所选信号名进入“SelectedNodes”框。
如按“>〉”箭头,则“NodesFound”框中所有信号全部进入“SelectedNodes"框。
5)按“OK”,返回“InsertNodeorBus…”对话框,再点击该框中“OK”,所选信号将出现在波形图编辑窗口中。
6)根据需要编辑输入波形。
编辑窗口左侧的按钮(见图B—12)由上至下依次为:
取波形窗口
、选择工具
、文本工具
、波形编辑工具
、缩放
(点左键放大、点右键缩小)、全屏
、查找
、替换
、未初始化
、强制未知
、强0
、强1
、高阻
、设为相反逻辑
、设置时钟波形
、设置计数值
等。
7)将波形存盘。
选择菜单“File”→“SaveAs.。
.”或“Save”,或在工具栏点击
按钮,如是第一次保存,需输入文件名。
2.运行仿真程序
1)在管理器窗口中选择菜单“Assignments”→“Settings…”,或直接在工具栏中点击
按钮,出现“Settings"对话框。
2)在“Settings"对话框左侧“Category”栏内选“SimulatorSettings”,对仿真进行设置,包括仿真的模式、仿真的输入文件以及仿真结果是否复盖原文件等,然后点击“OK”.
3)要进行功能仿真,则仿真开始前在管理器窗口中选择菜单“Processing”→“GenerateFunctionSimulationNetlist”生成功能仿真网表;若进行时序仿真,则仿真前必须对设计进行编译,产生时序仿真的网表文件。
4)在管理器窗口中选择菜单“Processing”→“StartSimulation”或直接点击工具栏
按钮,开始仿真。
5)仿真结束后,在仿真器报告窗口中将显示出仿真结果(波形)。
3.时序仿真结果分析
以图B-7所示的模60计数器为例,设置GradSize=10ns,EndTime=2us,cp周期为20ns,则仿真结果如图B—12所示.图中只给出了整个仿真波形的一段。
由图中1。
2us的时间标尺处可见,该电路确实实现了模60计数(59→00),但可从图中清楚地看出三个现象。
一是q0的状态变化相对于cp上升沿有一个延迟,这是由计数器电路的延时造成的;二是q1的状态变化相对于q0又有一个延迟,这是由于个位计数器与十位计数器之间采用异步扩展方法造成,由此说明异步扩展会影响电路的工作速度;三是计数器状态由59→00的过程中q1出现了毛刺,这是由于十位计数器使用了74161的异步复位功能造成的,由此说明异步复位的设计方法会引起毛刺。
图B-12模60计数器的时序仿真波形
关于十位的模6计数器因使用异步复位而出现的毛刺,可以通过对图B-5电路单独仿真看得更为清楚。
图B—12是以counter60作为顶层实体进行编译后仿真得到的结果。
QuartusII中可以在不改变工程的情况下,指定工程中的任何设计实体为顶层设计实体,并仿真顶层实体及其所有附属设计实体。
方法是打开“Settings”对话框,在左侧“Category”栏内选“General”,然后就可以选择新的顶层设计实体。
选择counter6作为顶层实体,进行编译后,新建波形文件并将其指定为仿真输入文件,然后运行仿真器,就可以得到图B-13的结果。
当计数器状态由0101变为01