实验三 3-8译码器的功能测试及仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三3-8译码器功能测试及仿真
一、实验目的
1、掌握中规模集成3-8译码器的逻辑功能和使用方法。
2、进一步掌握VHDL语言的设计。
二、预习要求
复习有关译码器的原理。
三、实验仪器和设备
1.数字电子技术实验台1台
2.数字万用表1块
3.导线若干
4.MUX PLUSII软件
5.74LS138集成块若干
四、实验原理
译码器是一个多输入、多输出的组合逻辑电路。它的作用是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。译码器在数字系统中有广泛的用途,不仅用于代码的转换、终端的数字显示,还用于数据分配,存贮器寻址和组合控制信号等。不同的功能可选用不同种类的译码器。
译码器分为通用译码器和显示译码器两大类。前者又分为变量译码器和代码变换译码器。
1.变量译码器(又称二进制译码器)
用以表示输入变量的状态,如2线-4线、3线-8线和4线-16线译码器。若有n个输入变量,则有2n个不同的组合状态,就有2n个输出端供其使用。而每一个输出所代表的函数对应于n个输入变量的最小项。
以3线-8线译码器74LS138为例进行分析,下图(a)、(b)分别为其逻辑图及引脚排列。其中 A2、A1、A0为地址输入端,0Y~7Y为译码输出端,S1、2S、3S为使能端。下表为74LS138功能表,当S1=1,2S+3S=0时,器件使能,地址码所指定的输出端有信号(为0)输出,其它所有输出端均无信号(全为1)输出。当S1=0,2S+3S=X时,或 S1=X,2S+3S=1时,译码器被禁止,所有输出同时为1。
3-8线译码器74LS138逻辑图及引脚排列图
74LS138功能表
输入输出
S12S+3S A2A1A00Y1Y2Y3Y4Y5Y6Y7Y
1 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 1 1 0 1 1 1 1 1 1
1 0 0 1 0 1 1 0 1 1 1 1 1
1 0 0 1 1 1 1 1 0 1 1 1 1
1 0 1 0 0 1 1 1 1 0 1 1 1
1 0 1 0 1 1 1 1 1 1 0 1 1
1 0 1 1 0 1 1 1 1 1 1 0 1
1 0 1 1 1 1 1 1 1 1 1 1 0
0 ×××× 1 1 1 1 1 1 1 1
× 1 ××× 1 1 1 1 1 1 1 1
二进制译码器实际上也是负脉冲输出的脉冲分配器。若利用使能端中的一个输入端输
入数据信息,器件就成为一个数据分配器(又称多路分配器),如图3-2所示。若在S1输入
端输入数据信息,2S=3S=0,地址码所对应的输出是S1数据信息的反码;若从2S端输入
数据信息,令S1=1、3S=0,地址码所对应的输出就是2S端数据信息的原码。若数据信息是时
钟脉冲,则数据分配器便成为时钟脉冲分配器。
根据输入地址的不同组合译出唯一地址,故可用作地址译码器。接成多路分配器,可
将一个信号源的数据信息传输到不同的地点。
二进制译码器还能方便地实现逻辑函数,如下图所示,实现的逻辑函数是 Z =C B A C B A C B A +++ABC
作数据分配器图 实现逻辑函数图
利用使能端能方便地将两个 3/8译码器组合成一个4/16译码器,如下图所示。
用两片74LS138组合成4/16译码器图
五、实验内容及步骤
1.74LS138译码器逻辑功能测试
将译码器使能端S 1、2S 、3S 及地址端A 2、A 1、A 0 分别接至逻辑电平开关输出口,八个
Y⋅⋅⋅依次连接在逻辑电平显示器的八个输入口上,拨动逻辑电平开关,按下表逐输出端0
7Y
项测试74LS138的逻辑功能。
输入输出
S12S3S A2A1A00Y1Y2Y3Y4Y5Y6Y7Y 1 0 0 0 0 0
1 0 0 0 0 1
1 0 0 0 1 0
1 0 0 0 1 1
1 0 0 1 0 0
1 0 0 1 0 1
1 0 0 1 1 0
1 0 0 1 1 1
0 ×××××
× 1 1 ×××
2.3-8译码器的VHDL仿真
1)运行该软件,在主菜单中选择File中的New中的Text Editor file文本编辑框,输入与门的VHDL文本:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY decoder3_8 IS
PORT(a: IN STD_LOGIC_ VECTOR(DOWNTO 0);
y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END decoder3_8;
ARCHITECTURE one OF decoder3_8 IS
BEGIN
PROCESS (a)
BEGIN
CASE a IS
WHEN "000"=>Y<="00000001";
WHEN "001"=>Y<="00000010";
WHEN "010"=>Y<="00000100";
WHEN "011"=>Y<="00001000";
WHEN "100"=>Y<="00010000";
WHEN "101"=>Y<="00100000";