第3章Quartus II开发软件
本章将结合Quartus II 9.1版本软件介绍基于FPGA/CPLD的设计流程和Quartus II 9.1版本软件各种编辑器的功能与使用方法。通过本章的介绍,读者可以掌握设计工程建立、设计输入、设计处理、层次化设计和基于宏功能模块的设计。
3.1 概述
Quartus II是Altera公司为开发其可编程逻辑器件而推出的专用软件。Quartus II设计工具完全支持VHDL、Verilog HDL的设计流程,其内部嵌有VHDL、Verilog HDL逻辑综合器。Quartus II与MATLAB和DSP Builder结合可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具,与SOPC Builder结合,可实现SOPC系统开发。
1. Quartus II 9.1的安装
Quartus II软件按使用对象可分为商业版和基本版,安装方法基本相同,这里仅介绍基于PC在Windows XP平台上Quartus II 9.1的安装过程。
将Quartus II 9.1软件光盘放入光驱中,执行光盘上的setup.exe文件,程序会自行解压缩。解压缩后出现如图3-1所示的安装欢迎界面,单击“Next”按钮,然后按屏幕提示进行操作,即可完成Quartus II 9.1的安装,如果在任一步单击“Cancel”按钮将退出安装。安装过程中有进度显示,并对Altera公司的一些器件进行简要介绍,安装到如图3-2所示的界面时,单击“Finish”按钮,则直接退出,完成安装。
图3-1 Quartus II 9.1安装欢迎界面
图3-2 Quartus II 9.1安装完毕后的界面
2. Quartus II 9.1的授权许可设置
在第一次运行Quartus II 9.1时,需要进行授权许可设置,才能保证该软件功能的正常使用。用鼠标左键双击桌面上的Quartus II 9.1图标或在Windows界面的“开始”菜单内选择“程序”中的Quartus II 9.1项,出现如图3-3所示的对话框,单击“OK”按钮打开如图3-4所示的“Options”对话框,选择“License Setup”项,并单击按钮,在弹出的“License File”对话框中选择license.dat文件或直接在License File文本框中输入带全路径名的license.dat文件名。设置好license.dat文件后,单击“OK”按钮,就可以正常使用Quar-tus II 9.1软件了。运行Quartus II 9.1,打开如图3-5所示的管理器窗口。
图3-3 “License Setup Required”对话框
图3-4 “Options”对话框
图3-5 Quartus II 9.1管理器窗口
3.2 Quartus II 9.1管理器
Quartus II 9.1管理器是用户启动Quartus II 9.1时打开的第一个窗口,它对所有的Quar-tus II 9.1应用功能进行控制,图3-5所示即为Quartus II 9.1管理器窗口。
1. 工作界面
Quartus II 9.1管理器的上部是标题栏、菜单栏、状态栏、工程管理区、编译状态显示区、信息显示区和工作区。
菜单栏:包括各种命令操作和参数设置。
标题栏:用来指明当前编辑文件的名称及路径。
资源管理窗:显示当前工程的信息,包括当前工程的文件层次结构,所有相关文档及设计单元等。
状态栏:当鼠标置于菜单命令和工具栏的某一图标上时,状态栏显示其简短描述,起到提示用户的作用。
编译状态显示窗:显示编译的进程等。
信息显示窗:显示系统在编译和仿真过程中所产生的信息。例如:语法信息、错误、警告、编译成功信息等。如果是警告和错误,则会给出具体的引起警告和错误的原因,以方便设计者查找及修改错误。在此窗口中单击错误条目,可以直接找到错误对应的位置。
工作区:是用户对输入文件进行设计的空间区域,包括源文件的设计输入、器件设置、定时约束设置、底层编辑和编译报告等,均在工程工作区中进行。
工具栏:紧邻菜单栏下方,如图3-6所示。它是各菜单功能的快捷按钮组合区,其功能从左到右分别为:
图3-6 工具栏
✧ 建立一个新的图形、文本、波形或符号等文件;
✧ 打开一个文件,启动相应的编辑器;
✧ 保存当前文件;
✧ 保存所有文件
✧ 打印当前文件或窗口内容;
✧ 将选中的内容剪切到剪贴板;
✧ 将选中的内容复制到剪贴板;
✧ 撤销上次操作;
✧ 粘贴剪贴板的内容到当前文件中;
✧ 重复上次操作;
✧ 打开文件列表;
✧ 打开/关闭工程管理区;
✧ 打开设置对话框;
✧ 打开资源分配;
✧ 打开引脚规划;
✧ 打开芯片规划;
✧ 停止编译;
✧ 开始编译;
✧ 指定分析综合
✧ 指定经典的时序分析;
✧ 开始时序分析;
✧ 调用时序分析器;
✧ 开始仿真;
✧ 编译报告;
✧ 编程下载;
✧ 调用SOPC Builder;
✧ 帮助索引。
2. 菜单栏
Quartus II 9.1的菜单栏包括各种命令操作和参数设置,主要有File、Edit、View、Pro-ject、Assignments、Processing、Tools、Window和Help等菜单。
1)File菜单
New:创建一个新的设计。
Open:打开一个已有的设计。
Close:关闭一个设计。
New Project Wizard:创建一个新的工程。
Open Project:打开一个已有的工程。
Convert MAX+PLUS II Project:将MAX+PLUS II环境下的工程转换为Quartus II环境下的工程。
Save Project:保存当前工程。
Close Project:关闭当前工程。
Save,Save As:保存当前文件/将当前文件另存。
Save Current Report Section As:保存当前报告文件。
File Properties:当前文件属性。
Creat/Update:为当前文件创建一个设计文件,或者更新当前文件或模块。
Export:将当前文件(一般是报告文件的数据)输出。
Convert Programming Files:将SRAM下载文件(后缀名为.pof或.sof)转换为Quartus II支持的其他文件格式。
Page Setup:页面设置。
Print Preview:打印。
Recent Files:最近打开的设计文件。
Recent Projects:最近打开的工程。
Exit:关闭Quartus II软件。
2)Edit菜单。
Undo,Redo:撤销和恢复上次操作。
Cut,Copy,Paste,Delete,Select All:剪切,复制,粘贴,删除,全选。
Find,Find Next,Replace:查找,查找下一个,替换。
AutoFit:自动调整表格尺寸。
Line:定义选定的线的类型。
Toggle Connection Dot:指定线的交叉点为连接点或将连接点定义为不连接。
Flip Horizontal,Flip Vertital:水平旋转,垂直旋转。
Rotate by Degrees:旋转特定角度。
Insert Symbol:插入图元符号。
Insert Symbol as Block:插入一个图元符号,并以Block形式显示。
Edit Selected Symbol:编辑选定模块。
Update Symbol or Block:更新模块。
Properties:模块属性。
3)View菜单
Utility Window:功能窗口。
Full Screen:全屏显示。
Fit In Window:适应窗口大小显示。
Zoom In,Zoom Out,Zoom:放大,缩小,自定义显示范围。
Show Guidelines:显示网格线。
Show Block I/O Tables:显示模块的端口输入/输出表。
Show Mapper Tables:显示模块和与模块相连的信号之间的映射表。
Show Parameter Assignments:显示参数配置。
Show Location Assignments:显示引脚分配。
Show I/O Standard and Reserve Pin Assignments:显示I/O引脚标准和保留引脚分配。
4)Project菜单
Add Current File to Project:把当前文件加入工程中。
Add/Remove File in Project:从工程添加或删除当前文件。
Revisions:版本管理。
Copy Project:复制工程。
Archive Project:工程文件打包。
Restore Archive Project:将已打包工程文件和数据恢复到目标文件夹中。
Import Database,Export Database:导入、导出Database文件。
Import Design Partition:导入设计分区。
Export Project as Design Partition:是自下而上增量编译设计流程的一部分,允许用户将工程作为设计分区导出为.qxp文件(Quartus II Exported Partition File)。此文件描述了已导出的工程并且包含一个网表文件、LogicLock区域及一组设置等。
Generate Bottom-Up Design Partition Scripts:创建一个自下而上的设计分区脚本。
Generate Tcl File for Project:为当前工程生成一个Tcl脚本命令文件,后缀名为.tcl。
Generate PowerPlay Early Power Estimator File:产生一个早期功耗估算文件。
Organize Quartus II Setting File:组织Quartus II设置文件,并按照配置的种类进行分类。
HardCopy Utilities,HardCopy II Utilities:提供HardCopy、HardCopy II功能。
Locate:将指定模块或文件在不同层次进行定位。
Set As Top-Level Entity:将当前文件设定为工程的顶层实体。
Hierarchy:查看下一层次实体、上一层次实体或工程顶层实体的设计文件
5)Assignments菜单
Device:选择器件及观察器件参数。
Pins:引脚分配及参数设置。
Timing Analysis Settings:时序设置。
EDA Tool Settings:第三方EDA工具设置。
Timing Wizard:定时向导。
Assignments Editor:分配管理器。
Pin Planner:引脚分配器。
Remove Assignments:删除分配。
Demote Assignments:用于指定工程的某一项或多项配置的配置要求降级,从而可以使编译器(Compiler)更自由高效地安排配置。
Back-annotate Assignments:反标分配。
Import Assignments:导入分配信息。
Export Assignments:导出分配信息。
Assignment(Time)Groups:时序组分配。
Timing Closure Floorplan:时序逼近底层图(Timing Closure平面布局分布图)。
LogicLock Regions Window:逻辑锁区域。
Design Partitions Window:设计分区窗口。
6)Processing菜单
Stop Processing:停止处理。
Start Compilation:开始一个完全编译。
Analyze Current File:分析当前文件。
Start:开始菜单。
Update Memory Initialization File:更新存储器初始化文件。
Complication Report:查看编译报告。
Start Compilation & Simulation:开始编译和仿真。
Generate Functional Simulation Netlist:产生功能仿真的网表文件。
Start Simulation:开始仿真。
Simulation Debug:仿真调试。
Simulation Report:查看仿真报告。
Compiler Tool:编译工具。
Simulator Tool:仿真工具。
Timing Analyzer Tool:时序分析工具。
PowerPlay Power Analyzer Tool:功率分析工具。
7)Tools菜单
EDA Simulation Tool:运行第三方EDA仿真工具(寄存器传输级仿真工具和门级仿真工具)。
Run EDA Timing Analyze Tool:运行第三方EDA时序分析工具。
Launch Design Space Explorer:运行设计空间管理器。
Advanced List Paths:高级网表路径。
TimeQuest Timing Analyzer:TimeQuest时序分析器。
Advisors:向导。
Chip Editor:芯片编辑器。
Netlist Viewers:网表观察工具。
SignalTap II Logic Analyzer:SignalTap II逻辑分析仪。
In-System Memory Content Editor:存储器内容在线编辑器。
Logic Analyzer Interface Editor:逻辑分析仪接口编辑器。
SignalProbe Pins:为SignalProbe信号探针分配引脚。
Programmer:编程器。
MegaWizard Plug-In Manager:MegaWizard插件管理器。
SOPC Builder:嵌入式系统构建工具。
Tcl Scripts:Tcl脚本编辑器。
Customize:用户自定义。
Options:选项。
License Setup:授权安装
8)Window菜单
New Window:打开一个新窗口。
Close All:关闭工作区中的所有文件。
Cascade:将窗口中的文件重叠显示。
Tile Horizontally:将文件在窗口中按行排列。
Tile Vertically:将文件在窗口中按列排列
9)Help菜单
Index:索引。
Search:搜索。
Contents:内容。
Messages:所有系统信息的解释。
Glossary:术语表。
Megafunctions/LPM:参数化模块库。
Devices& Adapters:器件和适配器。
EDA Interfaces:第三方EDA工具接口流程介绍。
Tutorial:Quartus II使用指南。
PDF Tutorial:针对VHDL和Verilog用户的Quartus II使用指南(PDF文件格式)。
MAX+PLUS II Quick Start Guide:MAX+PLUS II快速入门指南。
What's New:Quartus II 6.0版的新功能。
Readme File:显示Quartus II 6.0版的Readme文件。
MegaCore IP Library Readme:显示MegaCore IP Library Version 6.0的Readme文件。
Release Notes:显示Altera网站上有关当前版本的Quartus II软件的最新信息。
How to Use Help:如何高效地使用Quartus II的帮助功能。
Contacting Altera:连接Altera网站。
Altera on the Web:Altera公司各部门的联系方式。
About Quartus II:Quartus II的版本和专利信息。
3.3 设计输入
1.Quartus II软件设计流程
Quartus II软件的设计过程主要分为建立工程、输入设计电路(可采用不同方式)、设计编译、设计仿真、设计下载等过程。Quartus II软件设计流程如图3-7所示。
图3-7 Quartus II软件设计流程
Quartus II支持多种设计输入方法。
(1)Quartus II本身具有编辑器,支持原理图式图形设计输入,文本编辑输入(如AHDL、VHDL、Veril-og),内存编辑输入(如Hex、Mif)。
(2)第三方EDA工具编辑的标准格式文件输入,如EDIF、HDL、VQM。
(3)采用一些别的方法优化和提高输入的灵活性,如混合设计格式,它利用LPM和宏功能模块来加速设计输入。
(4)对应支持的设计输入文件,如图3-8所示。
图3-8 Quartus II支持的设计输入文件
2. 创建工程
Quartus II编译的工作对象是工程,所以在进行设计时,首先要指定该设计的工程名称,并且要保证一个设计工程中所有相关文件均出现在该工程的层次结构中。每个设计必须有一个工程名,并要保证工程名与设计文件名一致。另外,对于每个新的工程,应建立一个独立的子目录。指定设计工程名称的步骤如下。
(1)建立文件夹,可在任意盘(注意不能用汉字),如“e:\quartusII example”。
(2)在如图3-5所示的Quartus II 9.1管理器窗口中,执行菜单命令“File”→“New Project Wizard”,打开如图3-9所示的创建工程向导对话框。然后单击“Next”按钮,打开如图3-10所示的输入工程路径、工程名称、顶层设计的实体向导名称对话框。
图3-9 创建工程向导对话框
图3-10 输入工程路径、工程名称、顶层设计的实体向导名称对话框
在图3-10中,输入设计工程的名称和顶层设计的实体名称,单击“Next”按钮,打开如图3-11所示的添加文件对话框。
图3-11 添加文件对话框
(3)在“File name”栏中选择添加其他已存在的设计文件(如果有)到这个工程中,工程文件的加入方法有两种。
单击右边的“Add All”按钮,将设定的工程目录中的所有Verilog HDL文件加入工程文件栏中。
单击“…”按钮,从工程目录中选出相关的Verilog HDL文件。完成后单击“Next”按钮进入下一步。如果不需要,直接单击“Next”按钮进入下一步,打开如图3-12所示的选择可编程逻辑芯片对话框。
图3-12 选择可编程逻辑芯片对话框
(4)在图3-12所示对话框中,在“Family”栏中选择芯片系列,在“Package”栏中选择芯片的封装形式,在“Pin count”栏中选择芯片的引脚数目,在“Speed grade”栏中选择速度级别来约束可选芯片的范围。也可在“Target device”栏中自动选择芯片,完成后单击“Next”按钮,打开如图3-13所示的EDA工具设置对话框。
图3-13 EDA工具设置对话框
(5)图3-13所示对话框是选择第三方的EDA软件,一般无须改动,直接单击“Next”按钮,打开如图3-14所示的创建工程向导结束对话框。单击“Finish”按钮,结束创建工程,即可进入如图3-5所示的Quartus II 9.1管理器窗口,工程文件的扩展名为.qpf。
图3-14 创建工程向导结束对话框
如果工程已经建立,可执行菜单命令“File”→“Open Project”,打开如图3-15所示的已存在的工程对话框,既可打开选择的工程,也可进入如图3-5所示的Quartus II 9.1管理器窗口。
图3-15 打开已存在的工程对话框
3. 图形编辑输入
图形输入方式是使用Quartus II提供的图元和用户自己创建的图元作为输入单元输入设计的原理图,从而完成设计的输入任务。由于通过原理图可以清楚看到组成设计工程的各个模块之间的关系,因此顶层文件通常用图形输入方式来创建。图形编辑输入的具体步骤如下。
1)创建工程 按照创建工程的步骤创建工程。在如图3-5所示的Quartus II 9.1管理器窗口中,执行菜单命令“File”→“New”,打开如图3-16所示的选择编辑文件类型对话框。在对话框中的“Design Files”下选择“Block Diagram/Schematic File”,选好后单击“OK”按钮,打开如图3-17所示的原理图编辑器对话框,进入新建的原理图输入工作界面。
图3-16 选择编辑文件类型对话框
图3-17 原理图编辑器对话框
原理图设计输入界面中工具下各按钮的功能如图3-18所示。其中,橡皮筋功能是指当鼠标单击连线进行拖动时,连线会像橡皮筋一样被拉长和延伸而不会断开,文本工具、方框工具、圆形工具、直线工具和弧线工具都可以作为注释工具使用。
图3-18 原理图设计输入界面中工具下各按钮的功能
2)输入逻辑功能符号 Quartus II 9.1软件提供各种逻辑功能符号,包括图元、LPM函数和宏功能符号。其中,.bdf文件既能包含模块符号,又能包含原理图符号,供设计人员在图形模块编辑器中直接使用。
在编辑窗口的任意位置单击鼠标右键,在弹出的快捷菜单中选择“Insert”→“Symbol”命令,或者在空白处的任意位置双击鼠标左键,或者单击绘图工具栏中的按钮,打开如图3-19所示的逻辑功能符号输入对话框,在“Name”栏中输入要调用的逻辑功能符号,如“74161”,找到需要的逻辑功能符号单击“OK”按钮,即可将逻辑功能符号放置到新建的图形模块编辑器中。模12计数器所需的逻辑功能符号如图3-20所示。
图3-19 逻辑功能符号输入对话框
图3-20 模12计数器所需的逻辑功能符号
3)移动逻辑功能符号
(1)单击如图3-20所示的74161符号,即选定这个符号(符号颜色发生变化)。
(2)按住鼠标左键,拖动74161符号并将其左上角定位在导引线相交点上。符号的外形边界线随符号一起移动,这样就可以对符号进行精确定位。
(3)符号定位后,释放鼠标左键。
(4)将光标放置在某一图元或符号上,单击鼠标右键、通过快捷菜单命令“Rotate by degrees”、“Flip Horizontal”及“Flip Vertical”或通过选择“Edit”→“Rotate by degrees”、“Edit”→“Flip Horizontal”及“Edit”→“Flip Vertical”命令,可分别对该图元进行旋转、水平镜像或垂直镜像操作。
(5)按下鼠标左键并拖动到一定位置松开,即可选定一个矩形区域。可按照上述(2)、(3)、(4)步移动该选定区域。
4)连线 如果需要连接两个端口,可将鼠标移到其中一个端口上,这时鼠标指示符自动变为“+”形状,然后可按下述步骤操作。
(1)按住鼠标左键并将鼠标拖到第二个端口。
(2)放开左键,则一条连接线就画好了。
(3)如果某一条线需设置为总线,则先选中该线然后单击鼠标右键,在其快捷菜单中选择“Bus Line”项,此时被选中线段即变为总线。
(4)如果需要删除一根连接线,可单击这根连接线使其成高亮线,然后按Del键即可。
5)命名、连线引脚 在一个图形编辑器中,每个逻辑功能符号都有唯一的用数字表示的ID标识号。命名引脚的步骤如下。
(1)双击INPUT或OUTPUT端口默认的引脚名PIN-NAME,PIN-NAME将变色。
(2)输入新的引脚名称。
(3)将其余的INPUT和OUTPUT引脚名按图3-21所示更改。
图3-21 引脚命名、连线示意图
【注意】 输入引脚、输出引脚不能同名。
(4)为连线命名时,需单击鼠标左键选中欲命名的连线,然后输入名字。如对n位宽的总线Q命名时,可以采用Q[n-1..0]形式,其中单个信号用Q[0],Q[1],Q[2],…,Q[n]形式。
6)用名字连接节点(Node)和总线(Buses) 除了用连线连接元件符号外,还可以通过名字把元件符号引脚或其连线与相应的总线连接起来。如果某个节点与总线的某个成员有着相同的名字,则它们在逻辑上就连接在一起了,而并不需要真正在物理上连接,如图3-22所示。
图3-22 用名字连接节点和总线
7)文件存盘 执行菜单命令“File”→“Save As”保存文件,找到已设立的文件夹E:\quartusII example,存盘文件名为count12.bdf。
4. 文本编辑输入
QuartusI支持以AHDL、VHDL和Verilog HDL等硬件描述语言形式书写的文本文件,AHDL是Altera Hardware Description Language的缩写,它是一种高级的硬件描述语言,该语言可以使用布尔方程、算术运算、真值表、条件语句等方式进行描述,适合于大型的、复杂的状态机设计。VHDL和Verilog HDL是一种符合IEEE标准的高级硬件描述语言,特别适合于大型或复杂的设计。这几种语言都是用文本进行设计的,它们的输入方式既有共同之处,又有各自的特点,设计人员可根据实际情况选择使用。
和图形编辑输入方式一样,在进行文本编辑输入时,首先建立一个放置与此工程相关的所有文件的文件夹作为工作库,在建立了文件夹后就可以将设计文件通过Quartus II的文本编辑器编辑并存盘。利用Verilog HDL语言进行文本设计的方法如下。
1)创建工程 按创建工程的步骤创建工程。在如图3-5所示的Quartus II 9.1管理器窗口中,执行菜单命令“File”→“New”,打开如图3-16所示的选择编辑文件类型对话框。在对话框中的“Design Files”下选择“Verilog HDL File”,选好后单击“OK”按钮,打开如图3-23所示的文本编辑器对话框,进入新建的原理图输入工作界面,然后在Verilog HDL文本编译窗口中输入如图3-23所示的Verilog HDL程序代码:
图3-23 文本编辑器对话框
2)文件存盘 执行菜单命令“File”→“Save As”保存文件,找到已设立的文件夹E:\quartusII example,存盘文件名应与实体名一致,即count24.v。
3.4 设计处理
在设计输入完成后,用户就可以对设计工程进行处理了,设计处理主要使用Quartus II 9.1编译器完成。编译器的功能包括设计错误检查、逻辑综合、适配器件、仿真/定时分析和产生下载编程的输出文件。
1. 编译设置
在进行编译处理前,必须做好必要的设置,具体步骤如下。
1)选择目标芯片 目标芯片的选择可以这样实现,执行菜单命令“Assignmemts”→“Settings”或“Device”,打开如图3-24所示的选择目标芯片对话框。
图3-24 选择目标芯片对话框
首先选择目标芯片,该设计选择EP2C70F896C7芯片。也可以在图3-24所示的“Show in'Available devices'list”栏中,分别选Package:PQFP;Pin count:896;Speed:8,以此选择芯片。
2)选择目标器件编程配置方式 在图3-24所示对话框中,单击“Device and Pin Op-tions”按钮,打开如图3-25所示的选择配置器件和配置方式对话框。选择“Configuration”选项卡,在此框的下方有相应的说明,在“Configuration scheme”栏选择“Active Serial”,这种方式是对专用配置器件进行配置用的编程方式,而PC对此FPGA的直接配置方式都是JTAG方式。在“Configuration device”区域选择配置器为EPCS1或EPCS4,根据设计系统中目标器件配置的EPCS芯片决定,如图3-25所示。
图3-25 选择配置器件和配置方式对话框
3)选择输出配置 在图3-25所示对话框的“Programming Files”选项卡中,可以选Hexadecimal(Intel-Format)output File,即产生下载文件的同时,产生二进制、十六进制配置文件*.hexout,可用于单片机与EPROM构成的FPGA配置电路系统。
2. 编译
Quartus II编译器是由一系列处理模块构成的,这些模块负责对设计工程的检错、逻辑综合和结构综合。即将设计工程适配进FPGA/CPLD目标器中,同时产生多种用途的输出文件,如功能和时序仿真文件、器件编程的目标文件等。编译器首先从工程设计文件间的层次结构描述中提取信息,包括每个低层次文件中的错误信息,供设计者排除,然后将这些层次构建产生一个结构化的以网表文件表达的电路原理图文件,并把各层次中所有的文件结合成一个数据包,以便更有效地处理。编译分为完整编译和不完整编译。不完整编译包括以下3个特点:
编译设计文件,综合产生门级代码;
编译器只运行到综合这步就停止了;
编译器只产生估算的延时数值。
完整编译包括以下6个特点:
编译;
网络表输出;
综合;
配置器件;
将设计配置到目标器件中;
编译器根据器件特性产生真正的延时时间并给出器件的配置文件。
执行菜单命令“Processing”→“Start Compilation”或“Compiler tool”均可启动全程编译,开始编译并伴随着进度不断变化。编译完成后弹出编译完成提示对话框,单击“确定”按钮,编译完成后的各种信息显示如图3-26所示,这些信息包括警告和出错信息。如果工程中的文件有错误,在下方的Processing处理栏中会显示出来。对于Processing栏显示出的语句格式错误,可双击此条文,即弹出count24.v文件,在闪动的光标处(或附近)可发现文件中的错误。修改后再次进行编译直至排除所有错误。
图3-26 编译完成后的信息显示
3. 仿真分析
仿真就是对设计工程进行一项全面彻底的测试,以确保设计工程的功能和时序特性,以及最后的硬件器件的功能与原设计相吻合。仿真操作前必须利用Quartus II的波形编辑器建立一个矢量波形文件以作仿真激励。VWF文件将仿真输入矢量和仿真输出描述成一个波形图形来实现仿真。Quartus II允许对整个设计工程进行仿真测试。对工程的编译通过后,必须对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求,具体步骤如下。
1)打开波形编辑器 执行菜单命令“File”→“New”,在New窗口中选择“Vector Waveform File”,打开如图3-27所示的波形文件编辑窗口。
图3-27 波形文件编辑窗口
在波形文件编辑窗口的中间部分是波形输入工具条,其功能如图3-28所示。
图3-28 波形输入工具条
2)设置仿真时间区域 为了使仿真时间轴设置在一个合理的时间区域上,在“Edit”菜单中选择“End Time”项,在弹出窗口的“Time”栏中输入50,单位选“μs”,即整个仿真域的时间设定为50μs,单击“OK”按钮,结束设置。也可以在“Edit”菜单中选择“Grid Size”项设置栅格宽度。
3)存盘波形文件 执行菜单命令“File”→“Save as”,以count24.vwf(默认名)为文件名将波形文件存入文件夹E:\quartusII example中。
4)输入信号节点 按照图3-27所示的位置,在波形编辑工作界面的左侧双击,打开如图3-29所示的输入信号节点对话框。单击“Node Finder”按钮,打开如图3-30所示的查找输入信号节点对话框,在“Filter”栏中选择“Pins:all”,然后单击“List”按钮,在下方的“Nodes Found”列表框中出现设计中的count24.vwf工程的所有端口引脚名(如果此对话框中的“List”按钮不显示,则需要重新编译一次,即执行菜单命令“Processing”→“Start Compilation”,然后再重复以上操作过程)。单击按钮,将所有节点都添加到“Se-lected Nodes”列表框中,然后单击“OK”按钮,返回图3-29所示的输入信号节点对话框,再单击“OK”按钮,打开如图3-31所示的添加输入信号节点的波形编辑器界面。
图3-29 输入信号节点对话框
图3-30 查找输入信号节点对话框
图3-31 添加输入信号节点的波形编辑器界面
5)编辑输入波形 单击时钟名CLK,使之变为蓝色,再单击左列的时钟设置键,在“Clock”窗口中设置CLK的周期为30ns;“Duty cycle”是占空比,可选50,即50%占空比,如图3-32所示。同时设置端口reset的值,再对文件存盘。
图3-32 选择时钟周期和占空比
6)启动仿真器 所有设置完毕,执行菜单命令“Processing”→“Start Simulation”,直到出现“Simulation was successful”,或者执行菜单命令“Processing”→“Simulator Tool”,打开如图3-33所示的设置仿真参数对话框。如果执行功能仿真,在“Simulation mode”项选择“Functional”,并单击“Generate Functional Simulation Netlist”按钮,如果执行时序仿真,则编译设计。本例中选择功能仿真模式“Functional”。
图3-33 设置仿真参数对话框
7)观察仿真结果 在仿真结束前,仿真波形文件Simulation Report通常会自动弹出,如图3-34所示的count24工程仿真波形。
图3-34 count24工程仿真波形
【注意】 Quartus II的仿真波形文件中,波形编辑文件(*.vwf)与波形仿真报告文件(Simulation Report)是分开的,而Max+plus II的编辑与仿真报告波形是合二为一的。如果在启动仿真(执行菜单命令“Processing”→“Run Simulation”)后,并没有出现仿真完成后的波形图,而是出现文字“Can't Open Simulation Report Window”,但报告仿真成功,则可自己打开仿真波形报告,执行菜单命令“Processing”→“Simulation Report”。
4. 引脚锁定、下载和硬件测试
为了能对设计好的工程进行硬件测试,首先应将设计工程的输入/输出信号锁定在芯片确定的引脚上,再将设计下载到FPGA/CPLD芯片中,具体操作过程如下。
1)引脚锁定 假设已打开count24工程(如果工程被关闭,可执行菜单命令“File”→“Open Preject”,并单击工程文件count24,打开此前已开始设计的工程),执行菜单命令“Assignments”→“Assignments Editor”,弹出如图3-35所示的分配管理器对话框。分配管理器的功能是在Quartus II软件中建立、编辑节点和进行实体级别分配。分配用于在设置中为逻辑指定各种设置,包括位置、I/O标准、时序、逻辑选项、参数、仿真和引脚分配。
图3-35 分配管理器对话框
也可以执行菜单命令“Assignments”→“Pin Planner”,打开如图3-36所示的引脚分配管理器对话框。Pin Planner视觉工具为引脚和引脚组的分配提供了另一种途径,它包括器件的封装视图,以不同的颜色和符号表示不同类型的引脚I/O块。Pin Planner还包括已分配和未分配引脚的表格。在默认状态下,Pin Planner显示未分配引脚的列表(包括节点名称列、方向和类型)、器件封装视图、已分配引脚列表(包括节点名称列、引脚位置和I/O块)。在Pin Planner中,可调整视图,即放大或缩小视图,选择显示I/O块、VREF组、可分配I/O引脚或差分引脚连接等。还可以显示所选引脚的属性和可用资源,以及Pin Planner中说明不同颜色和符号的图例。
图3-36 引脚分配管理器对话框
2)选择编程模式和配置 为了将编译产生的下载文件配置进FPGA中进行测试,首先应将系统连接好,上电,执行菜单命令“Tools”→“Programmer”,弹出如图3-37所示的编程窗口。在“Mode”栏中有多种编程模式可以选择,选择“JTAG”方式。单击左侧打开文件标识符,选择配置文件count24.sof,最后单击下载标识符。当Progress显示出100%,以及在底部的处理栏中出现Configuration Succeeded时,表示编程成功。
图3-37 编程窗口
3)选择编程器 在图3-37所示的编程窗口中,单击“Hardware Setup”按钮,弹出如图3-38所示的“Hardware Setup”对话框。选择“Hardware Settings”选项卡,在“Current-ly selected hardware”选项中选择“USB-Blaster [USB-0]”,单击“Close”按钮,关闭对话框即可。
图3-38 “Hardware Setup”对话框
4)下载与硬件测试 完成上述各项设置后,即可顺利完成设计工程的下载工作,下载后可进行相关的硬件测试工作。
3.5 层次设计
层次设计是一种模块化的设计方法,在层次设计中,通常将工程分为若干个模块,这些模块大致可分为两类:顶层模块和底层模块。实际上,顶层模块和底层模块的划分并不是绝对的,有时在一个工程中,一个模块既可以是一个或多个模块的底层模块,又可以是另外一个或多个模块的顶层模块。层次设计是一种优良的设计方法,使用这种设计方法可以使工程的层次结构清晰明了。在开发复杂的系统时,层次设计是一种非常有效的设计方法。
1. 创建底层设计文件
首先建立工作库,以便进行设计工程的存储。在建立了文件夹后就可以将设计文件通过Quartus II的图形编辑器编辑并存盘,本节将通过图形输入方式完成一位二进制全加器设计,以此讲述层次设计的过程。先设计一位二进制半加器,再将一位二进制半加器作为底层模块完成一位二进制全加器的设计,详细步骤如下。
1)新建一个文件夹 利用资源管理器新建一个文件夹,如E:\quartusII example(文件夹名不能用中文)。
2)完成图形设计输入 打开Quartus II,执行菜单命令“File”→“New”,在“New”窗口的“Device Design Files”中选择“Block Diagram/Schematic File”,完成一位二进制半加器的设计,如图3-39所示。
图3-39 以图形输入方式设计的一位二进制半加器
3)文件存盘 执行菜单命令“File”→“Save As”,找到已设立的文件夹E:\quartusII example,存盘文件名为h adder.bdf,暂不创建工程。
2. 创建图元
将设计的一位二进制半加器生成为图元,为设计一位二进制全加器作准备,具体步骤如下。
(1)在h adder.bdf文件处于活动状态下执行菜单命令“File”→“Create /Update”→“Create Symbol Files for Current File”,如图3-40所示。
图3-40 创建图元操作过程
(2)在弹出的对话框中单击“确定”按钮,在E:\quartusII example文件夹中产生h ad-der.bsf文件,即为创建的图元,如图3-41所示,在其他设计中可以调用。
图3-41 一位二进制半加器创建的图元结果
3. 创建顶层设计文件
(1)利用与一位二进制半加器设计相同的方法,创建一个图形设计输入文件。
(2)打开h adder.bsf,调用一位二进制半加器图元,具体操作过程如图3-42所示。
图3-42 调用一位二进制半加器图元操作过程
(3)完成一位二进制全加器的设计,如图3-43所示。
图3-43 一位二进制全加器
(4)文件存盘:执行菜单命令“File”→“Save As”,找到已设立的文件夹E:\quartusII example,存盘文件名为f adder.bdf,并进入创建工程、完成编译仿真等操作,具体操作过程与前面介绍的相同,此处不再赘述。
(5)层次显示:Quartus II 9.1能够以一个层次树的形式将整个工程和电路的设计层次显示出来。打开层次显示窗口的方法是在编译报告栏选择“Analysis & Synthesis”下的“Re-source Utilization by Entity”,当前工程的层次便显示出来,如图3-44所示。层次树中的每个文件都可以通过双击文件名打开,并送到前台显示。
图3-44 层次显示
3.6 基于宏功能模块的设计
Quartus II软件为用户提供了丰富的宏功能模块库,可提高电路设计的效率和可靠性。Quartus II软件自带的宏模块库有三个,分别是Megafunctions库、Maxplus2库和Primitives库。
Megafunctions库是参数化模块库,是一些经过验证的功能模块,用户根据自己的需要设定模块的端口和参数,即可完成模块的设计。Megafunctions库分为算术运算模块库(arith-metic)、逻辑门(gates)、存储器库(storage)、I/O模块库(I/O)。
Maxplus2库主要由74系列数字集成电路组成。
Primitives库主要由缓冲器(buffer)、引脚(pin)、存储单元(storage)、逻辑门(log-ic)、其他功能(other)组成。
下面以8位计数器为例,介绍使用Megafunctions的基本方法,掌握利用宏功能模块进行数字系统设计的技巧和方法。
1)创建工程 首先按照创建工程的步骤创建工程,建立原理图文件。
2)输入LPM counter宏功能模块
(1)在原理图工作界面下,在空白处的任意位置双击鼠标左键,或者单击绘图工具栏上的按钮,打开如图3-45所示的输入LPM counter宏功能模块对话框,然后选择宏模块所在目录“quartus\ libraries\ megafunctions\ arithmetic”,选择“lpm counter”。单击“OK”按钮,打开如图3-46所示选择输出文件类型对话框。
图3-45 输入LPM counter宏功能模块对话框
图3-46 选择输出文件类型对话框
(2)文件类型可以选择AHDL、VHDL或Verilog HDL。这里选择“Verilog HDL”,然后单击“Next”按钮,打开如图3-47所示设置计数器位数和计数方式对话框。
图3-47 设置计数器位数和计数方式对话框
(3)在图3-47所示对话框中,“How wide should the‘q' output bus be?”项设置计数器的位,“What should the counter direction be?”项设置计数器是加法计数器、减法计数器,还是双向计数器。设置完成后,单击“Next”按钮,打开如图3-48所示的设置计数器模和控制端口对话框。
图3-48 设置计数器模和控制端口对话框
(4)在图3-48所示对话框中,“Which type of counter do you want?”项设置计数器的模,“Do you want any optional additional ports?”项设置计数器的使能端、进位输入端、进位输出端。设置完成后,单击“Next”按钮,打开如图3-49所示设置计数器的复位端、置位端、预置端和同步、异步方向选择对话框。
图3-49 设置计数器的复位端、置位端、预置端和同步、异步方向选择对话框
(5)在图3-49所示对话框中可以设置复位端、置位端、预置端。“Synchronous inputs”表示同步置、复位;“Asynchronous inputs”表示异步置、复位。设置完成后,单击“Next”按钮,打开如图3-50所示的产生网络列表对话框。如果选择“Generate netlist”项,即可产生网络列表,然后单击“Next”按钮,打开如图3-51所示设置结束对话框,单击“Finish”按钮,可结束计数模块的设置。
图3-50 产生网络列表对话框
图3-51 设置结束对话框
完成以上设置后,即可将一个参数化计数器宏模块调入原理图编辑窗口中,添加输入、输出引脚,并命名,如图3-52所示,然后对文件进行保存、编译、仿真。功能仿真结果如图3-53所示。
图3-52 由LPM counter宏功能模块设计的8位计数器原理图
图3-53 8位计数器功能仿真结果
3.7 思考与练习
(1)简述Quartus II 9.1的设计流程。
(2)用图形编辑输入方式设计同步十进制计数器,完成编译和仿真分析。
(3)用文本编辑输入方式设计32位二进制频率计,要求以十六进制数显示频率值。
(4)参照本章层次设计的设计流程,完成一位二进制全加器设计的仿真分析。
(5)用LPM宏功能块设计32位二进制频率计,要求以十六进制数显示频率值。
(6)应用Quartus II 9.1和目标芯片EP20K200EQC240-3设计8 × 8硬件乘法器,进行时序仿真分析,完成引脚锁定。
(7)用文本编辑输入方式设计一个可变进制计数器,根据输入数据来改变计数容量。
(8)设计一个带进位输出的十二进制加法计数器,编译并进行时序仿真分析,说明电路设计的正确性。
(9)设计一个4位移位寄存器,编译并进行时序仿真分析,说明设计的正确性。