VHDL语言程序设计报告
实验名称:3--8译码器的VHDL程序设计
指导老师:
学 生:
时间:2012年6月23日
三-八译码器三输入,八输出。当输入信号按二进制方式的表示值为N时(输入端低电平有效),输出端从零到八记,标号为N输出端输出低电平表示有信号产生,而其它则为高电平表示无信号产生。因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为低电平的情况下,能表示所有的输入组合,因此不需要像编码器实验那样再用一个输出端指示输出是否有效。但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。
三-八译码器真值表
输入 输出
A2 A1 A0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
一、实验目的与要求:
1、通过3:8译码器的设计,熟悉ALTERA公司EDA设计工具软件QuartusII 5.0。
2、熟悉原理图输入及仿真步骤。
3、掌握组合逻辑电路的静态测试方法
4、初步了解可编程器件设计的全过程。
5、理解硬件描述语言和具体电路的映射关系。
二、实验步骤与内容:
1、创建工程。
2、新建文件夹。
3、画出正确的原理图,保存,编译。
4、波形仿真,分配引脚,编译。
5、下载到实验板,进行功能验证。
三、实验源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SANBA IS
PORT(
D:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
G1,G2A,G2B:IN STD_LOGIC;
Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END ;
ARCHITECTURE XIANI OF SANBA IS
BEGIN
PROCESS(D,G1,G2A,G2B)
BEGIN
IF (G1='0')THEN Y<="11111111";
ELSIF(G1='1' AND G2A='0' AND G2B='0')THEN
IF (D(2)='0' AND D(1)='0' AND D(0)='0')THEN Y<="01111111";
ELSIF (D(2)='0' AND D(1)='0' AND D(0)='1')THEN Y<="10111111";
ELSIF (D(2)='0' AND D(1)='1' AND D(0)='0')THEN Y<="11011111";
ELSIF (D(2)='0' AND D(1)='1' AND D(0)='1')THEN Y<="11101111";
ELSIF (D(2)='1' AND D(1)='0' AND D(0)='0')THEN Y<="11110111";
ELSIF (D(2)='1' AND D(1)='0' AND D(0)='1')THEN Y<="11111011";
ELSIF (D(2)='1' AND D(1)='1' AND D(0)='0')THEN Y<="11111101";
ELSIF (D(2)='1' AND D(1)='1' AND D(0)='1')THEN Y<="11111110";
ELSE Y<="ZZZZZZZZ";
END IF;
ELSE Y<="ZZZZZZZZ";
END IF;
END PROCESS;
END;
四、实验仿真波形截图
实验原理图:
仿真波形图: