一、编码器与解码器的介绍及其原理
(一)编码器(Encoder)
1.编码器
在数字系统中,为了区分一系列不同的事物,我们给这些事物一个独一无二的二进制代码,就是一个编码过程。编码器就是实现将输入的一系列高低电平信号,编出这些信号的对应二进制代码的模块。编码器的逻辑功能是将2的n次方个输入信号的高/低电平信号编成一个对应的n位二进制代码。
2.优先编码器(74LS148)
优先编码器是一种能将多个二进制输入压缩成更少数目输出的电路或算法。其输出是序数0到输入最高有效位的二进制表示。
优先编码器常用于在处理最高优先级请求时控制中断请求。如果同时有两个或以上的输入作用于优先编码器,优先级最高的输入将会被优先输出。
功能表
8至3位优先级编码器的真值表如下所示:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Q2 | Q2 | Q0 |
X | X | X | X | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
X | X | X | 0 | X | X | X | 1 | 1 | 1 | 0 |
X | X | 0 | X | X | X | 1 | 1 | 1 | 0 | 0 |
X | 0 | X | X | X | 1 | 1 | 1 | 0 | 0 | 0 |
0 | X | X | X | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
其中X表示不关心,即逻辑“0”或逻辑“1”。
根据上述真值表,该编码器的布尔表达式(数据输入为D0至D7,输出为Q0、Q1和Q2)如下所示:
Q0 = D3' + D2' + D1' + D0'
Q1 = D3' + D2' + D1' + D0
Q2 = D3' + D2' + D1 + D0
(二)译码器
1.译码器的定义:
译码器(Decoder)的作用正好与编码器相反,是将一个N位二进制代码(N个输入信号)转译为2的n次方个输出的高/低电平信号(或者另一种代码)。常用的译码器电路有二进制译码器、 二–十进制译码器和LED显示译码器。
2.常用译码器的介绍:
(1)74LS48概述
7段显示译码器74LS48是输出高电平有效的译码器,74LS48除了有实现7段显示译码器基本功能的输入(DCBA)和输出(Ya~Yg)端外,7448还引入了灯测试输入端(LT)和动态灭零输入端(RBI),以及既有输入功能又有输出功能的消隐输入/动态灭零输出(BI/RBO)端。
74LS48引脚图
真值表
(2)74LS138概述
功能表
工作原理:当一个选通端(S1)为高电平,另两个选通端(1和
2)为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
(3)验证74LS148和74LS138的逻辑功能:
根据实际电路74LS148和74LS138输出的状态得出以下真值表:
74LS148 | 74LS138 | ||||||||||||||||||||
I0 | I1 | I2 | I3 | I4 | I5 | I6 | I7 | Y2 | Y1 | Y0 | A2 | A1 | A0 | Y0 | Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
X | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
X | X | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
X | X | X | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
X | X | X | X | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
X | X | X | X | X | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
X | X | X | X | X | X | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
X | X | X | X | X | X | X | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
实验分析:74LS148输出端Y0-Y2输出的有效值均为低电平,但是74LS138输入端输入的有效值均为高电平有效,因此在编码器和译码器之间加上了3个非门以此达到实验效果。
二、应用案例
(一)应用题目说明:
假如有四个病房,四个病人的病情情况不同,分别对应优先级:最高、高、中、低。优先级低的会被优先级高得中断,可以用LED灯的亮灭或者LED数码管情况来代表病人的求助与否。
具体任务:
1、安装Multisim软件,熟悉基本使用方法;
2、在Multisim中设计电路。
(二)任务实现
1.Multisim软件的基本操作方
(1)创建电路
打开Multisim软件后,首先要创建一个新的电路。方法是点击菜单栏的“文件”然后选择“创建一个新的电路。
(2)添加元件
在Multisim中,可以从左侧的元件库中选择需要的元件,拖动到电路图中并放置在合适的位置。Multisim提供了各种各样的元件,包括电阻、电容、电感、二极管、晶体管、运算放大器等等,用户可以根据需要选择合适的元件。
(3)连接元件
添加元件后,需要使用“Wire”工具将元件连接起来,确保连接正确无误。在Multisim中,可以使用自动连线功能,也可以手动连接元件。
(4)设置元件参数
双击元件可以打开元件属性对话框,可以设置元件的参数,如电阻值、电容值等。在对话框中,可以输入数值或者使用拖动条进行调整。
(5)运行仿真
点击“Run”按钮,即可开始仿真电路。在仿真结果中,可以查看电路的电压、电流等参数。如果电路中有错误,Multisim会给出相应的提示。
(6)分析仿真结果
可以使用“Probe”工具查看电路中各个元件的参数,也可以使用“Grapher”工具绘制电路参数的曲线图。在Multisim中,还可以使用虚拟示波器、虚拟多用表等工具对电路进行分析。
(7)保存电路
仿真完成后,可以保存电路图和仿真结果。在保存时,可以选择不同的文件格式,如PDF、PNG、JPG等。
2、在Multisim中设计电路
运用上述提到的编码器(74LS148)和译码器(74LS48和74LS138)进行电路设计
本电路中的优先级随房间号的增大而增大,且在3号和4号病房同时呼叫时,LED显示屏上显示优先级较高的4号病房。此设计是基于编码器74LS148的优先级而设计的。