EDA
实
验
报
告
实验名称:组合逻辑电路的 VHDL 设计和时序逻辑电路的设计
姓名:
学号:
班级:
实验一:组合逻辑电路的 VHDL 设计
一、实验目的。
熟悉 Quartus II 的 VHDL 设计流程全过程,学习简单的组合逻辑电路的设计,多层次
电路的设计仿真和硬件测试。
二、实验设备。
PC 机和 EDA 试验箱。
三、实验内容。
实验内容一:用 VHDL 语言设计 2 选 1 多路选择器。
实验原理:
实验原理图如上所示,2 选 1 多路选择器通过 s 使能端控制信号的选择,低电平的时候
选择输入 a;高电平的时候选择输入 b。
实验内容:
首先利用 quartusII 完成 2 选 1 多路选择器的文本编辑和编译,仿真测试等步骤,给出
时序仿真波形,选择目标器件 EP1C3,建议选实验模式 5,用键 1 控制 s,a,b 分别接 clock0
和 clock2;输出信号 y 接扬声器,通过短路帽选择 clock0 为 256Hz,clock2 为 8Hz,引脚
锁定之后,进行编译,下载 和硬件测试实验,通过键 1 去控制 s,可使扬声器发出不同的
音调。
实验步骤:
a、创建工程。新建一个文件夹,输入源程序并进行相关的设置,存盘,将设计文本加入工
程之中,选择仿真器和综合器的类型,目标芯片,工具的设置等。
b、编译。首先进行相关项的选择和设置,选择 FPGA 芯片 EP1C3..选择配置期间的工作方式
等,完成这些相关项的选择和设置之后,开始进行全程编译,如果出现错误那么找到对应的
错误并修改,直到编译成功。
c、时序仿真。打开波形仿真编辑器,设置仿真时间,并存盘,注意不要随意改变文件的名
称,将端口信号的节点加入波形编辑器中,编辑输入波形,启动仿真,观察仿真结果。
d、引脚锁定和下载。根据是要要求分别锁定 a 为引脚 93,b 为引脚 17,y 为引脚 129,存
储好之后再次编译。
e、相关硬件的测试,并检测试验结果。当没有按键按下的时候,扬声器以某一特定的频率
发声(256HZ);当按键 1 按下的时候,扬声器以另外一种特定的频率发声(8HZ)。
实验程序及分析
1、程序设计。
2 选 1 多路选择器的程序如下:
ENTITY mux21a IS
PORT(a,b,s: IN BIT;
Y:OUT BIT);
END ENTITY mux21a
ARCHITECTURE one OF mux21a IS
BEGIN
Y<=a WHEN s=’0’ ELSE b;
End ARCHITECTURE
2、程序分析。
该程序首先定义了 3 个输入端口 abs,并选择数据类型为 BIT,一个输出端口信号 y,也是
BIT 类,实现如下功能:当满足条件 s=‘0’,a 端口的信号传输给端口 y,否则将 b 输入的
信号传输给 y。
3、硬件测试,当没有按下键的时候,扬声器以一种特定的频率发声(256HZ),当按下键 1
的时候扬声器以另一种频率发声(8HZ)。
4、波形仿真。
仿真波形如下:
5、波形分析。
由波形可见,当 s 为低电平的时候,输出 y 跟随 a 的变化,而当 s 为高电平的时候,输出 y
跟随 b 的变化。
实验内容二:将上述 2 选 1 多路选择器堪称是一个元件 mux21a 利用元件例化语句描述一个
电路。
实验内容:
首先利用 quartusII 完成 2 选 1 多路选择器的文本输入和编译,仿真测试等步骤,给出时序
仿真波形,然后进行引脚锁定以及硬件下载测试 选择目标器件 EP1C3,建议选择电路模式 5,
用键 1 控制 s0,用键 2 控制 s1,a3,a2,a1 分别接 clock5,clock0,clock2,输出信号
outy 接扬声器,通过短路帽选择 clock0 为 256Hz,clock5 为 1024Hz,clock2 为 8Hz。通过
键 1,键 2,控制 s0,s1,可使扬声器输出不同音调。
实验程序及分析:
1、程序设计.
详细实验过程和上述实验过程相似,完整的实验程序如下:
ENTITY mux21a IS
PORT (a,b,s:IN BIT;
y: OUT BIT);
END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS
BEGIN
y<=a WHEN s='0' ELSE b;
END ARCHITECTURE one;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY Vhdl1 IS
PORT (a1,a2,a3,s0,s1:IN STD_LOGIC;
outy:OUT STD_LOGIC);
END ENTITY Vhdl1;
ARCHITECTURE BHV OF Vhdl1 IS
COMPONENT mux21a
PORT (a,b,s:IN STD_LOGIC;
y:OUT STD_LOGIC);
END COMPONENT;
SIGNAL tmp:STD_LOGIC;
BEGIN
u1: mux21a PORT MAP (a=>a2,b=>a3,s=>s0,y=>tmp);
u2: mux21a PORT MAP (a=>a1,b=>tmp,s=>s1,y=>outy);
END ARCHITECTURE BHV;
2、程序分析:当 s0=‘0’时,tmp 输出选择输入信号中的 a3,当 s0=‘1’时选择输入信号
a2,当 s1=‘0’时,选择输入信号 tmp,当 s1=‘1’时,选择输入信号 a1.
3、硬件测试:当没有键按下的时候,扬声器以一种特定的频率发声(1024Hz),当只按下键
1 的时候,扬声器改变一种频率发声(256Hz),当只按下键 2 的时候以特定的特定频率发声
(1024Hz),当同时按下键 1 和 2 的时候,扬声器以特定频率发声(8Hz)。
4、仿真波形:
5、波形分析:
由上述仿真波形可见,当 s0、s1 都为低电平的时候,输出 outy 跟随 a1 变化,当只有 s0
为低电平的时候,输出 outy 跟随 a3 变化,当只 s1 为低电平的时候,输出 outy 跟随 a2 变
化,当同时 s0,s1 都为低电平的时候,输出 outy 跟随 a3 变化。
实验二:时序电路的 VHDL 设计
实验内容一:用 VHDL 语言设计 D 边沿触发器
实验内容:首先利用 quartusII 完成 d 边沿触发器的文本编辑输入和编译,仿真测试等步骤,
给出时序仿真波形,然后进行引脚锁定和硬件测试。
实验原理:
实验原理图如上所示。通过 clk 的上升沿来控制 q 的输出,跟随输入信号 d 来改变。
实验程序及分析:
1、程序设计。
完整的程序如下:
library ieee;
use ieee.std_logic_1164.all;
entity dff1 is
port(clk:in std_logic;
d:in std_logic;
q:out std_logic);
end;
architecture bhv of dff1 is
signal q1:std_logic;
begin
process(clk,q1)
begin
if clk'event and clk='1'
then q1<=d;
end if;
end process;
q<=q1;
end bhv;
2、程序分析:当 d 为‘1’的时候,clk 来一个脉冲,输出 q 就跟随 d 变成‘1’,而当 d 为
‘0’的时候 clk 来一个脉冲,输出 q 就跟随 d 变成‘0’了。
3、硬件测试:当按下键 1 的时候,键 2 也按下了,那么在键 2 按下的瞬间,灯就开始亮起
来,当键 1 没有按下的时候,按下键 2,此时灯立即跟随按键 2 的按下而熄灭。
4、仿真波形:
5、波形分析:由以上波形图可以看出来,当 d 为高电平的时候,clk 有一个上升沿,输出 q
就跟随 d 变成高电平,而当 d 为低电平的时候 clk 有一个上升沿,输出 q 就跟随 d 变成低电
平了。
实验内容二:用 VHDL 语言设计 D 锁存器。
实验程序及分析:
1、程序设计。
完成的程序如下:library ieee;
use ieee.std_logic_1164.all;
entity dff1 is
port(clk:in std_logic;
d:in std_logic;
q:out std_logic);
end;
architecture bhv of dff1 is
signal q1:std_logic;
begin
process(clk,q1)
begin
if clk='1'
then q1<=d;
end if;
end process;
q<=q1;
end bhv;
2、程序分析:有以上程序可以知道,当 clk 为高电平的时候,无论 d 怎么变,q 也跟随 d
一起变化;但是当 clk 为低电平的时候,无论 d 怎么变化,q 也不会有任何的变化。起到了
一个锁存的作用。
3、硬件测试:当按下键 2 的时候,无论怎么按键 1 等都会跟随按键的变化而变化,而当键
2 没有按下的时候,无论键 1 怎么按灯都不会亮。
4、仿真波形:
5、
6、波形分析:由以上波形图可见,当 clk 为高电平的时候,无论 d 怎么变,q 也跟随 d 一
起变化为高低电平;但是当 clk 为低电平的时候,无论 d 怎么变化,q 也不会有任何的波动。
6、比较分析实验内容一和实验内容二的仿真和实测结果,说明这两种电路的异同点。
通过实验波形的仿真很容易看出这两个电路的区别和联系。首先,当 d 为高电平的时候,对
于实验内容一,clk 只要有上升沿脉冲到来,q 即由原来的低电平变成高电平,而对于实验
内容二,只有 clk 为高电平的时候,d 的变化才会对输出信号 q 产生影响。其次,在 d 为低
电平的时候,对于实验内容一,只要 clk 来一个上升沿脉冲,q 即变化为低电平,而对于实
验内容二,clk 为低电平的时候,d 的变化不会对输出 q 产生影响。两个电路的相同点即外
部输入输出信号都是 q,d 和时钟信号 clk,电路的外部结构相同。
实验注意事项:
此次实验成功需要注意的地方有:首先,对器件的选择要和实验室的硬件相匹配为
EP1C3,不可以选错;其次,在时序仿真的时候,选择延时时间为 10us;
最后在建工程和仿真波形的时候,要注意文件的名称一定要一致,不然会报错,还有在硬件
测试的时候,一定要将跳线帽插在对应的频率处,才是正确的实验结果。
实验心得体会:通过本次实验对 VHDL 描述语言的语法又更进一步的认识和熟悉,从整体
上把握 VHDL 程序的基本结构和设计特点,为以后编辑大型器件锁定了厚实的基础。懂得
了如何用 VHDL 语言是去控制产生一些简单的组合、时序电路。多路选择器是典型的组合电
路,D 边沿触发器是典型的时序电路,在数电中已经有所了解,通过这次的 VHDL 的实验,
对其又有了进一步的认识,使用 VHDL 语言设计这两个电路,应该要达到一个很熟悉的水平,
以便最终达到应用的目的,通过此次实验,可知主要通过考察 VHDL 语言编译器件的能力,
因此对语言的表述一定要到位。
通过此次实验也对 EDA 实验软