第3章QuartusII使用入门及FPGA设计流程QuartusII可编程逻辑开发软件是Altera公司为其FPGA/CPLD芯片设计推出的专用开发工具,是Altera公司最新一代功能更强的EDA开发软件,可完成从设计输入,综合适配,仿真到下载的整个设计过程。QuartusII提供了一个完整的多平台开发环境,它包含FPGA和CPLD整个设计阶段的解决方案。QuartusII集成环境包括以下内容:系统级设计,嵌入式软件开发,可编程逻辑器件设计、综合、布局和布线,验证和仿真。QuartusII也可以直接调用SynplifyPro、ModelSim等第三方EDA工具来完成设计任务的综合与仿真。QuartusII与MATLAB和DSPBuilder结合可以进行基于FPGA的DSP系统开发,方便快捷。QuartusII还内嵌SOPCBuilder,可实现SOPC系统的开发。QuartusII9.0主界面如图3.1示。图3.1QuartusII9.0界面3.1QuartusII基本设计流程QuartusII设计的主要流程包括创建工程、设计输入、分析综合、编译、仿真验证、编程下载等,其一般流程如图3.2所示。下面以硬件描述语言输入法设计计数器为例,说明QuartusII的设计流程。3.1.1创建工程使用QuartusII设计电路被称作工程。QuartusII每次只进行一个工程,并将该工程的全部信息保存在同一个文件夹中。开始一项新的电路设计,首先要创建一个文件夹,用以保存该工程的所有文件。之后便可通过QuartusII的文本编辑器编辑Verilog源文件并存盘。3.1.2设计输入QuartusII中包含原理图输入和硬件描述语言输入两种方法。(1)原理图输入原理图输入的优点是,设计者不必具有诸如编译技术、硬件描述语言等新知识就能迅速入门,完成较大规模的电路系统的设计,且具有直观,易于理解的特点,适合于初学者使用。但画电路图不如输入代码方便,所以在设计比较复杂电路时不宜采用。按图3.3所示的步骤操作,即可进入原理图编辑器,此时出现原理图编辑器窗口,如图3.4所示。原理图编辑工具栏各按钮的功能如表3.1所示。在原理图编辑器的空白处选择一个适当位置双击鼠标左键,或选择命令EditInsertSymbol,或点击工具条上的与门符号(表示要插入一个元件符号),均可以调用库元件。使用上述三种方法中的任何一个,将出现图3.5所示的窗口。在该窗口中可以选择库名,再在该库中选择库元件名,库元件符号便出现QuartusⅡ主界面中选择菜单项File选择New或Open选择BlockDiagram/SchematicFile选择GraphicFiles选择该文件所在的目录BlockDiagram/SchematicFile鼠标左键点击OK选择一个已存在的文件名选择该文件所在的目录BlockDiagram/SchematicFile原理图编辑窗口图3.3进入原理图编辑器操作方法设计构想创建一个新工程选择目标器件设计输入硬件描述语言原理图部分编译:分析与综合功能仿真功能正确?引脚锁定完整编辑物理设计时序仿真满足时序要求?器件编程是否否是图3.2QuartusII的设计流程图3.2QuartusII一般设计流程在窗口中,再用鼠标将其拖至适当的位置即可。表3.1原理图编辑工具栏各按钮功能说明图标功能图标功能选择工具文本工具插入符号对角线工具单条连线数组连线弧形工具橡皮筋功能部分连线放大缩小全屏显示所用的主要元件库如下:①基本元件库(primitives)包括基本门电路(primitives\logic)、各种触发器、锁存器(primitives\storage)和输入/输出引脚(primitives\pin)。②其它元件库(others)包括74系列器件(other\maxplus2)、宏功能模块评估(other\Opencore_plus)。图3.4原理图编辑界面③参数化元件库(megafunctions)包括算术组件(累加器、计数器、加法器、乘法器和LPM算术函数)、门电路(多路复用器、LPM门函数)、I/O组件、千兆位收发器块(GXB)、LVDS接收器和发送器、存储组件(存储器、移位寄存器、LPM存储器函数)。常用I/O组件有时钟数据恢复(CDR)、锁相环(PLL)、双数据速率(DDR)等。创建/编辑一张原理图的主要工作包括:从库中调用元件符号,加入原理图;删除或复制所选中的元件符号;把各个元件符号用连线连接起来(或删除不需要的连线);把电路的输入/输出引脚和电路内部相应元件的输入/输出端口连接起来;为输入/输出引脚、信号线等命名;移动元件或连线使图形美观;保存已经编辑好的原理图(.bdf文件)等。(2)硬件描述语言输入如前所述,Verilog具有突出的优点,所以成为主流的硬件描述语言,广泛应用于电子设计之中。采用Verilog输入的具体方法将结合下面的设计实例加以介绍。3.1.3分析综合综合是将硬件描述语言(或原理图)设计输入转化为由与、或、非门,RAM,触发器等基本逻辑单元组成的逻辑电路,并根据约束条件优化,生成门级逻辑电路,输出网表文件,供下一步的布线布局使用。性能优异的综合工具能够使所设计的电路占用芯片的面积更小、工作频率更高。这是评定综合工具优劣的两个重要指标。在QuartusII中,从Processing菜单执行Start/StartAnalysis&Synthesis,启动分析与综合模块。该模块将检查工程的逻辑完整性和一致性,并检查边界连接和语法错误。它使用多种算法来减少门的数量,删除冗余逻辑以及尽可能有效地利用器件体系结构,产生用目标芯片的逻辑元件实现的电路,生成网表文件,构建工程数据库。分析综合后,可执行Tools/Netlistviewers/RTLViewer,查看RTL视图。图3.5选择元件符号选择库名选择元件名3.1.4仿真仿真分为功能仿真和时序仿真。在Assignments/Settings对话框左侧列表中,选择SimulatorSettings,可将Simulatormode(仿真模式)设为Timing(时序仿真)或Functional(功能仿真)。仿真之前需建立仿真波形文件。(1)功能仿真功能仿真主要是验证综合工具生成的电路是否符合设计要求。先执行Processing/GenerateFunctionalSimulationNetlist,生成功能仿真网表,然后执行Processing/StartSimulation,进行功能仿真。根据仿真得到的输出波形,分析电路是否满足要求。(2)时序仿真时序仿真包含了延时信息,它能较好地反映芯片的工作情况。对于一个实际的PLD设计项目,时序仿真不能省略,因为延时的存在,有可能影响系统的功能。进行时序仿真之前,需要执行适配(StartFitter)或全编译(StartCompilation)。功能仿真过程不涉及任何具体器件的时延特性。不经历适配阶段,在设计项目编辑编译(或综合)后即可进入仿真器进行模拟测试。直接进行功能仿真的好处是设计耗时短,对硬件库、综合器等没有任何要求。对于规模比较大的设计项目,综合与适配要花较长时间,如果每一次修改都要进行时序仿真,显然会大大降低工作效率。因此,通常的做法是,首先进行功能仿真,待确认设计文件所表达的功能满足要求后,再进行综合、适配和时序仿真,以便把握设计项目在硬件条件下的运行情况。3.1.5编译启动编译器可以对工程项目进行全编译。编译器是一个应用程序,它控制QuartusII中各个模块的运行。选择命processing/CompilerTool命令打开编译器窗口,参见图3.6。编译器窗口中包含如下4个主模块:(1)分析和综合(Analysis&Synthesis)模块:产生用目标芯片的逻辑元件实现的电路;(2)适配(Fitter)模块:将前一步确定的逻辑元件在目标芯片上分配精确的位置;(3)组装(Assembler)模块:生成下载文件。(4)时序分析(TimingAnalyzer)模块。编译器可以每次单独运行一个模块,也可以依次调用多个模块。点击图3.6中Analysis&Synthesis模块下最左边的按钮,则此模块开始运行。与此相仿,点击图3.6中Fitter模块下最左边的按钮,Fitter模块开始运行。点击图3.6中左下角的Start按钮,将依次运行图中各个模块。图3.6编译器窗口执行全编译的快捷方法是点击工具按钮或执行Processing/StartCompilation。3.1.6编程下载编译和仿真验证通过后,就可以进行下载了。在下载前,首先要通过综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。把适配后生成的下载或配置文件通过编译器或编程电缆下载到FPGA或CPLD中,以便进行硬件调试和验证。并通过硬件测试来验证设计项目的实际工作情况。通过以上的简要介绍,对一个逻辑电路的设计流程有了一个初步的了解。3.2QuartusII设计示例下面以建立一个一位十进制计数器为例来说明其使用方法。3.2.1创建工程的准备工作前已提及,开始一项新的电路设计,首先要创建一个文件夹,以便保存该工程的所有文件。通过QuartusII的文本编辑器编辑Verilog源文件并存盘。具体步骤如下:(1)新建一个文件夹。假设本项设计的文件夹取名为counter,路径为d:\counter。(2)输入源程序。打开QuartusII,选择菜单File/New。在New窗口中的DeviceDesignFiles中选择编辑文件的语言类型,这里选择“VerilogFile”,如图3.7所示。然后在Verilog文本编译窗中输入Verilog示例程序,参见图3.8。该程序的实体名为CNT_10。(3)文件存盘。选择File/SaveAs命令,找到已设立的文件夹d:\conuter即可存盘,存盘文件名最好与实体名一致,即CNT_10.v。图3.7选择编辑文件语言类型图3.8Verilog文本编辑窗口及计数器程序3.2.2创建工程在菜单中选择File/NewProjectWizard,出现新建工程向导,三个输入栏中分别输入的是保存的路径及工程文件夹,工程的名称和顶层实体的名称。建议工程名与顶层实体名称保持一致。输入完毕点击Next,将出现添加工程文件对话框,这时可将已经写好的Verilog文件加入到工程中。在图3.9所示的对话框中,完成选择器件的工作。这里以TPC_1数字系统设计创新平台(参见附录B)为例,来说明具体操作方法。器件系列选择FPGA,具体芯片型号为EP3C16Q240C8,右面的三个下拉框用来限制芯片的封装形式、管脚数和速度等级。选择完成后,点击Next,出现选用第三方EDA工具窗口。本例不选用第三方EDA工具,直接单击Next。接下来出现的对话框给出了所生成工程的信息,单击Finish就完成了工程创建。这时工程导航窗口中的内容已经发生了改变。该窗口下面有三个页选项(图3.10),Hierarchy页中的内容是实体的层次结构,Files页中的内容是工程包含的文档,这两个都是很常用的。图3.9目标器件选择对话框3.2.3添加/创建新文件如果已经完成了Verilog源文件的编写工作,只需将它加进工程中,方法如图3.10所示。在File页中的DeviceDesignFile上点击鼠标右键,然后在Add/RemoveFilesinProject上点击鼠标左键,打开添加文件对话框,就可以添加文件了。也可以在QuartusII中创建Verilog源文件。3.2.4分析综合在建立Verilog文件以后,就可以进行分析综合,点击工具栏中StartAnalysis&Synthesis按钮启动分析综合过程。如果出现错误,则需要根据信息窗口的错误提示进行修改。文件存盘后重新启动分析综合过程。通过综合生成了逻辑电路网表文件,这时执行Tool/NetlistViewers/RTLViewer可以查看电路综合结果。接下来可以对电路进行功能仿真,检查所综合的电路在功能上是否能够达到