第3章
CHAPTER 3


Quartus Prime设计开发环境






全球提供FPGA开发工具的厂商有近百家之多,大体分为两类: 一类是专业软件公司研发的FPGA开发工具,独立于半导体器件厂商; 另一类是半导体器件厂商为了推广本公司产品研发的FPGA开发工具,只能用来开发本公司的产品。本章介绍的Quartus开发工具属于后者,早期的Quartus由原Altera公司研发,Quartus 版本15.1之前的所有版本称作Quartus Ⅱ,从Quartus 15.1 开始软件称作Quartus Prime,Quartus Prime由Intel公司研发维护。Quartus Prime是在Quartus Ⅱ软件基础上的优化,采用了新的高效能SpectraQ引擎,减少了设计迭代; 同时具有分层数据库,保留了IP模块的布局布线,保证了设计的稳定性,避免了不必要的时序收敛投入,使其所需编译时间在业界最短,增强了FPGA和SoC FPGA的设计性能。
Quartus Ⅱ和Quartus Prime的主要功能基本相同,只是有些界面有所不同。本章以Quartus Prime16.0的基本使用方法为例进行设计开发环境的介绍。Quartus Prime 16.0提供的功能很多,读者可参考其他书籍或Quartus Prime用户手册,学习更多的内容。





3.1Quartus Prime概述
Quartus Prime支持Intel公司的各系列可编程逻辑器件的开发,包括Cyclone系列、Arria系列、MAX系列、Stratix系列等。
Quartus Prime提供了与第三方开发工具的无缝连接,支持Cadence、Mentor、Synopsys等专业软件公司的综合工具和校验工具,能读入和生成标准的EDIF、Verilog HDL及Verilog HDL网表文件。无论使用PC、UNIX或Linux工作站,Quartus Prime都提供了方便的实体设计、快速的编译处理以及编程功能。
运行Quartus Prime,可以看到Quartus Prime的管理器窗口如图31所示。管理器窗口主要包含项目导航窗口、任务窗口、消息窗口,可以通过View→Utility Windows菜单下的选项添加或隐藏这些窗口。

为了保证Quartus Prime的正常运行,第一次运行软件时,需要设置license.dat文件,否则许多功能将被禁用。在Quartus Prime管理器窗口选择Tools→License Setup…选项,单击License file后的“…”按钮,在出现的对话框中选择license.dat文件或直接输入具有完整路径的文件名,如图32所示。



图31Quartus Prime 16.0管理器窗口



图32设置license.dat文件


3.2Quartus Prime设计流程
使用Quartus Prime开发工具进行FPGA器件的开发和应用,其过程主要有设计输入、设计处理、波形仿真和器件编程等阶段。在设计的任何阶段出现错误,都需要进行修改,纠正错误,重复上述过程,直至每个阶段都正确为止。




下面将以一个4位二进制计数器设计项目myexam设计为例,介绍Quartus Prime的使用流程,介绍如何经过设计各个阶段,最终将myexam.v设计下载到FPGA芯片,完成4位二进制计数器设计的完整过程。
3.2.1设计输入
Quartus Prime编辑器的工作对象是项目,项目用来管理所有设计文件以及编辑设计文件过程中产生的中间文档,建议读者在开始设计之前先建立一个文件夹,以便进行项目的管理。在一个项目下,可以有多个设计文件,这些设计文件可以是原理图文件、文本文件(如AHDL、VHDL、Verilog HDL等文件)、符号文件、底层输入文件以及第三方EDA工具提供的多种文件格式,如EDIF、Tcl等。下面以文本文件为例,学习设计输入过程中的主要操作。
1. 建立设计项目
在Quartus Prime管理器窗口中选择菜单File→New Project Wizard命令,出现新建项目向导(New Project Wizard)对话框的第一页,如图33所示。在对话框中输入项目目录、项目名称和顶层实体文件名,如myexam。顶层实体文件名可以是与项目名称不一致、系统默认一致的名称。


图33New Project Wizard对话框第一页


