实验一Quartus II操作
一、实验目的
1、熟悉Quartus II环境的操作;
2、掌握VHDL设计数字电路方法;
3、掌握元件例化语句的应用;
4、掌握原理图文件的设计方法。
二、实验设备
计算机软件:Quartus II
EDA实验箱。主芯片:EPM7128SLC84-15或EP1K100QC208-3。下载电缆,导线等。
三、实验内容及步骤
3-8译码器的设计
1、创建工程
运行quartus II软件,出现如下“开始”向导窗口:
点击“Cteat a New Project”选项,即弹出“新建工程向导”对话框,如下图:
点击“next”,出现“工程设置”对话框,如下图:
单击此对话框最上一栏右侧的“...”按钮,在d盘中建一个工程文件夹,取名为decoder。单击“打开”按钮,在第二行和第三行中填写为“decoder38”。按Next按钮,出现添加工程文件的对话框,如下图:
这里我们先不管它,直接按next进行下一步,选择FPGA器件的型号,如下图:
在Family下拉框中,我们选择ACEX1K系列FPGA,选择此系列的具体芯片EP1K100QC208-3。执行next出现选择其它EDA工具对话框,我们用Quartus II的集成环境进行开发,因此这里不作任何改动,如下图:
按next进入工程的信息总概对话框:
按Finish按钮即建立一个项目。
2、建立顶层文件(VHDL文件或顶层电路图文件)。
(1)执行File New,弹出新建文件对话框,如下图:
选择“V HDL File”(若采用原理图输入方式,则选择“Block Diagram/Schematic File”,建立顶层电路图,这里我们选择代码输入方式,所以选择“V HDL File”),按OK即建立一个空的顶层代码文件,缺省名为“Vhdl1.vhd”,我们把它另存为(File Save as)“decoder38.vhd “,并将“Add file to current project”选项选上,以使该文件添加到工程中去。如下图:
点击保存按钮,会出现一个空白顶层文件,在这里可以输入相应VHDL代码,并且在quartusII软件窗口的标题栏会显示当前工程所在路径、文件夹,当前项目名及顶层实体名,如下图:
3、在上图空白编辑区输入3-8译码器的VHDL代码。译码器的输入输出端口要求如下图所示,其中G1、G2AN、G2BN为3个使能输入端,C、B、A为3位地址输入端,Y[7..0]为8个译码输出端。
图3线-8线译码器实体
3-8译码器参考代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity decoder38 is
port(a,b,c,e1,e2,e3:in std_logic;
y:out std_logic_vector(7 downto 0));
end;
architecture behav of decoder38 is
signal indata:std_logic_vector(2 downto 0);
begin
indata<=c&b&a;
process(indata,e1,e2,e3)
begin
if(e3='1' and e2='0' and e1='0') then
case indata is
when"000"=>y<="11111110";
when"001"=>y<="11111101";
when"010"=>y<="11111011";
when"011"=>y<="11110111";
when"100"=>y<="11101111";
when"101"=>y<="11011111";
when"110"=>y<="10111111";
when"111"=>y<="01111111";
when others=>y<="XXXXXXXX";
end case;
else
y<="11111111";
end if;
end process;
end;
输入代码后保存。保存时应注意:
①文件不能存在磁盘的根目录下;
②文件名与实体名必须相同,不能含中文,扩展名为“.vhd”。
4、编译
点击主工具栏上的全编译按钮即开始编译,Message窗口会显示一些编译信息,最后编译成功弹出提示,如下图。
5、仿真
对工程编译通过后,必须对其进行功能和时序仿真测试,以了解设计结果是否满足原设计要求。具体步骤如下:(1)时序仿真
打开波形编辑器。选择菜单File中的New项,在New窗口中选择Vector Waveform File项,如下图所示:
单击OK按钮,即出现空白的波形编辑器。设置仿真时间区域。对于时序仿真来说,将仿真时间轴设置在一个合理的时间区域上十分重要。通常设置的时间范围在数十微秒间。
在Edit菜单中选择End Time项,在弹出的窗口中的Time栏处输入50,单位选择“us”,整个仿真域的时间即设定为50us,单击OK按钮,结束设置。
(2)波形文件存盘。选择File中的Save As项,将以默认名的波形文件存入文件夹中。
(3)将工程的端口信号节点选入波形编辑器中。方法是首先选择View菜单中的Utility Windows 项的Node Finder选项。在Filter框中选择Pins : all,然后单击List按钮。于是在下方的Nodes Found 窗口中出现设计中的工程的所有端口引脚名。点击“>>”按钮将所有端口信号选择到右边窗口,结束后关闭Nodes Found 窗口。如下图所示:
(4)编辑输入波形(输入激励信号)。
选中a、b、c三个地址输入信号,右键选择“Groupin g Group”命令,在弹出的对话框中填入分组名称address,点击OK,完成分组设置,如下图。
选中address分组信号,再单击左侧的“C”计数器图标,让c、b、a地址信号按加法计数器规律变化。
类似的,分别选中e1、e2、e3信号,再单击左侧的“0”或“1”高低电平图标,分别将其设置为高电平或低电平。输入信号设置完成后如下图所示:
(5)点击主工具栏上的仿真图标开始仿真,如下图。
仿真波形如下图所示,当使能信号有效时,进行译码。
6、引脚锁定
选择菜单File中的New项,在New窗口中选择Tcl Script File脚本文件,如下图所示:
在空白脚本文件中输入如下引脚锁定命令:#PIN_163--------K0
set_location_assignment PIN_163 -to a
#PIN_160--------K1
set_location_assignment PIN_160 -to b
#PIN_150--------K2
set_location_assignment PIN_150 -to c
#PIN_149--------K3
set_location_assignment PIN_149 -to e1
#PIN_148--------K4
set_location_assignment PIN_148 -to e2
#PIN_147--------K5
set_location_assignment PIN_147 -to e3
#PIN_36--------L0
set_location_assignment PIN_36 -to y[0]
#PIN_37--------L1
set_location_assignment PIN_37 -to y[1]
#PIN_38--------L2
set_location_assignment PIN_38 -to y[2]
#PIN_39--------L3
set_location_assignment PIN_39 -to y[3]
#PIN_40--------L4
set_location_assignment PIN_40 -to y[4]
#PIN_41--------L5
set_location_assignment PIN_41 -to y[5]
#PIN_44--------L6
set_location_assignment PIN_44 -to y[6]
#PIN_45--------L7
set_location_assignment PIN_45 -to y[7]
输入上述引脚锁定命令后保存,然后运行该脚本文件,方法如下:选择菜单Tools中的Tcl Scripts项,弹出如下对话框,选择Project下的脚本文件,点击右上方的run命令即可。
脚本文件运行情况在下方的状态栏中给出,如下图所示。
引脚锁定结果可以通过菜单Assignments中的Pin Planer项查看,如下图所示:
7、编程下载、硬件验证
在完成引脚锁定后,重新进行一次全编译,即可生成用于下载的.sof配置文件。执行全编译后,按如下方法下载配置:
首先点击”下载”按钮,单击Hardware Setup弹出对话框如下图所示,选择Byteblaster II ,关闭该对话框,然后载入并选中下载文件,点击Start 开始下载
下载成功后,改变K0——K5开关状态,观察LED0——LED7的状态,验证是否满足译码器功能。
四、实验报告要求
1、写出使用quartus II软件进行VHDL程序设计的基本方法、过程。
2、编写各个VHDL源程序。
3、根据电路功能,画出测试输入信号波形及仿真波形。
4、根据选用的EDA实验开发装置,画出用于硬件验证的管脚锁定表格。
5、记录系统仿真、逻辑综合及硬件验证结果
6、记录实验过程中出现的问题及解决方法。