ALTERA可编程器件的开发软件QUARTUSⅡAltera公司的QuartusⅡ设计软件提供完整的多平台设计环境,能够全方位满足各种设计需要,除逻辑设计外,还为可编程单片系统(SOPC)提供全面的设计环境。QuartusⅡ软件提供了FPGA和CPLD各设计阶段的解决方案。它集设计输入、综合、仿真、编程(配置)于一体,带有丰富的设计库,并有详细的联机帮助功能,且许多操作(如元件复制、删除和文件操作等)与Windows的操作方法完全一样。QuartusⅡ软件为设计流程的每个阶段提供QuartusⅡ图形用户界面、EDA工具界面以及命令行界面。可以在整个流程中只使用这些界面中的一个,也可以在设计流程的不同阶段使用不同界面。用QUARTUSⅡ进行设计的一般过程设计输入调试仿真时序分析适配(布局、布线)综合工程变动管理时序逼近编程、配置功耗分析设计输入输入方式有:原理图(模块框图)、波形图、VHDL、VerilogHDL、AlteraHDL、网表等。QuartusⅡ支持层次化设计,可以将下层设计细节抽象成一个符号(Symbol),供上层设计使用。QuartusⅡ提供了丰富的库资源,以提高设计的效率。Primitives库提供了基本的逻辑元件。Megafunctions库为参数化的模块库,具有很大的灵活性。Others库提供了74系列器件。此外,还可设计IP核。编译编译包括分析和综合模块(Analysis&Synthesis)、适配器(Fitter)、时序分析器(TimingAnalyzer)、编程数据汇编器(Assembler)。分析和综合模块分析设计文件,建立工程数据库。适配器对设计进行布局布线,使用由分析和综合步骤建立的数据库,将工程的逻辑和时序要求与器件的可用资源相匹配。时序分析器计算给定设计在器件上的延时,并标注在网表文件中,进而完成对所设计的逻辑电路的时序分析与性能评估。编程数据汇编器生成编程文件,通过QuartusⅡ中的编程器(Programmer)可以对器件进行编程或配置。仿真验证通过仿真可以检查设计中的错误和问题。QuartusⅡ软件可以仿真整个设计,也可以仿真设计的任何部分。可以指定工程中的任何设计实体为顶层设计实体,并仿真顶层实体及其所有附属设计实体。仿真有两种方式:功能仿真和时序仿真。根据设计者所需的信息类型,既可以进行功能仿真以测试设计的逻辑功能,也可以进行时序仿真,针对目标器件验证设计的逻辑功能和最坏情况下的时序。下载经编译后生成的编程数据,可以通过QuartusII中的Programmer和下载电缆直接由PC机写入FPGA或CPLD。常用的下载电缆有:MasterBlaster、ByteBlasterMV、ByteBlasterⅡ、USB-Blaster和EthernetBlaster。其中,MasterBlaster电缆既可用于串口也可用于USB口,ByteBlasterMV仅用于并口,两者功能相同。ByteBlasterⅡ、USB-Blaster和EthernetBlaster电缆增加了对串行配置器件提供编程支持的功能。ByteBlasterⅡ使用并口,USB-Blaster使用USB口,EthernetBlaster使用以太网口。逻辑设计的输入方法QuartusⅡ所能接受的输入方式有:原理图(*.bdf文件)、波形图(*.vwf文件)、VHDL(*.vhd文件)、VerilogHDL(*.v文件)、AlteraHDL(*.tdf文件)、符号图(*.sym文件)、EDIF网表(*.edf文件)、VerilogQuartus映射文件(*.vqf)等。EDIF是一种标准的网表格式文件,因此EDIF网表输入方式可以接受来自许多第三方EDA软件(Synopsys、Viewlogic、MentorGraphics等)所生成的设计输入。在上述众多的输入方式中,最常用的是原理图、HDL文本和层次化设计时要用的符号图。1.指定项目名称启动QuartusⅡ后首先出现的是管理器窗口。开始一项新设计的第一步是创建一个工程,以便管理属于该工程的数据和文件。建立新工程的方法如下:1)选择菜单“File”→“NewProjectWizard…”,打开“NewProjectWizard”对话框。2)选择适当的驱动器和目录,然后键入工程名,点击“Next”。3)选择需要添加进工程的文件以及需要的非默认库,点击“Next”。4)选择目标器件,点击“Next”。5)选择需要附加的EDA工具,如图示,然后点击“Next”。这一步主要是选用QuartusII之外的EDA工具,也可以选择菜单“Assignments”→“Settings”→“EDAToolSettings”进行设置。6)点击“Finish”。2.建立图形设计文件第一步打开图形编辑器1)在管理器窗口选择菜单“File”→“New...”或直接在工具栏上点击按钮,打开“New”列表框。2)点开“DesignFiles”,选中“BlockDiagram/SchematicFile”项。3)点击“OK”。此时便会出现一个图形编辑窗口。第二步输入元件和模块1)在图形编辑窗口空白处双击鼠标左键或选择菜单“Edit”→“InsertSymbol…”,也可直接在工具栏上点击按钮,便打开了“Symbol”对话框,如图所示。2)选择适当的库及所需的元件(模块)。3)点击“OK”。这样所选元件(模块)就会出现在编辑窗口中。重复这一步,选择需要的所有模块。相同的模块可以采用复制的方法产生。用鼠标左键选中器件并按住左键拖动,可以将模块放到适当的位置。第三步放置输入、输出引脚输入、输出引脚的处理方法与元件一样。1)打开“Symbol”对话框。2)在“Name”框中键入input、output或bidir,分别代表输入、输出和双向I/O。3)点击“OK”。输入或输出引脚便会出现在编辑窗口中。重复这一步产生所有的输入和输出引脚,也可以通过复制的方法得到所有引脚。还可以勾选图中的“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”即可。下图是以原理图方式设计的一个BCD码模6计数器counter6。主要器件是一个四位二进制计数器74161(Others库中的元件)和与非门(Primitives库中的元件),采用异步复位的方法将计数的规模改为了六进制。3.建立HDL设计文件第一步打开文本编辑器1)在管理器窗口中的选择菜单“File”→“New...”,或直接在工具栏上点击按钮,打开“New”列表框。2)点开“DesignFiles”,然后选择“AHDLFile”、“VerilogHDLFile”或“VHDLFile”,点击“OK”。第二步输入HDL源码第三步保存文件选择菜单“File”→“Save”,或在工具栏点击按钮,保存输入的HDL源码。第四步建立一个默认的符号文件与由原理图生成符号文件的方法一样。但会自动地先对HDL文件进行编译,成功后才会生成符号文件。下图是用VHDL描述的一个BCD码十进制计数器counter10。cr为同步复位信号,低电平有效,oc为进位输出。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYCOUNTER2ISPORT(CLK,CR:INSTD_LOGIC;OC:OUTSTD_LOGIC;Q:OUTINTEGERRANGE0TO9);ENDCOUNTER2;ARCHITECTUREBEHAVIOROFCOUNTER2ISBEGINPROCESS(CLK)VARIABLECOUNT:INTEGERRANGE0TO9;BEGINIFCLK'EVENTANDCLK='1'THENIFCR='1'THENIFCOUNT=9THENCOUNT:=0;ELSECOUNT:=COUNT+1;ENDIF;ENDIF;ENDIF;OC=‘1’WHENCOUNT=9ELSE‘0’;Q=COUNT;ENDPROCESS;ENDBEHAVIOR;4.层次化设计若设计项目较大,无法用一个文件把电路的设计细节全部描述出来的话,就必须采用层次化的设计方法。HDL不仅可以在不同的层次上对设计进行描述,而且还可以方便地描述模块间的嵌套关系(通过元件引用)。但在图形输入方式和原理图与HDL混合输入方式下进行层次化设计就必须借助符号(Symbol)来描述嵌套关系。前面已分别用原理图方式和VHDL方式描述了一个六进制计数器和一个十进制计数器。现用这两个模块来设计一个模60计数器。这就需要建立一个顶层的原理图文件。方法同前,在编辑窗口中调入counter6和counter10。然后,辅以一个非门,加上适当的连线构成一个模60计数器,如下图所示。十进制计数器counter10作BCD码个位,六进制计数器counter6作BCD码十位。编译QuartusⅡ编译器主要完成设计工程的检查和逻辑综合,将工程最终设计结果生成器件的下载文件,并为仿真和编程产生输出文件。第一步打开编译器窗口在管理器窗口中选择菜单“Processing”→“CompilerTool”,则出现编译器窗口,如下图。从图中可以看出,编译包括分析与综合(Analysis&Synthesis)、适配器(Fitter)、汇编器(Assembler)和时序分析器(TimingAnalyzer)等。第二步选项设置编译器有很多选项设置,但并不是每一项都需要用户去设置,有些设置编译器可自动选择(如器件选择、引脚分配等),而其他的设置往往有缺省值。在管理器窗口中选菜单“Assignments”→“Settings...”,或直接在工具栏中点击按钮,打开“Settings”对话框,如下图1)器件选择在“Settings”对话框左侧“Category”栏内选择“Device”,然后选择器件的系列和型号,型号可设为“Auto”,编译器自动选择。如果不选择器件的系列和型号,编译器会自动选择。器件的选择也可以在建立工程时进行。对于前述的计数器,选择Cyclone系列的EP1C3T100C6器件作为后续综合与仿真的目标器件。2)顶层实体选择QuartusII中可以在不改变工程的情况下,指定工程中的任何设计实体为顶层设计实体,并仿真顶层实体及其所有附属设计实体。方法是打开“Settings”对话框,在左侧“Category”栏内选“General”,然后就可以选择新的顶层设计实体。3)编译过程设置在“Settings”对话框左侧“Category”栏内选