在新建项目向导第三页,单击“...”按钮可浏览文件选项,添加或删除与该项目有关的文件。初学者还没有建立文件,可以先跳过该页。
在新建项目向导第四页,根据器件的封装形式、引脚数目和速度级别,选择目标器件。读者可以根据具备的实验条件进行选择,这里选择的芯片是Cyclone Ⅳ E系列的EP4CE10F17C8芯片,如图34所示。


图34New Project Wizard对话框第四页


在新建项目向导第五页,添加第三方EDA综合、仿真、定时等分析工具,系统默认选择Quartus Prime的分析工具,对开发工具不熟悉的读者,建议采用系统默认选项。
在新建项目向导的最后一页给出了前面输入内容的总览。单击Finish按钮,myexam项目出现在项目导航窗口,myexam表示顶层实体文件,如图35所示。在任务窗口出现设计项目过程中的全部操作,执行操作命令的方法可以是在菜单栏中选择命令、单击工具栏中对应的工具按钮或者在任务窗口双击命令。


图35建立项目myexam




图36New对话框

对于新建项目向导中的各个选项,在新建项目结束后,仍然可以修改或重新进行设置,通过选择菜单命令Assignments→Settings,在General页面实现。
2. 输入文本文件
Quartus Prime支持AHDL、VHDL及Verilog HDL等硬件描述语言描述的文本文件,关于如何用Verilog HDL描述硬件电路请参考本书第2章。这里将结合实例说明如何使用文本编辑器模板输入Verilog HDL文本文件。
新建Verilog HDL文本文件,在Quartus Prime管理器界面中选择菜单命令File→New,或单击新建文件按钮,出现New对话框,如图36所示。在该对话框的Design Files中选择Verilog HDL File,单击OK按钮,打开文本编辑器。在文本编辑器窗口中,按照Verilog HDL语言规则输入设计文件,并将其保存,Verilog HDL文件的扩展名为.v。

Quartus Prime支持多种硬件描述语言,用不同的硬件描述语言编写的文件,其文件扩展名不同,如AHDL文件扩展名为.tdf,Verilog HDL文件扩展名为.v。
Quartus Prime提供了文本文件的编辑模板,使用这些模板可以快速准确地创建Verilog HDL文本文件,从而避免语法错误,提高编辑效率。例如,用Verilog HDL模板设计一个4位二进制计数器的Verilog HDL文本文件。


(1) 选择菜单命令Edit→Insert Template,打开Insert Template对话框,单击右侧LanguageTemplate栏目,打开Verilog HDL,Verilog HDL栏目会显示所有Verilog HDL的程序模板。
(2) 在Verilog HDL模板中选择Full Designs→Arithmetic→Counters→Binary Counter,Insert Template对话框的右侧会出现计数器模板程序的预览,如图37所示。这是一个带清零和使能端的计数器模板。单击Insert按钮,模板程序出现在文本编辑器中,其中蓝色的字母是关键字,绿色部分为注释语句。



图37程序模板对话框



(3) 根据设计要求,对模板中的文件名、信号名、变量名等黑色部分的内容进行修改。将模块名binary_counter修改为myexam; 将计数器的宽度WIDTH改为4; 删除enable输入信号,输出信号名改为q等。修改后的Verilog HDL代码如下: 



// Quartus Prime Verilog Template

// Binary counter

module myexam//模块名为myexam

#(parameter WIDTH=4)

(

input clk, reset,							  //系统时钟、复位信号

output reg [WIDTH-1:0] q

);



// Reset if needed, or increment if counting is enabled

always @ (posedge clk or posedge reset)		  //时钟上升沿触发

begin

if (reset)								  //高有效异步复位

q<= 0;

elseq<= q+ 1;							  //计数

end

endmodule


3. 添加或删除与当前项目有关的文件
如果希望将存放在其他位置的文件加入到当前的设计项目中,则选择菜单命令Assignments→Settings,打开如图38所示的Settings对话框。在Settings对话框左侧的Category栏目下选择Files项,通过单击右边File name后的“...”按钮查找文件选项,单击Add按钮添加文件。Add All按钮的作用是将当前目录下的所有文件添加到项目中。


