一、实验目的:
1)学习QuartusⅡ软件的使用。掌握基本的设计流程,包括建工程、建文件、存文件、选器件、编译、仿真、引脚分配和下载等操作。
2)掌握QuartusII软件下原理图编辑、文本编辑和混合编辑的设计方法。
3)掌握FPGA设计开发流程。
二、实验内容
在QuartusⅡ上使用原理图编辑方法完成简单组合逻辑电路的设计,掌握QuartusII软件下开发FPGA的基本流程:包括新建工程、文件、器件选择、编译、仿真、引脚分配等,并在实验箱上验证。

图 2-1 FPGA 设计的简单流程
FPGA 设计的简单流程如图 2-1 所示,各步骤的具体任务分别如下:
1. 设计输入:VerilogHDL 输入和原理图输入
2. 功能仿真:验证是否满足功能要求,简单设计可以不需要功能仿真;
3. 设计综合:Synthesis,生成 RTL 级描述,将设计中的函数映射到正确的库模块,得到网表文件;
4. 设计适配:Fitter,在逻辑综合完成后,必须利用 FPGA/CPLD 适配器将综合得到的网表文件针对某一具体器件进行逻辑映射,包括底层器件配置,逻辑划分,逻辑优化,布局布线,适配完成后会产生三个文件: 1) 时序仿真模型,即一个带有连线延时和门级延时信息的网表文件; 2) 供器件编程用的数据文件; 3) 适配报告文件,包括芯片内部资源利用情况,设计的布尔方程描述等。
5. 时序仿真:布局布线完成后,验证是否满足时序要求,高速系统中需时序仿真;
6. 编程下载:将生成的 bit 文件下载到 FPGA 内部SRAM 中或外部配置芯片中。实际设 计中,以上步骤除文本、原理图输入外,其他步骤在 Quartus II 中可运行全编译或分别运行如下编译器模块自动完成;
Analysis & Synthesis:对设计综合,并将设计中的函数映射到正确的库模块; Fitter:对设计进行布局布线;
Timing Analyzer:对设计进行时序分析;
EDA Netlist Writer:生成与其它 EDA 工具配合使用的输出文件; Assembler:为设计建立编程文件。
三、实验内容与步骤
I QuartusII环境下基于原理图的FPGA设计方法
首先在 E 盘中新建一个名为“BME”的文件夹,进入BME文件,再以自己学号建立文件夹(如1321121002),再新建一个名为“LAB2”的文件夹;
(一)验证性实验(原理图编辑方法设计数据选择器)
1、 新建一个文件夹
接上一步,在自己的文件夹(E:\BME\1321121002\Lab2)里面新建三个文件夹 ex1,ex2,ex3,ex4和ex5用于存放本次实验的 5个工程。注意:文件夹中所有的文件名不能使用中文!
2、 新建一个工程
(1) 打开Quartus Ⅱ13.1(64-bit) 的界面,点击File菜单,选择新工程向导(图2-2),启动界面如图2-3所示,选择next。

图 2-2新建工程向导
图 2-3新建工程向导启动界面
(2)然后选择工程存放的路径、工程名、顶层模块的实体名(图2-4),注意:顶层模块名必须和工程名一致。选择next

图2-4工程存放的路径、工程名、顶层模块名
(3) 添加设计文件。如果需要新建设计文件,直接next

图2-5 添加设计文件
(4)选择器件(图2-6)。注意:Family(器件系列):选CycloneV;FPGA的型号:5CSEMA5F31C6,FPGA器件不能选错。选择完成点击 next跳到下一步。

图2-6选择器件
(先选系列,然后选型号,使用右上角的过滤器可以快速显示自己所要选择的器件,例如Package选FBGA;PIN选896,SPEED选6,上图所选器件为DE1-SOC系统板使用的FPGA)
(5)选择和设置EDA仿真综合工具(如需使用第三方工具,可进行相应设置),使用QuartusII默认设置,如图2-7。设置完成后,项目工程的主要描述如图2-8。
项目文件设置完成后,回到QuartusII界面如图2-9所示。

图2-7 EDA工具设置

图2-8所建工程的主要信息总结

图2-9工程建好后,工程名和存放路径在顶端的标题栏显示
3、新建一个原理图文件(以二选一数据选择器的FPGA设计为例)
在图2-9中,选择菜单命令“Flie”-“New”,或者按快捷键“Ctrl”+“N”,弹出“New”对话框,如图2-10所示。在该对话框中的“Device Design Files”页面下共有6种编辑方式,本例中选择原理图/图表模块文件,双击“Block Diagram/Schematic Files”选项,出现如图2-11绘图工作对话框。

图2-10建立原理图/图表模块文件

