表 引脚锁定方法
信号 EP2C5 seg[0] seg[1] seg[2] seg[3] seg[4] seg[5] seg[6] seg[7] clock 145 142 143 139 141 137 138 134 23 引脚 EP1C12 161 144 159 141 156 139 143 140 153 dig[0] dig[1] dig[2] dig[3] dig[4] dig[5] dig[6] dig[7] 信号 EP2C5 135 127 133 117 128 115 118 113 引脚 EP1C12 138 137 136 135 134 133 132 131
(7) 将dled.bdf设置成顶层实体(Project—Set as Top-level Entity)。对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
(8) 下载程序到芯片上,观察数码管的显示状态。
(9) 稳定显示后,放慢扫描速度演示动态显示的原理过程。
16
实验 蜂鸣器输出报警声
1. 实验目的
学习交流蜂鸣器的发声原理。 2. 实验内容
在实验箱上的蜂鸣器输出报警笛声。
3. 实验原理
实验箱上有一个交流蜂鸣器BUZZER,只要在BEEP上输入一定频率的脉冲,蜂鸣器就会发出高低音调不同的声音。
4. 实验步骤
(1) 启动Quartus II,建立一个空白工程,然后命名为beep.qpf。
(2) 新建beep.vhd源程序文件,源代码如下。然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。 程序参考:
LIBRARY IEEE; USE USE USE
IEEE.STD_LOGIC_1164.ALL; IEEE.STD_LOGIC_UNSIGNED.ALL; IEEE.STD_LOGIC_ARITH.ALL;
ENTITY beep IS
PORT(
clk_48M : output
:
IN
STD_LOGIC;
OUT STD_LOGIC);
END ;
ARCHITECTURE one of beep IS
SIGNAL SIGNAL BEGIN
PROCESS(clk_48M) BEGIN
PROCESS(count(9)) BEGIN
beep_r<= not (count(13) AND count(24) AND count(27)); END PROCESS; output<=beep_r;
IF
RISING_EDGE(clk_48M)THEN IF
count=
\
count <= \count<=count+1; count: beep_r:
STD_LOGIC_VECTOR(27 DOWNTO 0); STD_LOGIC;
ELSE END IF;
END IF;
END PROCESS;
END;
17
(3) 选择目标器件并对相应的引脚进行锁定,这里选择的器件为Altera公司的Cyclone II系列的EP2C5Q208C8,或者Cyclone I系列的EP1C12Q240C8。引脚锁定方法如下表所列。
表 引脚锁定方法
信号 beep 引脚 EP2C5 103 EP1C12 119 信号 clk 引脚 EP2C5 23 EP1C12 153
(4) 对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
(5) 将JP2 和JP20的beep接上,使得蜂鸣器有效。下载程序到芯片上,将跳线短接帽接好,此时可以听到蜂鸣器发出“滴滴”的报警声。
18
实验 1位全加器的文本输入(波形仿真用)
1. 实验目的
通过此实验让学生逐步了解、熟悉和掌握FPGA开发软件Quartus II的使用方法及VHDL的编程方法。学习电路的仿真方法。
2. 实验内容
本实验的内容是建立一个1位全加器。在实验箱上的按键KEY1~KEY3分别为A、B和Cin,并通过LED1~LED3指示相应的状态。输出Sum和Cout通过LED7和LED8指示。 3. 实验原理
1位全加器的真值表如下所示。
表 1位全加器逻辑功能真值表
A 0 0 1 1 0 0 1 1 B 0 1 0 1 0 1 0 1 Cin 0 0 0 0 1 1 1 1 Sum 0 1 1 0 1 0 0 1 Cout 0 0 0 1 0 1 1 1 4. 实验步骤
(1) 启动Quartus II,建立一个空白工程,然后命名为full_add.qpf。
(2) 新建full_add.vhd源程序文件,源代码如下。然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。 程序参考:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_Arith.ALL; USE IEEE.STD_LOGIC_Unsigned.ALL; ENTITY full_add IS PORT(
a,b,cin:
IN STD_LOGIC;
key1,key2,key3: OUT STD_LOGIC; sum,cout: OUT STD_LOGIC ); END;
ARCHITECTURE one OF full_add BEGIN Key1<=a; a_r b_r
<= '0' & a; <= '0' & b;
--将1位矢量扩为2位 --将1位矢量扩为2位
IS
SIGNAL sum_r,a_r,b_r,cin_r:STD_LOGIC_VECTOR( 1 DOWNTO 0);
cin_r<= '0' & cin; --将1位矢量扩为2位
sum_r<=a_r+b_r+cin_r; sum<=sum_r(0);
19
cout<=sum_r(1); END;
(3) 波形仿真步骤如下:
① 在Quartus II主界面中选择File→ New命名,打开新建文件对话框,从中选择Vector Waveform File,如下图所示。单击OK建立一个空的波形编辑窗口。选择File→Save as 改名为full_add.vwf。此时会看到窗口内出现如下图所示。
在空白处双击鼠标左键
图 新建文件对话框 图 新建波形文件界面
② 在上图所示的Name选项卡内双击鼠标左键,弹出如图 所示的对话框。在该对话框中单击Node Finder按钮,弹出如图 所示的对话框。
图 添加节点对话框
③ 按照下图所示进行选择和设置,先按下“list”按钮,再按下“>>”按钮添加所有节点,最后按下“ok”按钮。
20