图38Settings 对话框


如果希望将当前项目中的文件从项目中删除,则首先选中待删除文件,Remove按钮则被激活,单击Remove按钮即可。
如图38所示,在Settings对话框中,除了可以进行设计项目的文件设置外,还可以进行与设计有关的各种其他功能设置,如库Libraries、IP、EDA Tool、Compilation、定时分析Timing Analysis、SSN Analyzer等设置。
4. 指定目标器件
如果在建立项目时,没有指定目标器件,那么可以通过选择菜单命令Assignments→Device,打开如图39所示的Device对话框,在其中指定设计项目使用的目标器件。在Family下拉列表框中选择器件系列; 在Show in ‘Available devices’ list中选择封装形式、引脚数和速度级别; 在Available devices中选择目标器件; 单击Device&Pin Options按钮,出现器件和引脚选项对话框,根据设计需要进行配置、编程文件、不用引脚、双用途引脚以及引脚电压等选项的详细设置。


图39Device 对话框


3.2.2设计处理
Quartus Prime设计处理的功能包括设计错误检查、逻辑综合、器件配置以及产生下载编程文件等,称作编译(compilation)。编译后生成的编程文件可以用Quartus Prime编程器或其他工业标准的编程器对器件进行编程或配置。
编辑设计文件后可以直接执行编译操作,对设计进行全面的设计处理。也可以分步骤执行,首先进行分析和综合处理(analysis & synthesis),检查设计文件有无错误,基本分析正确后,再进行项目的完整编译。
1. 设置编译器
初学者如果选择系统默认的设置,可以跳过编译器设置。
如果确实需要对编译器进行专门的设置,选择菜单命令Assignments→Settings,在Settings对话框的Category栏目下选择Compilation Process Settings项,可以设置与编译相关的内容,如图310所示。


图310Settings对话框中的编译设置选项


2. 执行编译
Quartus Prime软件采用的是项目管理,一个项目中可能会有多个文件,如果要对其中的一个文件进行编译处理,则需要将该文件设置成顶层文件。
1) 设置顶层文件
首先打开准备进行编译的文件,如打开前面编辑的文件myexam.v,执行菜单命令Project→Set as TopLevel Entity。下面进行设计处理的各项操作就是针对这一顶层文件myexam.v进行的。
2) 进行编译
选择菜单命令Processing→Start Compilation或直接单击工具栏中编译按钮,开始执行编译操作,对设计文件进行全面的检查,编译操作结束后,出现如图311所示的界面,界面中给出编译后的信息。
3) 任务窗口
显示编译过程中编译进程以及具体操作的项目。
4) 信息窗口
显示所有信息、警告和错误。如果编译有错误,则需要修改设计,重新进行编译。双击某个错误信息项,可以定位到原设计文件并高亮显示。
5) 编译报告栏
编译完成后显示编译报告,编译报告栏包含了将设计放到器件中的所有信息,如器件资源统计、编译设置、底层显示、器件资源利用率、适配结果、延时分析结果等。编译报告栏是一个只读窗口,选中某项可获得详细信息。
6) 编译总结报告
编译完成后直接给出该报告,报告中给出编译的主要信息,包括项目名、文件名、选用器件名、占用器件资源、使用器件引脚数等。


图311设计项目的编译


3. 锁定引脚
锁定引脚是指将设计文件的输入输出信号分配到器件指定引脚,这是设计文件下载到FPGA芯片必须完成的过程。在Quartus Prime中,锁定引脚分为前锁定和后锁定两种。前锁定是指编译之前的引脚锁定,后锁定是指对设计项目编译后的引脚锁定,这里介绍后锁定引脚的操作过程。
值得注意的是,在后锁定引脚完成之后,必须再次进行编译。
选择菜单命令Assignments→Pins Planner,出现Pin Planner对话框,如图312所示。