图2-11绘图对话框
4、放置元件符号
在图2-11中图形编辑窗口的空白处双击鼠标左键(或者在编辑工具栏单击
)出现如图2-12的电路符号选择窗口,选中“primitives”—“logic”—“and2”(或者在“Name”输入编辑框中输入“and2”)—单击“OK”按钮,将选中的符号移动到合适的位置,如图2-13。单击键盘Esc键取消器件放置。

图2-12 选择元器件

图2-13 放置2输入与门
同样方法,在图中放置“not”、“or2”等其他器件和三个input、一个output符号,如图2-14所示。

图2-14 摆放完所有元件
5、连接各元件并命名
在图2-14中,将光标移到“input”右侧,待变成十字形光标时,按下鼠标左键(或者选中工具栏中的
,光标则会自动变成十字形的连接状态)—移动光标到与门的左侧,待连接点上出现蓝色的小方块后再释放鼠标左键,即可完成器件的连线。完成所有元器件的连接,然后双击其中一个input_name使其衬底变黑,输入A,用相同的方法将其他输入信号命名为B,S和Y,如图2-15所示。

图2-15 连接电路
6、保存文件
在图2-15中,单击保存文件按钮,在默认情况下,文件名与工程名一致,单击“保存”按钮保存文件,如图2-16所示。

图2-16 保存设计文件
7、编译
编译命令如图2-17所示,或者点击按钮
。编译包括综合和适配2个过程,编译后生成下载文件和信息延时文件等。

图2-17 编译命令快捷按钮
如果代码有错或者软件使用有错,则编译不能通过,直到改正错误后才能通过,警告信息可以不考虑。
编译后生成编译报告,显示设计模块名称、所用的器件型号、设计所占用的资源等信息,如图2-18所示。

图2-18 编译报告
8、仿真
通过编译可以发现设计代码的语法错误和软件的使用错误,但不能发现逻辑算法错误,只有通过仿真才能发现算法是否正确。先建波形文件,然后仿真才能观察结果。
1)新建波形文件
点击File\New,然后出现文件类型选择框,按照图2-19 所示选择新建波形文件(.VWF文件)。

图 2-19 新建波形文件
随即波形文件编辑器被打开,可以加入需要观察的信号。可以一次加一个信号,也可以一次把所有的信号全部加进来。方法如下:在Name栏下的空白处点击右键,选择 Insert\Insert Node or Bus,如图2-20示。然后按照后面的图示操作,直到一次把所有的信号都加入到波形编辑器,如图 2-21至图2-23所示。


图2-20加入需要观察的信号
点击 NodeFinder
点击 List,左边出现所有未分配的信号列表,点击 >> 将左边的所有信号选择到右边,点击OK。

图2-21 添加信号输入
点击OK,则所有选择的信号都加入到波形文件编辑器中,如图2-22所示。

图2-22 确认添加信号输入

图 2-23 一次加入所有的信号到波形编辑器
2)设置仿真时间范围:End Time
默认的仿真时间是1us,,本实验改为50 us。选择菜单EditEndTime命令,在弹出的窗口中的Time文本框输入50,单位选择μs,如图2-24。


图2-24仿真时间设置
3)画信号波形
输入信号的波形自己画出,输出信号的波形仿真后出现。
将A,B都设置为时钟信号。选中输入A,衬底为蓝色,再点击左边的时钟信号
,即出现图2-25,选择周期0.5us(注意单位)。同理设置输入B,周期为2us。S的波形可以任意画,先拖动选中一段,然后点击左边的逻辑1按钮
,即设置为高电平。

图2-25时钟信号波形设置
4)保存波形文件
波形文件名必须和工程名一致,即将波形文件保存为mux21a.vwf,保存后的波形如图2-26和图2-27所示。

图2-26保存波形文件
图 2-27波形文件
5)仿真与观察全局波形
点击按钮
即开始仿真,仿真后显示输出信号Y的波形。
波形的观察,仿真结果如图2-28所示:

图2-28仿真波形结果
放大与缩小。点击按钮
,然后点左右键分别放大与缩小波形。点击
恢复正常。
观察全局波形。在空白处点右键,如图2-29操作即可看全局波形。
使用菜单 view\full screen可以全屏看波形。
图2-29观察全局波形
7、引脚分配
DE1-SOC系统的目标器件是5CSEMA5F31C6,用键SW0(引脚为AB12)控制s,a和b分别接GPIO_0[0](引脚为AC18)和GPIO_0[2](引脚为AD17),输出信号y接发光二极管LEDR[0](引脚为V16)。
选择菜单AssignmentsàPin Planner,即出现编辑器框,如图2-30所示。

图2-30 信号管脚分配
保存,再重新编译(StartCompilation),才能将锁定信息编译进编程下载文件中。
选择a接1HZ信号,b接5HZ。(通过键SW0可控制发光二极管亮灭的频率。)
8、下载
打开QuartusII编程器,选择Toolsàprogrammer,如图2-31所示。
下载步骤设置:
1)FPGA目标板连接。在图2-31中,单击“HardwareSetup…”;
2)在对话框(如图2-32)“Currentlyselected hardware”的下拉菜单中选择DE-SOC[USB];
3)

