第3章 CHAPTER 3 Quartus Prime软件设计 Quartus Prime是Intel公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。 Quartus Prime可以在Windows和Linux上使用,除了可以使用Tcl脚本完成设计流程外,还提供了完善的用户图形界面设计方式。具有运行速度快、界面统一、功能集中、易学易用等特点。 Quartus Prime支持Intel公司的IP核,包含LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性,加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 此外,Quartus Prime通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统; 支持Intel公司的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。 Maxplus Ⅱ作为Intel公司的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。该软件可以支持ACEX1K、FLEX10KE、FLEX10KB、FLEX10KA、FLEX10K、MAX 9000、FLEX 8000、MAX 7000、FLEX 6000、MAX 5000及Classic等各种类型的可编程器件。可以采用图形输入、波形编辑输入、AHDL语言输入、VHDL语言输入、Verilog语言输入,可以完成电路设计的功能分析、时序分析。目前Intel公司已经停止了对Maxplus Ⅱ的更新支持,Quartus Prime与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Intel公司在Quartus Prime中包含许多诸如SignalTap Ⅱ、Chip Editor和RTL Viewer的设计辅助工具,集成了Qsys设计流程,并且继承了Maxplus Ⅱ友好的图形界面及简便的使用方法。 Quartus Prime作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。Intel公司的Quartus Prime可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus Prime平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。 Quartus Prime目前各类版本可以在Intel公司官网上下载,版本号从2.2开始到19.3版本。各版本软件之间的差异如下。 (1) Quartus Prime 9.1之前的软件自带仿真组件,而之后软件不再包含此组件,因此必须安装ModelSim。 (2) Quartus Prime 9.1之前的软件自带硬件库,不需要额外下载安装,而10.0开始需要额外下载硬件库,另行选择安装。 (3) Quartus Prime 11.0之前的软件需要额外下载Nios Ⅱ组件,而11.0开始Quartus Prime 软件自带Nios Ⅱ组件。 (4) Quartus Prime 9.1之前的软件自带SOPC组件,而Quartus Prime 10.0自带SOPC和Qsys两个组件,但从10.1开始,Quartus Prime只包含Qsys组件。 (5) Quartus Prime 10.1之前软件,时序分析包含TimeQuest Timing Analyzer和Classic Timing Analyzer两种分析器,但10.1以后的版本只包含TimeQuset Time Analyzer,因此需要sdc来约束时序。 (6) 中文支持方面: Quartus Prime 8.0以前的版本,可以输入中文也可以显示中文; 8.0≤Quartus Prime版本<9.1,可以显示中文,但是不能输入中文; 9.1≤Quartus Prime版本<11,不能输入中文,同时也不可以显示中文; Quartus Prime 19.3是目前最新版本,可以显示中文字符,同时又能也能输入中文。 目前从官网上下载的开发软件有三种: 精简版、标准版(收费)和专业版(收费),下面对三种版本简单进行对比,用户可根据情况自行选择。具体如表3.1所示。 表3.1Quartus Prime开发软件精简版、标准版和专业版比较 Quartus Prime关键特性精简版标准版专业版 器件支持 Stratix系列Ⅱ~Ⅴ√ Arria系列 Ⅱ仅支持EP2AGX45 Ⅱ~Ⅴ√ 10√√ Cyclone系列 Ⅱ~Ⅴ√√ 10LP√√ 10GX√ MAX系列√√ 设计输入 多处理器支持(编译速度更快)√√ IP基础套件需要购买√√ Intel Qsys系统集成工具√√ Intel Qsys Pro系统集成工具√ 快速重新编译适用于Stratix Ⅴ、Arria Ⅴ和Cyclone Ⅴ器件√ 蓝图平台设计工具√ 功能模拟 ModelSim——Intel FPGA 初级版软件√√√ ModelSim——Intel FPGA 版软件需要额外的许可证 综合支持设计可移植性的行业标准语√ 布局布线 Fitter(布局和布线)√√√ 增量优化√ 混合布局工具适用于 Arria 10、Stratix Ⅴ、Arria Ⅴ和Cyclone Ⅴ器件√ 续表 Quartus Prime关键特性精简版标准版专业版 设计流局部重配置仅适用于Cyclone Ⅴ和Stratix Ⅴ器件√ 时序和功 耗验证 TimeQuest 静态时序分析工具√√√ 功耗分析√√√ 系统内 调试 SignalTap Ⅱ逻辑分析工具√√√ 收发器工具包√√ JNEye链接分析工具√√ 操作系 统支持Windows/Linux 64位支持√√√ 插件开发 工具 面向OpenCL的Intel FPGA SDK需要额外的许可证 适用于Intel FPGA的DSP Builder需要额外的许可证 Nios Ⅱ嵌入式设计套件√√√ Intel系统芯片 FPGA 嵌入式设计套件√√√ Quartus Prime设计软件提供完整的多平台设计环境,能够直接满足特定设计需要,为可编程芯片系统(SOPC) 提供全面的设计环境。Quartus Prime软件含有 FPGA 和 CPLD 设计所有阶段的解决方案。有关Quartus Prime设计流程的图示说明,见图3.1。 图3.1Quartus Prime设计流程 此外,Quartus Prime软件为设计流程的每个阶段提供 Quartus Prime图形用户界面、EDA工具界面以及命令行界面,可以在整个流程中只使用这些界面中的一个,也可以在设计流程的不同阶段使用不同界面。 3.1使用Quartus Prime进行图形化设计 使用Quartus Prime 图形用户界面的基本设计流程如下: (1) 使用New Project Wizard(File菜单) 建立新工程并指定目标器件或器件系列。 (2) 使用Text Editor建立Verilog HDL、VHDL 或Altera硬件描述语言(AHDL) 设计。根据需要,使用Block Editor 建立表示其他设计文件的符号框图,也可以建立原理图。还可以使用MegaWizard PlugInManager(Tools菜单)生成宏功能模块和IP 功能的自定义变量,在设计中将它们例化。 (3) (可选)使用Assignment Editor、Pin Planner、Settings对话框(Assignments菜单)、Floorplan Editor、Design Partitions窗口、LogicLock功能指定初始设计约束。 (4) (可选)进行Early Timing Estimate,在完成Fitter之前生成时序结果的早期估算。 (5) (可选)使用SOPC Builder或DSP Builder建立系统级设计。 (6) (可选)使用Software Builder为Excalibur器件处理器或Nios 嵌入式处理器建立软件和编程文件。 (7) 使用Analysis & Synthesis对设计进行综合。 (8) (可选)如果设计含有分区,而没有进行完整编译,则需要采用Partition Merge合并分区。 (9) (可选)通过使用Simulator 和Generate Functional Simulation Netlist命令在设计中执行功能仿真。 (10) 使用Fitter对设计进行布局布线。 (11) 使用PowerPlay Power Analyzer进行功耗估算和分析。 (12) 使用Timing Analyzer对设计进行时序分析。 (13) 使用Simulator 对设计进行时序仿真。 (14) (可选)使用物理综合、Timing Closure平面布局图、LogicLock功能、Settings 对话框和Assignment Editor改进时序,达到时序逼近。 (15) 使用Assembler为设计建立编程文件。 (16) 使用编程文件、Programmer和Intel硬件对器件进行编程; 或将编程文件转换为其他文件格式以供嵌入式处理器等其他系统使用。 (17) (可选)使用SignalTap Ⅱ Logic Analyzer、SignalProbe功能或Chip Editor对设计进行调试。 (18) (可选)使用Chip Editor、Resource Property Editor和Change Manager管理工程更改。 下面根据以上步骤详细介绍利用Block Editor设计4位二进制计数器。 3.1.1创建工作库 在完成一个设计(Project)之前,必须建立一个文件夹以便保存设计中的所有文件。需要注意的是文件夹名不能用中文,不能含有空格并且整个项目路径都不能有中文存在,建议以英文或英文结合数字方式命名。 建立好的文件夹称为工作库,一般情况下,不同的项目应放在不同的文件夹中,同一工程下的不同文件都应保存在同一文件夹中。 3.1.2利用工程向导创建工程 打开Quartus Prime图形用户界面,如图3.2所示。 图3.2Quartus Prime图形用户界面 选择File→New Project Wizard命令,利用向导来完成工程的建立,操作如图3.3所示,单击后出现如图3.4所示的对话框。对话框第一行为工作库路径,单击右侧 图标,选择为该项目新建立的文件夹,此处选择了E盘名为count16_gdf的文件夹作为项目工程的工作库。对话框第二行为新建 图3.3新工程建立向导 工程命名,此处命名为count16,当然工程名可以任取,只要符合命名规则即可。也可利用右侧按钮为当前项目添加已有工程。对话框第三行为当前工程顶层文件实体名,这里系统自动默认为当前的新建工程名count16。 工作库和工程名称设置好之后,单击Next按钮进入下一设置环节,如图3.5所示。在该窗口可以选择创建空白工程或基于工程模板,本例选择基于空白工程,单击Next按钮。 图3.4选择工作库和工程名称 图3.5选择建立空白工程 在弹出的对话框中完成设计文件的添加。可以利用Flie name添加设计文件,也可以利用右侧Add All按钮添加文件夹中所有文件,如果没有已经设计好的文件,也可直接单击Next按钮略过此步,如图3.6所示。 图3.6添加设计文件 进入第4页设置页面选择目标芯片,如图3.7所示。首先选择使用的目标芯片系列,本项目选择Cyclone Ⅳ E系列芯片,在下 拉菜单中选择EP4CE115F29C7芯片,作为项目执行芯片,其中芯片的最后两个字符C7表示芯片的速度级别。当然也可以利用对话框右侧的过滤窗口选择目标芯片,Package为芯片封装,Pin count为芯片引脚数,Core speed grade为速度级别。以上设置完成后单击Next按钮进入第5页设置。 图3.7目标器件设置 第5页为EDA工具设置界面,如图3.8所示。该项设置主要用于输入设计、综合、仿真、校验等,如有第三方工具可以进行对应选择,此处主要选择工程所需要的综合与仿真工具,如果设计想使用第三方的工具,不使用系统集成的工具,需要在此处声明使用的是哪个工具,一般只能选择所支持的第三方工具,Synplify就是一款性能优异的第三方综合工具,此处选择默认。仿真工具选用ModelSimAltera,语言选择VHDL。EDA工具设置完成后单击Next按钮结束设置,接下来弹出的窗口为项目总体概述,单击Finish按钮结束整个工程的建立。 图3.8EDA工具设置 3.1.3图形设计输入 本节以T触发器设计4位二进制计数器为例讲述利用图形方式设计数字单元的方法。 图3.9新建文件对话框 (1) 建立工程后选择File→New命令为工程建立设计文件,弹出如图3.9所示的窗口。该窗口选项可为当前工程设计包含4类文件 : Design Files(设计文件)、Memory Files (内存文件)、Verification/Debugging Files(校验/调试文件)、Other Files(其他文件)。本设计采用图形方式进行设计,选择Design Files→Block Diagram/Schematic File命令建立图形设计文件。 (2) 为图形设计文件添加所需元件。用鼠标左键双击图形工作区域的空白处或单击鼠标右键选择Insert→Symble 命令,弹出Symbol(元件符号)设置对话框,如图3.10所示,在此对话框下完成相应元件的添加。Quartus Prime库中自带的元件均在其安装目录下的libraries文件夹中,在其文件夹下有3个子文件夹。 megafunctions中为兆功能模块,主要包括参数可设置的I/O、运算单元、逻辑门和存储单元; others中主要包含Maxplus Ⅱ所自带的74系列标准单元; primitives中主要包含基本的buffer(缓冲器)、logic(基本逻辑门)、other(包括逻辑高、低、常数等)、pin(输入、输出、双向端口)、storage(基本触发器等)。 图3.10元件符号对话框 本设计中采用元件为primitives库中logic目录下的and2,storage目录下的tff触发器,other目录下的vcc,pin目录下的input、output。连接好后如图3.11所示。连接后在input和output的pin_name处双击修改引脚名称,修改名称原则符合VHDL命名规则,不能重名。如有总线类型的引脚命名中总线宽度n用中括号表示[n-1,…,0]。 图3.11T触发器设计的4位二进制计数器 (3) 存盘。选择File→Save命令进行初次保存,命名为counter16.bdf,保存至项目路径所在文件夹中。如遇到修改设计名称可选择File→Save as命令为设计文件进行重新命名。 3.1.4项目编译 项目设计文件完成之后,要对设计文件进行检错、综合及时序分析等。同时产生多种用途的输出文件。编译之前要设置工程顶层实体。项目设计中如果存在多个设计文件需要编译,则需要为编译器指定当前准备编译的设计,选择Project→Set as Toplevel Entity命令指定顶层实体。 Quartus Prime编译器的主要任务是对设计项目进行检查并完成逻辑综合,同时将项目最终设计结果生成器件的下载文件。Quartus Prime软件中的编译类型有全编译和分步编译两种。选择Quartus Prime主窗口Process→Start Compilation命令,或者在主窗口的工具栏上直接单击 图标可以进行全编译。全编译的过程包括分析与综合(Analysis & Synthesis)、适配(Fitter)、编程(Assembler)、时序分析(Classical Timing Analysis)这4个环节,而这4个环节各自对应相应的菜单命令,可以单独分步执行,也就是分步编译。在设计的调试和优化过程中,可以使用RTL阅读器观察设计电路的综合结果。 分步编译就是使用对应命令分步执行对应的编译环节,每完成一个编译环节,生成一个对应的编译报告。分步编译与全编译一样分为4步: (1) 分析与综合(Analysis & Synthesis): 设计文件进行分析和检查输入文件是否有错误,对应的菜单命令是Quartus Prime主窗口Processing菜单下的Start\Start Analysis & Synthesis,对应的快捷图标是主窗口的左侧工具栏上的。 (2) 适配(Fitter): 在适配过程中,完成设计逻辑器件中的布局布线、选择适当的内部互连路径、引脚分配、逻辑元件分配等,对应的菜单命令是Quartus Prime主窗口Processing菜单下的Start\Start Fitter(注: 两种编译方式引脚分配有所区别); 对应的快捷图标是主窗口的左侧工具栏上的。 (3) 编程(Assembler): 产生多种形式的器件编程映像文件,通过软件下载到目标器件中,对应的菜单命令是Quartus Prime主窗口Processing菜单下的Start\Start Assembler; 对应的快捷图标是主窗口的左侧工具栏上的。 (4) 时序分析(Classical Timing Analyzer): 计算给定设计与器件上的延时,完成设计分析的时序分析和所有逻辑的性能分析,菜单命令是Quartus Prime主窗口Process菜单下的Start\Start Classical Timing Analyzer; 对应的快捷图标是主窗口的左侧工具栏上的。 编译完成以后,编译报告窗口Compilation Report会报告工程文件编译的相关信息,如编译的顶层文件名、目标芯片的信号、引脚的数目等,如图3.12所示。如果详细了解各部分编译报告可单击左侧Task栏中各个小三角符号,可展开了解详细编译报告。 图3.12全编译运行结果信息 全编译操作简单,适合简单的设计。对于复杂的设计,选择分步编译可以及时发现问题,提高设计纠错的效率,从而提高设计效率。 在编译过程中,应随时注意界面下方Message信息栏中的Processing信息,此处显示当前编译器的处理进程,如遇到设计文件语句或原理图错误,将会暂停编译,用户可双击错误信息,软件会自动定位到出错文件的大概出错位置,根据错误提示信息及错误定位即可修改。注意,有时双击错误信息不会与原理图或设计文件对应,此时应考虑是否是软件设置所出现的问题,检查软件编译配置,重新编译。如果对某一文件进行编译时遇到大量错误信息,此时修改错误的原则应从第一条错误信息进行修改,修改完成之后可以保存进行再次编译,大多数情况下后面出现的错误信息往往是由前面的错误信息引起的连带错误报告。 (5) 项目编译其他设置。在对项目进行编译之前,可以根据项目需求做一些相关配置或目标器件、配置芯片的更改。 选择菜单Assignments→Settings命令会弹出项目各个设置对话框,如图3.13所示。也可选择工具栏中 图标打开设置对话框。设置对话框中左侧选项为设置分类(Category),右侧为相关分类的详细设置。 图3.13设置对话框 General: 项目顶层设计实体; Files: 项目文件; Libraries: 项目库; Operating Settings and Conditions: 项目工作电压工作温度; Compilation Process Settings: 编译处理器设置,可以为项目编译设置多核并行处理器、早期时间估计、增量编译、物理综合选项等; EDA Tools Settings: 第三方EDA工具设置选项; Assembler: 汇编设置。 设置对话框右上角有Device配置按钮,单击后弹出目标器件配置信息,器件配置对话框如图3.14所示,由此可修改目标芯片。 在对话框中单击Device and Pin Options...按钮会弹出器件和引脚的详细配置,如图3.15所示。设置框左侧为设置分类,右侧为具体设置参数。在设置过程中应参看右下角Description描述说明来进行具体设置。系统默认的General选项为Autorestart configuration after error,意为配置过程出现错误后重新启动配置进程。JTAG用户编码可由用户编码指令通过JTAG接口获得。 Configuration配置选项如图3.16所示。Configuration scheme选项为当前项目配置芯片选择配置方式,包括Active Serial(主动串行配置)、Passive Serial(被动串行配置),以上 图3.14器件配置对话框 图3.15器件和引脚配置 图3.16配置选项 两种方式都能用于芯片配置。如果使用配置芯片对目标芯片配置,选择 Use configuration device中的具体型号,如EPCS1、EPCS16等,也可选择Auto进行自动选择,PS方式仅用于EPC1、EPC2配置方式。Generate compressed bitstreams选项可对配置文件进行压缩,目标芯片能够识别压缩后的配置文件并实时解压进行配置。 Programming Files为输出文件配置,主要用于选择编程文件的产生格式。对于PS被动配置方式,Quartus Prime软件会根据目标芯片型号指定不同的配置文件格式,如用于SRAM目标文件(.sof)、SRAM文件(.psof)或编程目标文件(.pof)。也可产生二进制配置文件(.hexout),可设置起始地址和地址递增方式。此类文件可用于EPROM和单片机构成的FPGA配置电路。 Unused Pins为未使用引脚设置,此处属于芯片全局未使用引脚配置。可对未使用引脚配置5种状态: As inputs tristated(输入三态)、As input tristated with bushold circuitry(具有总线保持电路的输入三态)、As input tristated with weak pullup(具 有弱上拉的输入三态)、As output driving ground(输出接地)、As output driving unspecified signal(输出不确定信号)。以上设置是针对全局未使用引脚进行配置,如需单一引脚配置,可使用Assignment editor进行配置。 DualPurpose Pins为多功能引脚设置。在目标芯片配置完成后,某些配置引脚可进行第二功能设定,如nCEO、nCSO、ASDO。不同芯片多功能引脚不同,对于多功能引脚可以配置成普通I/O引脚或输入三态等。 3.1.5时序仿真 对项目编译通过后,要对设计的功能和时序进行仿真测试,确保设计文件符合设计上的功能和时序上的要求。 时序仿真在不同Quartus Prime软件版本中有不同的操作,差别较大。在Quartus Prime 9.1之前(包括MAXPLUS Ⅱ)的软件自带仿真组件,而之后软件不再包含此组件。Quartus Prime 9.1版本之前自带的仿真组件不支持TestBench,只支持波形文件.vwf。vwf文件全称是矢量波形文件(Vector Waveform File),是Quartus Prime中仿真输入、计算、输出数据的载体。一般设计者建立波形文件时,需要自行建立复位、时钟信号以及控制和输入数据、输出数据信号等。其中工作量最大的就是输入数据的波形录入。比如要仿真仅1KB的串行输入数据量,则手工输入信号的波形要画8000个周期,不仅费时费力而且容易出错。因此在Quartus Prime9.1版本之后仿真必须安装ModelSimAltera或第三方仿真软件ModelSim PE/SE。在仿真之前应设计相应的测试文件(Test Bench),通过调用Quartus Prime的ModelSimAltera 或第三方仿真软件ModelSim进行相关仿真。 ModelSim仿真软件本身支持设计VHDL和Verilog HDL,由于本例程采用Quartus Prime原理图设计方法,故无法直接调用本身的ModelSimAltera或第三方仿真软件ModelSim PE/SE直接进行仿真,所以只能选取Quartus Prime编译后产生的文件添加至ModelSim PE/SE软件中进行仿真测试。 1. 创建波形文件 依次选择File→New→Verification/Debugging Files→University Program VWF命令,如图3.17所示。 图3.17创建波形仿真文件 2. 设置仿真时间 仿真时间长度根据被仿真工程的需要决定,依次选择File→Edit→Set End Time命令,本项目设置为1.0μs,如图3.18所示。 3. 添加仿真节点 在仿真之前需要在波形文件中添加需要的信号,选择Edit→Insert→Insert Node or Bus命令,弹出如图3.19所示的窗口。 单击窗口中Node Finder按钮,弹出如图3.20所示的过滤窗口。单击 按钮,在左侧会有相应的仿真信号列表,根据需要加以选择。再次单击 按钮,将信号添加至右侧,单击 按钮完成信号添加。添加后界面如图3.21所示。此时添加的输入信号默认都是0电平,输出信号呈网状,表示未知状态。 图3.18设置仿真结束时间 图3.19设置仿真时间 图3.20过滤窗口 图3.21添加后仿真节点 4. 添加激励信号 如果想要得到正确的仿真结果,需要根据设计工程的功能要求为输入信号按照一定逻辑添加激励信号。本工程输入信号只有clock故需要为该信号添加时钟信号。单击左键选中信号,选中信号后将会有工具栏被激活。其中,X表示强未知,0表示逻辑0,1表示逻辑1,Z表示高阻,L表示弱0,H表示弱1(表示电路中双向信号由电阻上拉或下拉),INV表示取反,C表示计数,秒表图 标表示时钟,?表示设置信号表示方式,R设置随机数,本工程选择时钟激励。添加后 选择File→Save命令保存仿真文件。 5. 运行仿真 单击Simulation→Option,选择Run Functional Simulation(功能仿真)或Run Timing Simulator(时间仿真),如图3.22所示。时间仿真可以显示出输出信号与输入信号的延时关系。功能仿真结果如图3.23所示。 图3.22运行功能仿真 图3.23功能仿真结果 6. 信号分组 为了便于观察结果,可以将关联的信号分组形成多值波形观察。本例中Q0~Q3可以分组用二进制或十进制或十六进制观察结果,分组时注意信号方向,Q3为高位,本例中采用十六进制观察计数器结果,结果显示为0~F循环变化。分组方法同时选中待分组信号,右击Grouping→Group,弹出如图3.24所示的界面。Group name自定义为Q,Radix选择为Unsigned Decimal,单击OK按钮,仿真结果如图3.25所示。 图3.24信号分组 图3.25分组后仿真结果 3.2使用Quartus Prime进行VHDL设计 Quartus Prime支持多种设计输入形式,本书主要讲述利用VHDL进行数字系统设计开发的过程。 3.2.1VHDL文本输入 开发过程与图形方式设计过程一致,在新建文件时选择VHDL File即可,如图3.26所示。 图3.26选择VHDL设计 下面以十进制计数器为例,介绍VHDL设计过程。在VHDL文件中编写如例3.1所示代码。 【例3.1】VHDL文件中的代码。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; --库 entity cnt10 is--实体 port (clk: in std_logic; rst_n: in std_logic; counter: out std_logic_vector (3 downto 0)); end cnt10; architecture art of cnt10 is--结构体 signal temp: std_logic_vector(3 downto 0); begin process(clk, rst_n , temp) begin if rst_n='0' then temp <="0000";--复位清零 elsif clk'event and clk='1' then if temp="1001" then temp <="0000";--计数器小于9时自加 else temp <=temp+'1'; end if; end if; counter<=temp; end process; end art; 工程通过编译后,将要进行工程仿真,本节将介绍另外一种仿真方式,即Quartus Prime和ModelSimAltera联合仿真,该方法也是业界目前较为普遍的仿真方式。 3.2.2ModelSimAltera介绍 Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。 ModelSim分几种不同的版本: SE、PE、LE和OEM,其中SE是最高级的版本。而集成在 Actel、Atmel、Intel、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。ModelSim SE是主要版本号,也是功能最强大的版本,支持对Verilog和VHDL语言的混合仿真。除了主要版本外,Mentor公司还为各大FPGA厂商提供 OEM版本: XE是为Xilinx公司提供的OEM版,包括Xilinx公司的库文件; AE是为Intel公司提供的OEM版,包含Altera公司的库文件; 在用特定公司的OEM版进行仿真时不需要编译该公司的库文件,但是仿真速度等性能指标都要落后于SE版本。 3.2.3TestBench编写 如果采用ModelSimAltera进行仿真,需要为被仿真文件编写TestBench,本节只给出利用Quartus Prime模板编写TestBench文件并完成仿真过程及结果。详细使用和TestBench写法将在后续章节中详细介绍。 Quartus Prime软件根据设计文件可产生一个TestBench设计模板,该模板已经给出被测文件的元件声明与例化,并完成了相关信号的定义,用户可在现有模板的基础上完成相关激励信号的产生。 选择Quartus Prime菜单中Processing→Start→ Start Test Bench Template Writer 命令,启动TestBench模板,如图3.27所示。Quartus Prime利用网表编写器完成TestBench的编写操作,并会将文件自动保存至文件夹中,根据软件下方的信息提示可见测试文件被保存在Info(201002): Generated VHDL Test Bench File E:/QII_Prime_VHDL/Chapter3/counter16_gdf/simulation/modelsim/cnt10.vht for simulation中,测试文件后缀为*vht, 具体信息如图3.28所示。 图3.27启动TestBench模板 图3.28模板自动保存位置信息 单击工具栏中的打开 按钮,根据TestBench模板创建信息提示,打开软件创建的TestBench模板文件,该文件保存在工程所在文件夹下: simulation /modelsim/cnt10_vhd_tst.vht。软件自动创建的TestBench模板文件如例3.2所示。 【例3.2】TestBench模板文件。 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY cnt10_vhd_tst IS END cnt10_vhd_tst; ARCHITECTURE cnt10_arch OF cnt10_vhd_tst IS -- constants -- signals SIGNAL clk : STD_LOGIC; SIGNAL counter : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL rst_n : STD_LOGIC; COMPONENT cnt10 PORT ( clk : IN STD_LOGIC; counter : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); rst_n : IN STD_LOGIC ); END COMPONENT; BEGIN i1 : cnt10 PORT MAP ( -- list connections between master ports and signals clk=> clk, counter=> counter, rst_n=> rst_n ); init : PROCESS -- variable declarations BEGIN -- code that executes only once WAIT; END PROCESS init; always : PROCESS -- optional sensitivity list -- () -- variable declarations BEGIN -- code executes for every event on sensitivity list WAIT; END PROCESS always; END cnt10_arch; 从TestBench模板来看,测试文件中实体为空,实际上测试文件主要是产生内部的激励源,通过内部信号与被测文件实体端口进行连接进行测试。测试文件的结构体说明语句中包含两部分: 一部分为与被测实体端口连接的内部信号定义; 另一部分为被测文件的元件声明。被测端口为定义信号,与被测实体端口一致,为clk、counter、rst_n。结构体描述语句中给出两类进程的模板 : 初始化进程,该进程内部信号仅执行一次就进入无限等待; 循环执行进程,多次执行用于时钟类信号的产生。本例程为具有异步复位功能的十进制计数器,输入激励信号为时钟信号和复位信号,因此在一次执行信号中加入复位信号,复位时间为100ns,100ns后复位信号拉高; 在循环进程中添加时钟产生语句,添加前在结构体内部定义了时钟周期为20ns的常数clock_period,及仿真50MHz时钟信号。在循环进程中利用WAIT语句生成时钟信号。 修改后的测试文件如例3.3所示。 【例3.3】修改后的测试文件。 LIBRARY ieee; USE ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; ENTITY cnt10_vhd_tst IS END cnt10_vhd_tst; ARCHITECTURE cnt10_arch OF cnt10_vhd_tst IS constant clock_period:TIME:=20ns; SIGNAL clk : STD_LOGIC; SIGNAL counter : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL rst_n : STD_LOGIC; COMPONENT cnt10 PORT ( clk : IN STD_LOGIC; counter : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); rst_n : IN STD_LOGIC ); END COMPONENT; BEGIN i1 : cnt10 PORT MAP ( clk=> clk, counter=> counter, rst_n=> rst_n ); init : PROCESS BEGIN rst_n<='0'; wait for 100ns; rst_n<='1';-- code that executes only once WAIT; END PROCESS init; always : PROCESS BEGIN clk<='1'; wait forclock_period/2; clk<='0'; wait forclock_period/2; END PROCESS always; END cnt10_arch; 3.2.4调用ModelSimAltera RTL仿真 RTL行为级仿真也叫功能仿真,这个阶段的仿真可以用来检查代码中的语法错误及代码行为的正确性,其中不包括延时信息。如果没有实例化一些与器件相关的特殊底层元件,这个阶段的仿真也可以做到与器件无关。需要的文件为编写的VHDL源文件以及TB文件。如果用到PLL等IP核,需要挂载器件库文件。 图3.29设置测试文件 图3.30新建测试文件 图3.31测试文件设置 (1) 设置测试文件。单击Quartus Prime主窗体中Assigments→Settings下的Simulation,弹出如图3.29所示选项卡。在NativeLink settings下单击 按钮,弹出如图3.30所示窗体,单击 按钮,弹出如图3.31所示的窗体,单击窗体 按钮,选择之前编辑好的测试文件路径,一般在…simulation/modelsim/cnt10.vht,单击Add按钮完成测试文件的添加。在Test bench name和Top level module in test bench中填入测试文件名称,本例中名称为cnt10_tst。 (2) RTL仿真。单击Tools→RTL simulation,Quartus Prime会自动调用ModelSimAltera仿真器弹出如图3.32所示的仿真结果。 图3.32RTL仿真结果 (3) ModelSimAltera快捷按钮说明: : 停止仿真; : 第一个图标表示窗口放大; 第二个图标表示以游标为中心缩小; 第三个图标表示窗口适配,将当前全部仿真结果在一个界面中显示; 第四个图标表示以游标为中心放大; : 第一个图标为复位,所有仿真信号复位; 第二个窗体为仿真时间; 第三个图标为运行一次仿真。 为了便于观察仿真结果,可以选择图3.32中左侧的信号名称,单击鼠标右键,选择Radix显示结果,本例中可以选择unsigned作为结果显示。 3.2.5调用ModelSimAltera门级仿真 门级仿真也叫综合后仿真。绝大多数的综合工具除了可以输出一个标准网表文件以外,还可以输出Verilog或者VHDL网表,其中标准网表文件是用来在各个工具之间传递设计数据的,并不能用来仿真,而输出的Verilog或者VHDL网表可以用来仿真。之所以叫门级仿真,是因为综合工具给出的仿真网表已经与生产厂家器件的底层元件模型对应起来了。所以为了进行综合后仿真,必须在仿真过程中加入厂家的器件库,对仿真器进行一些必要的配置,否则仿真器并不认识其中的底层元件,无法进行仿真。综合后生成的网表文件(.vo)加TB仿真; 网表是与器件有关的,所以要挂载好相关器件库文件。可以看到,门级仿真引入了中间态。对于Quartus Prime生成的vo文件,首先要注释掉其中的挂载sdo文件语句,否则仿真是时序仿真,因为添加了sdo延时文件。需要的文件为vo网表文件以及TB文件。需要挂载器件库文件。 时序仿真也叫后仿真。在设计布局布线完成以后,可以提供一个时序仿真模型,这种模型中也包括了器件的一些信息,同时还会提供一个SDF时序标注文件(Standard Delay Format Timing Anotation)。SDF时序标注最初使用在Verilog语言的设计中,现在VHDL语言的设计中也引用了这个概念。对于一般的设计者来说,并不需知道SDF文件的详细细节,因为这个文件一般由器件厂家提供给设计者,Xilinx公司使用SDF作为时序标注文件扩展名,Intel公司使用SDO作为时序标注文件的扩展名。在SDF时序标注文件中对每一个底层逻辑门提供了3种不同的延时值,分别是典型延时值、最小延时值和最大延时值,在对SDF标注文件进行实例化说明时,必须指定使用了哪种延时。虽然在设计的最初阶段就已经定义了设计的功能,但是只有当设计布局布线到一个器件中之后,才会得到精确的延时信息,在这个阶段才可以模拟到比较接近实际电路的行为。网表文件加延时,仿真中会包含延时信息。需要的文件为vo网表文件以及TB文件以及延时文件sdo(采用脚本挂载)。需要挂载器件库文件。 具体步骤参考3.2.4节。在弹出如图3.31所示界面时需要进行修改,修改结果如图3.33所示。 图3.33门级仿真设置 在进行门级仿真之前,VHDL设计文件需进行EDA Netlist Writer操作,获得底层网表文件。设置完成后单击Tools→GATE level Simulation,Quartus Prime会自动调用ModelSimAltera仿真器,弹出如图3.34所示的仿真结果。从图中可以看出,当时钟上升沿到来后,输出需要经过一段延时才发生变化。 图3.34门级仿真结果 3.2.6引脚分配 仿真完成后,需要给设计分配引脚。分配引脚的目的是将设计中的输入输出信号指定到器件中的某个引脚,并设置此引脚的电平标准和电流强度等。分配引脚的原则是根据器件的外围电路决定的。在本例中输入信号1个为时钟1个复位,输出信号4个,根据外设的实际情况,将输入引脚分配至按钮开关实现时钟输入和复位输入,输出引脚分配至4个发光二极管,通过发光二极管的状态判断当前的设计是否实现预定功能。 单击Assignment→Pin Planner弹出如图3.35所示的窗口。在Location列根据信号名称双击该区域分配引脚。按照图3.35按顺序给工程中输入输出引脚进行分配。完成引脚分配后直接关闭该窗体。 图3.35Pin Planner分配窗口 3.2.7分析与综合 综合就是把HDL语言/原理图转换为最基本的与、或、非门及RAM、触发器等基本逻辑单元的链接关系,并根据要求优化形成的门级逻辑连接最终生成综合网表的过程。综合网表的业界标准是EDIF格式。文件后缀通常为.edn、.edf、.edif。综合网表中,除了包含HDL语言中与门、非门等组合逻辑和寄存器等时序逻辑外,还包含FPGA特有的各种原语(Primitive),比如LUT 、BRAM、DSP48,甚至PowerPC、PCIe等硬核模块,以及这些模块的属性和约束信息。 Quartus Prime的Analysis&Synthesis支持VHDL 1987、VHDL1993和VHDL2008标准。这些标准 均可在Assignment→Setting→Analysis&Synthesis settings→VHDL Input中设置。除了QUARTUS PRIME自带的综合工具外还有很多第三方的综合工具,如Synopsys(收购了Synplicity)的Synplify,Mentor Graphic的Precision。 进行分析与综合可以单击软件快捷工具中 或左侧导航中 进行。 3.2.8布局与布线 所谓布局是指将逻辑网表中的硬件原语或者低层单元合理地适配到FPGA内部的固有硬件结构上,布局的优劣对设计的最终结果(在速度和面积两个方面)影响很大。所谓布线是指根据布局的拓扑结构,利用FPCA内部的各种连线资源,合理正确连接各个元件的过程。Quartus Prime软件的Fitter(Place & Route),指的就是布局布线,它将每一个逻辑函数放在最好的逻辑单元位置以满足布线和时序,它也自动分配恰当互连路径和引脚。如果用户在设计中有设计约束,布局布线会在目标器件上尽力满足设置的约束,并优化整体设计。如没有设置的约束,布局布线也会自动进行优化。详细设置可在Assignment→Setting→Fitter Settings选项中进行设置。 3.2.9器件编程 当工程编译通过后,接下来要进行器件编程或配置用于板级验证。单击快捷工具中 或左侧导航中 生成编程文件。Quartus Prime编程器允许编程和配置Intel公司的CPLD、FPGA和配置器件。编程或配置文件格式如表3.2所示。 表3.2编程文件格式 文 件 格 式FPGACPLD配置器件串行配置器件 SRAM Object File(.sof)YES——— Program Object File(.pof)—YESYESYES JEDEC JESD71 STAPL Format File(.jam)YESYESYES— JAM Byte Code File(.jbc)YESYESYES— 单击快捷按钮 或双击左侧任务栏 打开Quartus Prime Programmer界面,如图3.36所示。 图3.36Quartus Prime Programmer界面 单击界面左上角Hardware Setup…进行编程器设置,如果编程器正常,则在弹出界面中选择USBBlaster[USB_D]选项,如图3.37所示。 图3.37设置硬件 硬件设置完成后需要设置编程模式,编程模式设置在图3.36右上方下拉列表中选择,本例中选择JTAG模式。Intel 可编程逻辑器件中支持4种编程模式,如表3.3所示。 表3.3编程模式 Quartus Prime Programmer 支持的编程模式FPGACPLD配置器件串行配置器件 JTAGYESYESYES— Passive Serial(PS)YES——— Active Serial(AS)———YES Configure via Protocol(CVP)YES——— Insocket Modes(ISM)—MAX Ⅱ器件除外YESYES 编程模式选择后需要制定编程文件,单击图3.36中左侧Add File按钮,在弹出窗口中制定工程中的编程文件——即在工程所在文件夹output_files中以sof为后缀的配置文件。本例中选择counter.sof文件,同时勾选与文件对应的Program/Configure。最后单击图3.36中Start按钮进行器件配置,当左上角进度条100%时表示已完成器件配置,用户可以进行板级硬件验证。 3.3Quartus Prime的IP使用 Intel公司的Quartus Prime软件提供两类功能模块: 免费的LPM宏功能模块(Megafunction/LPM)如表3.4所示,和需要授权使用的IP和AMPP IP核(MegaCore),如表3.5所示,两者在实现功能上有区别,使用方法相同。 表3.4Intel Quartus Prime提供的基本宏功能 类型描述 算术组件累加器、加法器、乘法器和LPM算术函数 门包括多路复用器和LPM门函数 I/O组件包括时钟数据恢复(CDR)、锁相环(PLL)、双数据速率(DDR)、千兆位收发器块(GXB)、LVDS接收器和发送器、PLL重新配置和远程更新宏功能模块 存储器编译器FIFO partitioner、RAM和ROM宏功能模块 存储组件存储器、移位寄存器和LPM存储器函数 表3.5Intel Quartus Prime提供的MegaCore 数字信号处理类通信类接口和外设类微处理器类 FIRUTOPIA2PCI MT32Nios&Nios Ⅱ FFTPOSPHY2PCI T32SRAM Interface Reed SolomonPOSPHY3PCI MT64SDR DRAM Interface VirterbiSIP4.2DisplayPortFLASH Interface Turbo Encode/DecoderSONET FramerDDR1/2/3UART NCORapid I/OMemory I/FSPI Color Space Converter8B10BHyperTransportProgrammable I/O FIR ⅡPCIE1/4/8SMSC MAC/PHY I/F QDRII+MEM IFHPS RLDRAM MEM IF 本节在3.1.3节的4位二进制计数器基础上以为clk引脚添加宏功能模块PLL为例,对Quartus Prime中使用宏功能的方法加以说明。用户可以利用Quartus Prime软件中的IP Catalog管理器来建立或修改宏功能模块。要运行IP Catalog管理器需要在Quartus Prime界面下单击Tools→IP Catalog选项或单击快捷工具按钮 在软件界面弹出如图3.38所示的窗体。从库中看出有几类IP: 基本功能、DSP、接口协议、内存接口和控制器、处理器和外围设备、大学计划IP。由于是第一次添加选择第一个选项,单击Next按钮,弹出如图3.39所示的窗口。 在图3.38所示界面的左侧选择需要添加的宏功能模块。配置PLL时,在Basic Functions→Clocks,PLL,Resets→PLL→ALTPLL,语言选择VHDL,输出路径选择用户工程所在文件夹模块名称命名为my_pll,如图3.39所示,单击OK按钮,弹出如图3.40所示设置窗体。 图3.38IP Catalog添加界面 图3.39添加PLL 图3.40用MegaWizard 设置page1 配置PLL时,在图3.40窗口中inclk0频率根据硬件实际情况设置,本例设置为50MHz,从图3.40可以看出,设置PLL共需要12步,以下配置将根据设计需求进行选择性说明。单击Next按钮,弹出如图3.41所示的窗口。 取消勾选图3.41所示窗口中的选项,此处需根据实际情况设置。单击Next按钮,直到设置page6,如图3.42所示。 图3.41MegaWizard 设置page2 在图3.42窗口中可以设置想要输出的时钟参数: 相移、占空比、频率。设置输出频率有两种方式: 第一种直接选中Enter output clock frequency,直接设置想要的输出频率值,单位为MHz,第二种可以是针对输入时钟进行倍频、分频系数设置等到输出时钟频率。本例中选择第一种直接设置输出时钟频率0.002MHz,如图3.42所示。 图3.42MegaWizard设置page6 在图3.43窗体中为IP生成的最后一步,用户可以根据需要对生成的文件进行勾选,文件类型说明如表3.6所示。本例中由于是原理图方式进行设计所以要勾选*.bsf文件,然后单击Finish按钮完成IP生成。 表3.6MegaWizard 输出文件类型 文 件 类 型说明 *.bsf原理图编辑器使用的符号文件 *.cmpVHDL设计中元件声明文件 *.vhdVHDL设计中实例化的封装文件 *.vVerilog HDL设计中实例化的封装文件 *_inst.vhdVHDL设计中实例化的模板 *_inst.vVerilog HDL设计中实例化的模板 图3.43MegaWizard 设置page12 打开3.1.3节工程文件,双击空白工作区域添加生成好的宏功能模块my_pll并加入到原理图中,加入后如图3.44所示。然后经过编译综合布局布线最终形成配置文件,下载到FPGA中进行验证。如果使用VHDL进行设计时,需要用元件例化语句将生成的IP宏功能模块加入工程文件中。 图3.44加入my_pll后的原理图 3.4SignalTap Ⅱ逻辑分析仪的应用 SignalTap Ⅱ全称SignalTap Ⅱ Logic Analyzer,是第二代系统级调试工具,可以捕获和显示实时信号,观察在系统设计中的硬件和软件之间的相互作用。Quartus Prime软件可以选择要捕获的信号、开始捕获的时间,以及要捕获多少数据样本。还可以选择时间数据从器件的存储器块通过JTAG端口传送至SignalTap Ⅱ Logic Analyzer,还是至I/O引脚以供外部逻辑分析仪或示波器使用。将实时数据提供给工程师帮助调试。 SignalTap Ⅱ获取实时数据的原理是在工程中引入Megafunction中的ELA(Embedded Logic Analyzer),以预先设定的时钟采样实时数据,并存储于FPGA片上RAM资源中,然后通过JTAG传送回Quartus Prime分析。可见,SignalTap Ⅱ其实也是在工程额外加入了模块来采集信号,所以使用SignalTap Ⅱ需要一定的代价,首先是逻辑单元(ELA),其次是RAM,如果工程中剩余的 RAM资源比较充足,则SignalTap Ⅱ 一次可以采集较多的数据,相应的如果FPGA资源已被工程耗尽则无法使用SignalTap Ⅱ调试。 SignalTap Ⅱ任务流程如图3.45所示。 图3.45SignalTap Ⅱ任务流程 (1) 至少准备一个完整的FPGA设计工程,以满足能够下载到FPGA器件中进行在线调试。 (2) 使用.stp文件在该工程中建立嵌入式逻辑分析仪,并进行相关设置,包括指定采集时钟、采样深度、触发条件、存储器模式、触发级别和添加采样信号等。 (3) 根据需要对工程进行编译。当第一次将逻辑分析仪加入到工程中,或者对逻辑分析仪各项设置参数进行了较大改动,例如增加了要监测的新信号,那么需要进行编译或重新编译。对现有SignalTap Ⅱ的某些基本改动是运行时可配置的,例如禁用某一触发条件,则不需要重新编译。 (4) 将含有逻辑分析仪的设计下载至FPGA器件,通过JTAG链接来运行并控制它。 (5) 出现触发事件时,逻辑分析仪停止,采集到的数据被传送到SignalTap Ⅱ文件窗口。用户在该窗口进行查看、分析、保存,找到设计中的问题。 (6) 调试后判断是否发现并改正了问题,如果是,则将捆绑在工程中的逻辑分析仪去掉,整个调试流程结束; 相反,则重新配置逻辑分析仪,调整触发条件,再次寻找其他问题或漏洞。 本节以文本方式设计的十进制计数器为例进行说明(计数器中例化了前面的PLL锁相环)。利用SignalTap Ⅱ在线调试步骤如下 。 图3.46新建 SignalTap Ⅱ文件 (1) 在Quartus Prime软件中选择菜单栏File→New,在弹出的New对话框中选择SignalTap Logic Analyzer File,如图3.46所示。单击后弹出如图3.47所示的SignalTap Ⅱ界面。用户需要将SignalTap Ⅱ文件保存至工程目录中。 图3.47SignalTap Ⅱ界面 (2) 在使用 SignalTap Ⅱ逻辑分析仪进行数据采集之前,首先应该设置采样时钟,因为逻辑分析仪是在时钟上升沿采样,推荐使用同步系统全局时钟作为采样时钟。单击图3.47界面中参数设置区域clock栏对应的浏览按钮 ,弹出如图3.48所示的节点查找器窗口。 图3.48节点查找器窗口 选择图中Filter过滤选项中Pins: all,单击图3.48中List按钮就会在节点查找区域列出所有可以观察的信号节点,选择工程中的时钟clk作为采样信号,选中后单击中间的“>”按钮将时钟选中至右侧区域,单击OK按钮。接下来定义采样深度。采样深度决定了每个信号可存储的采样数目,设置范围在0~128K。本界面中采样深度(Sample depth)设置为128K。在Trigger栏中,Trigger position(触发位置)可以选择触发位置前后数据的比例,这里选择Pre trigger position。 参数设置完成后需要添加被测信号。在图3.47左侧选择Setup标签页,在Setup标签页中双击鼠标左键,弹出Node Finder对话框(该标签页内有一行灰色提示Doubleclick to add nodes: 双击添加节点信号)。在Node Finder对话框的Filter列表中选择SignalTap Ⅱ: presynthesis或SignalTap Ⅱ: postfitting,在Look in对话框中指定层次,单击List按钮查找节点。在Nodes Found中选择要加入STP文件中的节点或总线。单击“>”按钮将选择的节点或总线复制到Selected Nodes中。加载后如图3.49所示。 图3.49待观察节点设置 用户需要在图3.49中设置触发条件,触发条件的设置可以帮助用户有效地调试设计。本节只介绍单个信号基本触发条件。触发条件设置分为Basic和Advanced两种。在Basic触发条件中Dont Care表示不管信号为何值均触发; Low表示低电平触发; Falling Edge表示下降沿触发; Rising Edge表示上升沿触发; High表示高电平触发; Insert Value是给总线信号赋值,表示总线信号为此值时触发。本例选择Dont Care。 (3) 一切设置完成后重新编译工程。 (4) 在图3.47中JTAG链配置区域单击SOF Manage栏中浏览按钮 ,加载工程配置文件,单击 按钮配置下载器端口,单击 按钮 扫描JTAG链,查找链路上的器件,单击 按钮 进行配置,配置完成后自动运行分析。 (5) 当满足触发条件时,逻辑分析仪停止,采集到的数据被传送到图3.47的DATA窗口,用户可以根据捕捉到的数据进行分析或调试。在线调试如图3.50所示。 图3.50在线捕捉的数据 注意SignalTap Ⅱ逻辑分析仪是用工程设计中剩余的RAM块资源来存放数据的,因此用户不可能无限制地增加采样深度或采样信号。用户在调试完成后要将SignalTap Ⅱ的文件移除并重新编译一遍,这样才不会影响整个工程设计的性能。 3.5本章小结 本章从图形化设计和VHDL文本设计两个角度介绍了Quartus Prime软件的设计流程。另外介绍了AlteraModelSim软件的基本使用方法。同时对Quartus Prime自带的IP核的使用方法做了详细介绍,更详细的IP核应用读者需从各个IP带的用户手册中获取。为了便于在线调试FPGA,本章还介绍了SignalTap Ⅱ逻辑分析仪的基本使用方法,读者可以根据介绍的方法完成基本的在线调试功能。