由于设计项目已经进行过编译,因此在节点列表区会自动列出所有信号的名称,在需要锁定的节点名处,双击引脚锁定区Location,在列出的引脚号中进行选择。例如,选择clk节点信号,锁定在PIN_AF14号引脚上。重复此过程,逐个进行引脚锁定,所有引脚锁定完成后,再次进行编译。
一些双功能引脚,如配置引脚在配置后,可被用作独立的I/O引脚。如图313所示,选择Assignments→Device→Device and Pin Options→DualPurpose Pins,在弹出窗口的Dualpurpose pins栏会列出当前器件的所有I/O口,选中希望作为独立I/O使用的引脚,并在其右侧的列表中选择Use as regular I/O即可。



图312引脚锁定




图313双功能引脚功能设置








3.2.3波形仿真
当一个设计项目通过编译之后,能否实现预期的逻辑功能,仍需要进一步的检验,波形仿真分析是必不可少的一个环节。波形仿真就是在波形编辑器中将设计的逻辑功能用波形图的形式显示出来,通过查看波形图,检查设计的逻辑功能是否符合设计要求。Quartus Ⅱ 13.0及之后的版本包含了Simulation Waveform Editor仿真工具,除此之外,Quartus Prime 16.0也支持ModelSim、QuestaSim等第三方仿真工具软件,Simulation Waveform Editor仿真也借助了仿真工具ModelSim。如果安装了ModelSim和ModelSimAltera,那么Simulation Waveform Editor默认选择ModelSimAltera。本节主要以ModelSim
和Simulation Waveform Editor为例介绍仿真流程。
1. ModelSim仿真
ModelSim是Mentor Graphics公司开发的一款功能强大的仿真软件,具有速度快、精度高和便于操作的特点,此外还具有代码分析能力,可以看出不同代码段消耗资源的情况。ModelSim的功能侧重于编译和仿真,但不能指定编译的器件和下载配置,需要和Quartus Prime等软件关联。
在Quartus Prime 16.0界面菜单栏中选择Tools→Options→EDA tool options,在ModelSim一项指定自己ModelSim安装的路径。此处安装并指定的ModelSim路径为D:\quartus\quartus\ModelSim 10.4 se\win64。
在Quartus Prime 16.0界面菜单栏中选择Assignments→Settings。选中该界面中EDA Tool Settings中的Simulation。在Tool name中选择ModelSimAltera,Format for output netlist中选择开发语言的类型为Verilog HDL,如图314所示。然后单击Apply和OK按钮。


图314设置仿真工具


设置完成后,编译工程。在Quartus Prime 16.0菜单栏中选择Processing→Start Compilation,等待编译结束,编译无错后会在myexam目录下生成simulation目录。单击菜单栏Processing→Start→Start Test Bench Template Writer,如图315所示,该操作指令在 myexam/simulation/ModelSim下会生成一个与项目顶层文件同名的testbench测试文件模板: myexam.vt。


图315生成test bench文件模板


打开myexam.vt文件,可以看到此测试电路模块没有外部端子,模块名为myexam_vlg_tst,内部包含了3个主要部分: 信号定义、实例化、施加激励。施加激励通过initial模块和always模块实现,设计者需要根据测试需求,设计需要的激励信号,其中initial模块用于产生执行一次的激励信号,如复位信号、非周期性输入信号等; always模块用于产生由敏感事件列表触发的信号,如时钟信号、周期性输入信号等。



`timescale 1 ps/ 1 ps

module myexam_vlg_tst();			  //测试电路模块名,没有外部端子

// constants                                     

// general purpose registers

reg eachvec;

// test vector input registers

reg clk;

reg reset;

// wires                                         

wire [3:0]  q;



// assign statements (if any)                    

myexam i1 (						  //myexam模块实例化

// port map - connection between master ports and signals/registers

.clk(clk),

.q(q),

.reset(reset)

);

initial                                //一次激励模块initial            

begin                                            

// code that executes only once                  

// insert code here --> begin                    



// --> end                                       

$display("Running testbench");                 

end                                              

always  							  //周期性激励模块always                                         

// optional sensitivity list                     

// @(event1 or event2 or .... eventn)            

begin                                            

// code executes for every event on sensitivity list

// insert code here --> begin                    



@eachvec;                                        

// --> end                                       

end                                              

endmodule


根据测试需求修改此测试文件,在initial模块中添加reset激励信号,并为clk赋初值,在always模块中添加周期为40ns的时钟信号,修改完成后保存。



`timescale 1 ps/ 1 ps

