
2.3 基于Quartus Ⅱ的设计实例
加法器电路是数字电路中运算器的重要单元,分为半加器和全加器两种。全加器的实现可以根据其真值表直接用VHDL语言编程实现。
实现全加器的操作步骤如下:
(1)选择【开始】→【程序】→【Altera】→【Quartus Ⅱ】命令,或者双击桌面上的Quartus Ⅱ图标运行Quartus Ⅱ软件,出现如图2-9所示的界面。如果是第一次打开Quartus Ⅱ软件,可能还会有其他的提示信息,用户可以根据自己的实际情况进行设计后进入如图2-9所示的界面。

图2-9 Quartus Ⅱ软件的默认启动界面
(2)选择软件中的菜单命令【File】→【New Project Wizard】,新建一个工程,如图2-10所示。

图2-10 新建工程向导介绍页
(3)单击图2-10中的【Next】按钮,进入工作目录,工程名的设定对话框如图2-11所示。第一个输入框为工程目录输入框,用户可以输入路径来设置工程的目录;设定好后,所有的生成文件将放入这个工作目录。第二个输入框为工程名称输入框,第三个输入框为顶层实体名称输入框。用户可以设定EXP1,一般情况下工程名称与实体名称相同。用户也可以根据自己的实际情况来设定。

图2-11 制定工程及工作目录
(4)单击【Next】按钮,进入下一个设定对话框,按默认选项直接单击【Next】按钮,进入器件选择对话框,如图2-12和图2-13所示。在图2-13中,用户可以根据自己的硬件资源进行相应的选择;在选择具体器件的时候,首先要指定正确的器件家族(Family)。在【Family】一栏的下拉列表中选取正确的器件系列。这里我们选择FLEK10K系列芯片EPF10K10LC84-4。

图2-12 器件选择对话框(一)

图2-13 器件选择对话框(二)
在图2-13中,单击【Next】按钮,完成器件的选取,进入EDA Tool设置界面,如图2-14所示。

图2-14 EDA Tool设置界面
(5)按默认选项,单击【Next】按钮,出现新建工程以前所有的设置信息,如图2-15所示,单击【Finish】按钮,完成新建工程的建立,如图2-16所示。

图2-15 新建工程信息汇总

图2-16 新建立的工程界面
(6)选择【File】→【New】命令,新建一个VHDL文件,如图2-17所示。

图2-17 新建一个VHDL文件
(7)选择【VHDL File】文件类型,单击【OK】按钮,将VHDL程序写入后,如图2-18所示,并选择【File】→【Save】命令,无须做任何更改,单击【OK】按钮即可,如图2-19所示。

图2-18 VHDL程序写入

图2-19 存储新建的VHDL文件
(8)分析与综合。
① 设计输入完毕后,为了检查程序中是否存在语法错误,可运行菜单命令【Processing】→【Analyze current file】,进行语法错误检查。若无语法错误,系统分析后弹出如图2-20所示的信息对话框。

图2-20 语法分析成功对话框
② 选择主菜单命令【Processing】→【Start】→【Start Analysis & Synthesis】,运行分析与综合流程。执行该命令后,系统整合当前设计的所有设计文件,形成网表文件,并建立该设计的数据库;若设计无误,则系统弹出如图2-21所示的对话框提示分析与综合成功执行。

图2-21 分析与综合成功提示对话框
通过分析与综合的过程后,即可通过RTL电路观察器查看当前设计系统综合后生成的逻辑图。选择【Tools】→【Netlist Viewer】→【RTL Viewer】命令,系统运行电路观察器,查看当前设计生成的逻辑电路,如图2-22所示。

图2-22 RTL电路观察器
(9)代码书写结束后,选择【Processing】→【Start Compilation】命令,对编写的代码进行编译,直到编译通过,编译通过对话框如图2-23所示。

图2-23 编译通过对话框
(10)时序仿真。为了验证设计的逻辑功能和内部时序的正确性,需要对设计进行时序仿真。通过建立波形矢量文件进行仿真,仿真结果如图2-24所示。

图2-24 仿真结果
(11)引脚分配。选择【Assignment】→【Assignment Editor】命令,进入【Assignment Editor】(资源分配编辑器),分配引脚端口,如图2-25所示。

图2-25 引脚分配
(12)编译无误后,将实验系统的下载线与计算机并口连接好,打开电源。选择【Tools】→【Programmer】命令,进入程序下载界面,该界面对应文件名为adder.cdf。使用USB电缆时的界面如图2-26所示。使用ByteBlaster下载线下载时的界面如图2-27所示。然后单击【Start】按钮,将adder.sof文件下载到FPGA芯片中(注:初次使用USB电缆下载时,需要安装USB-Blaster驱动)。

图2-26 硬件安装后的编程下载界面

图2-27 编程下载界面
在完成硬件安装的编程下载界面中,在【Mode】一栏中选择【JTAG】,在工作区的下载文件列表选项中,选中【Program/Configure】复选框,单击左侧工具栏的启动下载按钮,启动下载。下载完毕后,可根据设计与外围资源的链接情况,进行测试操作。
(13)观察实验结果是否与程序设计相吻合。
参考程序如下所示:
---------------------------------库说明------------------------------- library ieee; --IEEE标准库 use ieee.std_logic_1164.all; entity adder is --adder是实体名 port( INA,INB:IN std_logic; --输入信号 CI:std_logic; --输入进位信号 SO:OUT std_logic; --和输出 CO:OUT std_logic); --进位信号输出 end adder; -------------------------------结构体说明----------------------------- architecture rtl of adder is COMPONENT half_adder --元件定义语句,定义半加器电路模块 PORT(IN0,IN1:IN std_logic; SUM:OUT std_logic; CARRY_OUT:OUT std_logic); end COMPONENT ; SIGNAL SUM1,CO1,CO2:std_logic; BEGIN adder1:half_adder PORT MAP(INA,INB,SUM1,CO1); adder2:half_adder PORT MAP(SUM1,CI,SO,CO2); CO<=CO1 OR CO2; END rtl; --半加器模块 library ieee; --IEEE标准库 use ieee.std_logic_1164.all; entity half_adder is port( IN0,IN1:IN std_logic; SUM:OUT std_logic; CARRY_OUT:OUT std_logic); end half_adder; -------------------------------结构体说明----------------------------- architecture rtl of half_adder is BEGIN PROCESS(IN0,IN1) BEGIN SUM<=IN0 XOR IN1; CARRY_OUT<=IN0 AND IN1; END PROCESS; END rtl;