图2-31 程序下载之硬件目标板连接
安装硬件连接,单击“HardwareSetup”,选择DE-SoC[USB-1],Close

图2-32 硬件目标板设置
单击“Auto Detect”,如图2-33。

图2-33选择目标器件所属系列
单击OK后,出现两个器件FPGA和HPS,如图2-34所示:

图2-34QuartusII编程器检测FPGA和HPS
右键选择FPGA器件,打开*.sof文件,操作如图2-35

图2-35 选择添加*.sof文件
在工程文件路径下output_files文件夹下,打开mux21.sof文件。如图2-36。

图2-36 添加mux21.sof文件
勾选“Program/Configure”对应选项,单击“start”,开始烧写文件,成功编程后的界面如图2-37所示。

图2-37 FPGA烧写过程
实验现象与结果:通过键SW0选择不同的时钟输入,可观察发光二极管亮灭的频率变化。
(二)综合实验
【实验任务】基本逻辑门电路仿真
熟悉和巩固实验(一)FPGA设计的方法步骤,按照图2-38所示的逻辑电路,对两输入与门、与非门、或门、或非门、异或门进行逻辑功能仿真。
主要实验步骤:
1)创建一个子目录E:\BME\1321213001\Lab2\EX2,并新建一个QuartusII工程项目;
2)建立一个原理图文件,并将该文件添加到工程项目中,对项目文件进行编译;
3)用波形编辑器建立向量波形文件(*.vwf);
4)对设计项目进行时序仿真,记录仿真波形图;
5)根据波形图,列出各个逻辑门的真值表;
6)利用时序分析工具分析当前项目中每个源节点和目标节点之间的传输延迟;
7)根据实验流程和实验结果,写出实验总结报告。

图2-38 基本逻辑门电路
(三)设计实验
【实验任务】使用FPGA设计符合以下功能描述的电路:
某产品有A、B、C三项质量指标。规定:当A、B、C全部达标时为一级品;当 A 和B 两项达标而C不达标时,或者:A 和C两项达标而B不达标时为二级品;当A不能达标,而 B、C 两项达标时为三级品。要求设计质检电路,输出三路指示信号分别代表3种等级。
【设计要求】在QuartusII下使用原理图输入方法完成上述功能电路的设计,并在DE1-SOC开发板上验证其功能。该项目设计文件存放的路径为:E:\BME\131123001\Lab2\ex3
II QuartusII环境下基于HDL的FPGA设计方法
(一)验证性实验(HDL编辑方法设计数据选择器)
【 实验任务】在QuartusII环境下,使用VerilogHDL设计一个4选1数据选择器。
采用VerilogHDL设计一个4选1数据选择器,QuartusII下的设计步骤与前一部分的原理图输入设计方法相同。4选1数据选择器可参考以下几种建模方法:(项目设计文件保存在E:\BME\131123001\Lab2\ex4中)
1) 门级设计原语
门级建模是一种使用Verilog HDL基本门电路原件模型对电路进行描述的方法。
2) 逻辑表达式(布尔代数式)
使用电路的逻辑表达式对电路进行描述,是一种数据流的描述方法。
3) 条件表达式
使用条件表达式对电路进行描述,是一种基于数据流的描述方法。
4) 使用if-else的行为描述
条件表达式的一种,多用于行为描述中。
5) 使用case语句的行为描述
条件表达式的一种,常用于行为描述中。
引脚分配,用SW0(引脚AB12)控制s0;用SW1(引脚AC12)控制s1;a,b,c,d,输入不同频率的时钟信号,输入信号由GPIO_0接入。a,b,c,d分别接clock_1Hz(引脚AC18)、clock_10Hz(引脚AD17)、clock_100Hz(引脚号AK16)、clock_1KHz(引脚号AK19),输出信号y接扬声器spker(引脚为AC23)。
(二)设计实验
【实验任务】使用VerilogHDL行为描述方法,设计一个开关控制LED显示的功能电路,该电路具有以下功能:
1) SW0置高电平时,点亮LED0;
2) SW9置低电平时,点亮LED9;
3) 当SW0和SW9的状态相同时,点亮LED5;


【设计要求】在QuartusII下使用Verilog HDL输入方法完成上述功能电路的设计,并在DE1-SOC开发板上验证其功能。该项目设计文件存放的路径为:E:\BME\131123001\Lab2\ex5
四、思考题
1. 有一照明灯由A、B、C三个开关控制。要求改变任一个开关的状态,都能控制照明灯由亮变灭或者由灭变亮。(使用VerilogHDL描述该功能电路)