module myexam_vlg_tst();

reg clk;//信号定义

reg reset;

wire [3:0]  q;



myexam i1 (							  //模块实例化

.clk(clk),

.q(q),

.reset(reset)

);

initial    							  //initial语句

begin 								  //内部放置只需执行一次的激励信号                                           

$display("Running testbench");		  //ModelSim打印显示仿真运行

clk=0;							  //clk赋初值	

reset=1;

#40 reset=0;						  //40ns后复位信号无效

end      



always  #20 clk=~clk;				  //always语句,产生周期为40ns的时钟信号

endmodule


在Quartus Prime 界面菜单栏中选择Assignments→Settings,在对话框中选择EDA Tool Settings→Simulation,如图316所示,在NativeLink settings区域选择Compile test bench右边的Test Benches按钮,弹出如图317所示的界面,单击New按钮。在新出现的界面(见图318)的Test bench name文本框中输入测试文件名myexam,在Top level module in test bench文本框中输入测试文件中的顶层模块名myexam_vlg_tst。然后在Test bench and simulation files下的File name中选择测试文件myexam.vt,然后单击Add按钮,单击OK按钮进入图319,再单击OK按钮设置完成。


图316选择仿真文件步骤1




图317选择仿真文件步骤2




图318选择仿真文件步骤3




图319选择仿真文件步骤4


仿真文件配置完成后回到Quartus Prime 16.0 开发界面,在菜单栏中选择Tools→Run Simulation Tool→RTL Simulation 进行行为级仿真,即功能仿真,Quartus Prime 自动打开ModelSim,并运行仿真,观察仿真波形如图320所示,为一计数容量为16的计数器,功能仿真正确。通过功能仿真波形,可以验证设计文件逻辑功能的正确性。如果选择Run Simulation Tool→Gate Level Simulation可以进行门级仿真,即时序仿真。在时序仿真图中可以看到信号的传输延迟,以及可能产生的竞争冒险现象。


图320仿真结果


2. Simulation Waveform Editor仿真
当myexam工程编译成功后,在Quartus Prime管理器界面中选择菜单命令File→New,或单击新建文件按钮,出现New对话框。在该对话框中选择Verification→Debugging Files→University Program VWF,单击OK按钮,然后弹出Simulation Waveform Editor界面,如图321所示。


图321Simulation Waveform Editor界面


在添加信号之前先设置仿真截止时间,在管理器界面选择菜单命令Edit→Set End Time,弹出End Time界面,如图322所示。End Time的时间范围是10ns~100μs,如果设置的时间不在这个时间范围内,那么单击OK按钮会有时间范围设置的提示,关闭End Time界面。

仿真运行时间设置后,需在图321中的Name栏添加仿真信号。在管理器界面选择菜单命令Edit→Insert→Insert Node or Bus,或者双击图321中Name栏的空白处,会弹出Insert Node or Bus界面,如图323所示。在Name文本框中输入需要插入的节点或总线,也可以单击Node Finder按钮,在弹出的Noder Finder界面(见图324)中查找节点或总线并插入。其中Look in文本框用于设置需要仿真的工程文件名,单击“...”按钮,在弹出的对话框中选择myexam工程文件并单击OK按钮,如果是对当前工程的仿真,则此步可省略; 接下来单击List按钮,myexam工程中的信号就会出现在Nodes Found下方的空白处。


图322End Time界面



图323Insert Node or Bus界面




图324Node Finder界面


在Nodes Found中单击需要仿真的输出信号和全部的输入信号,然后单击“>”按钮,将选中的信号放入Selected Nodes栏中。不需要仿真的信号,可以单击“<”按钮进行删除。如果需要仿真所有的信号,则直接单击“>>”按钮,Nodes Found栏中的所有信号就会出现在Selected Nodes栏中。当信号选定后,单击OK按钮,则返回到图323,再单击OK按钮后,信号和信号默认的波形图会出现在Simulation Waveform Editor界面中,如图325所示。



图325Simulation Waveform Editor界面


现在需要为所有的输入信号赋值。在Simulation Waveform Editor界面的图标中,共有11种赋值方式,设计者可以根据需要选取。我们选择对clk赋值,单击弹出Clock界面,将时钟周期Period设置为20ns。reset赋值时,如图326所示,单击选中其中的一段后单击图标,选中的一段将会变成高电平1。信号clk和reset赋值完成后,如图327所示; 在管理器界面选择菜单命令File→Sava As,将文件名改为myexam,最好与要仿真的项目同名,然后单击保存按钮。


图326reset信号赋值




图327完成信号赋值


所有输入波形均编辑完成后,将此波形文件保存为myexam.vwf。Simulation Waveform Editor包含功能仿真和时序仿真。这里进行功能仿真,在管理器界面选择菜单命令Simulation→Run Functional Simulation或者单击图标,弹出仿真进程窗口,仿真完成自动关闭,并弹出包含输出波形的仿真完成界面,如图328所示。注意对输入波形的任何改动,都需要重新进行仿真。
右击信号名,在弹出的快捷菜单中选择Radix,可以设置此信号波形显示的进制形式,图328中的clk和reset采用的是二进制显示,q采用的是Unsigned Decimal显示。


图328功能仿真图


时序仿真能观察到电路信号的实际延迟情况。只有Cyclone Ⅳ和Stratix Ⅳ支持时序仿真,如果Quartus工程所选择的芯片不是这两种芯片,那么时序仿真会定义为功能仿真。





3.2.4器件编程
编译成功后,Quartus Prime将生成编程数据文件,如.pof和.sof等编程数据文件,通过下载电缆将编程文件下载到预先选择的FPGA芯片中,该芯片就会执行设计文件描述的功能。
1. 编程连接
在进行编程操作之前,首先将下载电缆的一端与PC对应的端口进行相连。使用MasterBlaster下载电缆编程,将MasterBlaster电缆连接到PC的RS232C串行端口。使用ByteBlasterMV下载电缆,将ByteBlasterMV电缆连接到PC的并行端口。使用USB Blaster下载电缆,则连接到PC的USB端口。下载电缆的另一端与编程器件相连,连接好后进行编程操作。
2. 编程操作
选择菜单命令Tools→Programmer或单击工具栏中的编程快捷按钮,打开编程窗口(如图329所示)。读者需要根据自己的实验设备情况,进行器件编程的设置。


图329Programmer编程窗口


本书进行的设置如下: 
(1) 下载电缆Hardware Setup设置: USB Blaster。注意,编程设置时要保证下载电缆连接,且设备上电。
(2) 配置模式Mode设置: JTAG模式。
(3) 配置文件: 自动给出当前项目的配置文件myexam.sof。如果需要自己添加配置文件,则单击Add File按钮添加配置文件。
(4) 执行编程操作: 单击编程按钮Start,开始对器件进行编程。在编程过程中,进度表显示下载进程,信息窗口显示下载过程中的警告和错误信息。
(5) 实际检验: 器件编程结束后,在实验设备上实际查看FPGA芯片作为计数器的工作情况,应当给计数器加入频率为1Hz的时钟信号,方便观察计数器的变化。如果计数器工作正常,则说明读者已经基本学会了FPGA的开发流程以及Quartus Prime 16.0的使用。
3. 其他编程文件的产生
Quartus Prime在编译过程中会自动产生编程文件,如.sof文件。但对于其他格式的文件,如二进制格式的.rbf配置数据文件,需要专门进行设置才能产生。
编译后产生.rbf文件过程如下: 选择菜单命令File→Convert Program Files,出现如图330所示的对话框。首先,在Programming file type列表框中选择Raw Binary File(.rbf)。下一步,将File name一栏改成myexam.rbf。然后单击Input files to convert栏中的SOF Data,此时Add File按钮被激活,单击Add File按钮,添加输入数据文件myexam.sof,单击Generate按钮即可产生.rbf文件。查找设计项目目录,可以找到myexam.rbf文件。



图330编译后生成.rbf文件







3.3嵌入式逻辑分析仪使用
Quartus Prime软件提供了波形仿真工具,读者可以运行波形仿真工具,分析了解设计系统各信号波形。3.2.3节中专门介绍了如何使用波形仿真工具对设计系统的信号进行波形仿真的测试,通过信号波形分析了解设计系统的工作是否正常。
这里介绍嵌入式逻辑分析仪的使用,就是将逻辑分析仪嵌入到FPGA芯片内部,测试FPGA芯片内部或外部引脚实际信号波形,分析系统工作是否正常。
嵌入式逻辑分析仪的使用分为以下几个步骤: 打开SignalTap Ⅱ Logic Analyzer编辑窗口、输入待测信号、设置SignalTap Ⅱ参数、编译下载、运行SignalTap Ⅱ分析被测信号。
下面以前面已经输入的文件myexam.v为例,学习嵌入式逻辑分析仪的使用。
1. SignalTap Ⅱ编辑窗口
选择菜单命令Tools→SignalTap Ⅱ Logic Analyzer,出现SignalTap Ⅱ编辑窗口,如图331所示,显示一个空的SignalTap Ⅱ文件。


图331SignalTap Ⅱ编辑窗口


SignalTapⅡ编辑窗口主要分为几个栏目: 
(1) Instance Manager(实例管理)——管理分析程序。
(2) JTAG Chain Configuration(JTAG链配置)——管理配置硬件和文件。
(3) Setup/Data(设置/数据)——设置测试信号或者观察测试数据。
(4) Signal Configuration(信号设置)——设置逻辑信号分析仪。
(5) Hierarchy Display(层次显示)——显示分析文件的结构层次。
2. 输入文件和待测信号
在Instance Manager栏目下,单击Instance下面的auto_signaltap_0,将其更名为准备分析的文件名myexam。
双击设置测试信号Setup空白处,弹出Node Finder对话框,在该对话框中选择测试信号。这里选择观察myexam模块的cnt。插入节点的过程与波形仿真选择信号完全相同。
3. SignalTap Ⅱ参数设置
在信号设置 Signal Configuration栏目下,完成对逻辑信号分析仪参数的设置,设置窗口如图332所示。


图332设置SignalTap Ⅱ参数


(1) 设置SignalTap Ⅱ工作时钟: 单击图332中Clock右侧的“...”按钮,在出现的Node Finder对话框中,选择clk信号作为逻辑分析仪的采样时钟。
(2) 设置采样数据: 采样数据深度设置为1K,根据待测信号的数量和FPGA芯片内部的存储器的大小决定采样数据深度。
(3) 触发设置: 触发器流控制、触发位置、触发条件均采用默认值。
(4) 触发输入: 首先选中触发输入Trigger in,接着在触发源Node处选择myexam设计中的复位信号reset,触发方式采用下降沿Falling Edge。
(5) 保存文件: 设置完成后,保存该文件myexam.stp,保存时,系统出现提示信息: Do you want to enable SignalTap Ⅱ,单击Yes按钮,表示同意使用SignalTap Ⅱ,并准备将其与myexam文件捆绑在一起进行综合和适配,一同下载到FPGA芯片中。
也可以通过选择菜单命令Assignments→Settings,打开如图333所示的Settings对话框。在Settings对话框左侧的Category栏目下选择SignalTap Ⅱ Logic Analyzer项,选中Enable SignalTap Ⅱ Logic Analyzer复选框,添加myexam.stp文件,完成SignalTap Ⅱ与myexam源文件的捆绑。


图333SignalTap Ⅱ与myexam源文件的捆绑设置


4. 编译下载
(1) 编译: 完成上述设置并保存文件后,必须再次进行完整的编译。选择菜单命令Processing→Start Compilation或直接单击工具栏中的编译按钮,执行编译操作,对设计文件进行检查。
(2) 连接硬件: 在进行下载操作之前,首先将下载电缆的一端与PC对应的端口进行相连,这里使用USB Blaster下载电缆,连接到PC的USB端口,下载电缆的另一端与编程器件相连。
(3) 下载设置: 如图334所示。Hardware设置为USB Blaster; 连接硬件正常,系统会自动找到下载器件Device为5CSE; 通过“...”按钮设置下载文件为myexam.sof。
(4) 执行下载操作: 单击编程按钮,开始对器件5CSE进行编程。


图334下载设置界面



5. SignalTap Ⅱ信号分析
如图335所示,在实例管理Instance Manager栏目下,选中Instance下面的文件myexam,再单击Autorun Analysis(启动分析)按钮,启动SignalTap Ⅱ信号分析。只有当器件编程成功后,该分析按钮才会激活。


图335启动SignalTap Ⅱ信号分析


在Setup/Data栏目下,选择观察测试数据Data窗口。
选择观察测试数据Data窗口。按下设备的reset键,使reset信号发生一次从高电平到低电平的变化,为SignalTap Ⅱ逻辑分析仪提供采样触发信号。这时,在SignalTap Ⅱ的Data窗口就会观察到来自FPGA芯片的实时信号,如图336所示。


图336SignalTap Ⅱ采样的信号波形


按下Stop Analysis(停止分析)按钮,结束分析过程。将鼠标指针移动到分析波形处,通过单击鼠标右键和左键,可缩放波形的显示,使之适合观察。这里可以看到输出信号q的变化规律与设计的4位二进制计数器功能一致。
6. 撤销SignalTap Ⅱ信号分析
结束SignalTap Ⅱ逻辑分析后,应撤销SignalTap Ⅱ逻辑分析与myexam源文件的捆绑,释放嵌入式逻辑分析仪对FPGA芯片资源的占用。
撤销SignalTap Ⅱ逻辑分析与myexam源文件捆绑的方法是: 选择菜单命令Assignments→Settings,在Settings对话框左侧的Category栏目下选择SignalTap Ⅱ Logic Analyzer项,取消选中对Enable SignalTap Ⅱ Logic Analyzer复选框,单击OK按钮确认后,重新对myexam源文件进行完整编译,就可以释放嵌入式逻辑分析仪对FPGA芯片资源的占用。
Quartus Prime开发软件除了提供设计输入、设计处理、波形仿真等设计流程中必备的工具外,还集成了一些辅助设计工具,包括I/O分配验证工具、功率估计和分析工具、RTL阅读器、SignalProbe(信号探针)及Chip Editor(底层编辑器)、Timing Closure Floorplan(时序收敛平面布局规划器)。
在设计的任何阶段都可以使用I/O分配验证工具来验证引脚分配的合理性,保证在设计早期尽快确定引脚分配。功率估计工具可以对设计的功耗进行估算,以方便电源设计和热设计。RTL视图则是用户在设计中查看设计代码的RTL结构的一种工具。SignalProbe和SignalTap Ⅱ逻辑分析器都是调试工具,SignalProbe可以在不影响设计中现有布局布线的情况下将内部电路中特定的信号迅速布线到输出引脚,从而无须对整个设计另做一次全编译。Chip Editor能够查看编辑后布局布线的详细信息,且可以使用Resource Property Editor(资源特性编辑器)对逻辑单元、I/O单元或PLL的原始属性和参数执行编译后的重新编辑。Timing Closure Floorplan可以通过控制设计的平面布局来达到时序目标。在综合以及布局布线期间可以对设计使用网表优化,同时使用Timing Closure Floorplan分析设计并执行面积约束,或者使用LogicLock区域分配进一步优化设计。
对这些辅助设计工具本章不做一一介绍,有需求的读者可参考相关书籍或Quartus Prime 16.0用户手册,学习更多的内容。