【数电专栏】

A 常用组合逻辑电路——编码器

编码(coding)——为了区分一系列不同的事物,将其中的每个事物用一个二值代码表示。
编码器(Encoder)的逻辑功能:把输入的每一个高、低电平信号变成一个对应的二进制代码。
(九)【数电】(组合逻辑电路)编码器_数电

A.a 普通编码器的工作原理

要求任何时刻只允许输入一个代编码的信号,否则会发生混乱。
如:8个输入状态,需要三位二进制编码。
输入: I 0 ∼ I 7 I_0 \sim I_7 I0I7八个高电平信号
输出: Y 2 Y 1 Y 0 Y_2Y_1Y_0 Y2Y1Y0,3位二进制代码
(九)【数电】(组合逻辑电路)编码器_数电_02
(九)【数电】(组合逻辑电路)编码器_数电_03
由于普通编码器在任何时刻 I 0 ∼ I 7 I_0\sim I_7 I0I7当中仅有一个取值为1,即只有真值表中所列的8种状态,而其他的( 2 8 − 8 2^8-8 288)种状态均为**约束项。**因此,由真值表(值为1的)可得到逻辑式(以Y2为例):
(九)【数电】(组合逻辑电路)编码器_数电_04

利用无关项化简得到:
(九)【数电】(组合逻辑电路)编码器_数电_05
(九)【数电】(组合逻辑电路)编码器_数电_06
输入 I 0 I_0 I0时,自然输出000
(九)【数电】(组合逻辑电路)编码器_数电_07

A.b 优先编码器的工作原理

在数字系统、特别是在计算机系统中,常常要控制几个工作对象,例如微机主机要控制打印机、磁盘驱动器和输入键盘等。当某个部件需要实行操作时,必须先送一个信号给主机(称为服务请求),经主机识别后再发出允许操作信号(服务响应),并按事先编好的程序工作。这里会有几个部件同时发出服务请求的可能,而在同一时刻只能给其中一个部件发出允许操作信号。因此,必须根据轻重缓急,规定好这些控制对象允许操作的先后次序,即优先级别。识别这类请示信号的优先级别并进行编码的逻辑部件称为优先编码器。
特点:允许同时输入两个以上编码信号。不过在设计优先编码器时已经将所有的输入信号按优先顺序排了队,当几个输入信号同时出现时,只对其中优先权最高的一个进行编码


8-3线优编码器

最基本的优先编码器有8个输入端,可以理解为有8台设备需要实施优先控制 ,三个输出端。例如 :最优先的设备为打印机,主机优先识别的编码为000(即优先编码器输出000的编码后,主机会首先让打印机工作 ,其他设备不管有否请求 ,均 不理睬),在I7端输入,请求信号为0电平。磁盘驱动器的请求信号在I6输入端输入, 主机优先识别的编码为 001 ,当I7没有请求时 ,其他输入端不管有否请求 ,都优 先处理 I6 的请求,输入的请求信号为低电平。如此类推。同时还设有输入、输出 使能端 S、 Y E X Y_{EX} YEX和优先标志 Y S Y_{S} YS

8-3优先编码器有8个输入端,一个控制编码器是否工作的使能端S;三个输出端( Y ‾ 2 、 Y ‾ 1 、 Y ‾ 0 \overline{Y}_2、\overline{Y}_1 、\overline{Y}_0 Y2Y1Y0);一个 工作显示端 Y E X Y_{EX} YEX, 既显示编码器是否在工作,亦用来控制主机工作状态;一个下级编码器工作使能端 Y S Y_S YS,作为扩展编码器的控制数用.

(九)【数电】(组合逻辑电路)编码器_数电_08
(九)【数电】(组合逻辑电路)编码器_数电_09

例子:74LS148片角
(九)【数电】(组合逻辑电路)编码器_数电_10
16:电源;
8:地;
10-4:低电平输入有效的编码请求输入信号;
9-6:以反码输入的编码输出信号;
5,14,15:根据片脚图和功能表得出。

(九)【数电】(组合逻辑电路)编码器_数电_11

信号要进行正常进行编码, S T ‾ \overline{ST} ST要处于低电平,称为选通输入端,低电平输入有效。
Y S ‾ \overline{Y_S} YS:选通输出端,有效编码时,输出高电平,低电平表示“电路工作,但无编码输入”
Y E X ‾ \overline{Y_{EX}} YEX:扩展端,低电平有效。(用途如:使用两个芯片编码)低电平表示“电路工作,且有编码输入”

紫色框中是正常工作的编码,优先级:7>6>5>…(当 I N 7 ‾ \overline{IN_7} IN7为0时,其它任意,即只有7决定):
I N 7 ‾ \overline{IN_7} IN7为低电平时,其他无论输入多少,都对输出无影响。7即输入为111,输出则为000。当 I N 7 ‾ \overline{IN_7} IN7为高电平, I N 6 ‾ \overline{IN_6} IN6为低电平时,无论其他输入什么,都对输出没有影响,以此类推。。。

第一行: S T ‾ \overline{ST} ST选通输入端为高电平时,整个芯片无法进行正常编码,所有输出都被封锁在高电平。
第二行: S T ‾ \overline{ST} ST是有效的,但 Y s ‾ \overline{Y_s} Ys为0,整个芯片处于待编码状态:已经做好编码的准备,但还没有编码请求信号输入。

(九)【数电】(组合逻辑电路)编码器_数电_12
功能表的第一行:
(九)【数电】(组合逻辑电路)编码器_数电_13

(九)【数电】(组合逻辑电路)编码器_数电_14

先列出YS的逻 辑表达式 由表知 Y S Y_S YS的输 出有9个1, 1个0. 若按常规由输出 1 的项来列式时, 化简非常麻烦.本 逻辑式可按输出 0 来列式:.
(九)【数电】(组合逻辑电路)编码器_数电_15

(九)【数电】(组合逻辑电路)编码器_数电_16

列出 Y E X Y_{EX} YEX的逻辑 表达式 由表知YEX的输 出有2个1, 其中 第一项中, I 0   I 7 I_0~I_7 I0 I7均 是 × × ×,意为对输出 不起作用, 本项只由S决定, 所以逻辑表达式 可不考虑这8项.
(九)【数电】(组合逻辑电路)编码器_数电_17
(九)【数电】(组合逻辑电路)编码器_数电_18

小结:

  • S T ‾ \overline{ST} ST为使能输入端,低电平有效。
  • Y S Y_S YS为使能输出端,通常接至高位芯片的 S T ‾ \overline{ST} ST端,和 S T ‾ \overline{ST} ST配合可以实现多级编码器之间的优先级别控制。
  • Y ‾ E X \overline{Y}_{EX} YEX为扩展输出端,是控制标志。 Y ‾ E X = 0 \overline{Y}_{EX}=0 YEX=0表示是编码输出; Y ‾ E X = 1 \overline{Y}_{EX}=1 YEX=1表示不是编码输出。

(九)【数电】(组合逻辑电路)编码器_数电_19


A.c MSI编码器芯片举例及应用举例

<1>集成二进制编码器
对于二进制编码器,又有普通编码器(单输入有效)和优先编码器(允许多输入有效)之分

所谓的二进制编码器,当我们的数字位输出为n位时,编码请求一定有 2 n 2^n 2n个与其对应。
(九)【数电】(组合逻辑电路)编码器_数电_20

2 3 = 8 2^3=8 23=8

(九)【数电】(组合逻辑电路)编码器_数电_21


<2>集成二-十进制编码器
与二进制编码器类似,二-十进制编码器也有普通编码器和优先编码器之分。
二-十进制编码器是把十进制的10个状态编程10个BCD代码,不同BCD代码(如8421码,2421码,余3码等),对应于不同的编码方案,同时也就对应于不同的二-十进制编码器。
目前,常用的二-十进制编码器有74LS147-8421BCD优先编码器

(九)【数电】(组合逻辑电路)编码器_数电_22

1-9:九个输入信号;ABCD:四个编码输出信号;NC:是闲置不同的空输入信号

(九)【数电】(组合逻辑电路)编码器_数电_23
低电平有效
第一行:全部为高电平,九个信号都没有编码请求,此时输出1111.


<3>集成编码器的扩展应用
由于集成电路受电路芯片面积和外部封装大小的限制,其管脚数目通常是有限的,为适应实际应用的需求,如当编码输入信号过多时,就必须对芯片进行扩展,以获得大容量的编码器。

(九)【数电】(组合逻辑电路)编码器_数电_24
(九)【数电】(组合逻辑电路)编码器_数电_25
只要A8非到A15非有任何一个编码请求, Y S ‾ \overline{Y_S} YS就是高电平指示, Y E X ‾ \overline{Y_{EX}} YEX就是低电平指示。
如果A8非到A15没有任何一个编码请求,均为1时,此时 Y S ‾ \overline{Y_{S}} YS为低电平,恰好激活第二片芯片( S ‾ \overline{S} S为低电平)。

一个工作时,另一个不工作,不工作时输出高电平,经过与非门没有作用。
(九)【数电】(组合逻辑电路)编码器_数电_26
(九)【数电】(组合逻辑电路)编码器_数电_27

(九)【数电】(组合逻辑电路)编码器_数电_28
(九)【数电】(组合逻辑电路)编码器_数电_29
(九)【数电】(组合逻辑电路)编码器_数电_30


(九)【数电】(组合逻辑电路)编码器_数电_31
10线4线编码器
A 9 ‾ \overline{A_9} A9优先权最高, A 8 ‾ \overline{A_8} A8其次,当这两者都没有请求时才对0-7进行编码。
当8和9有一个低电平,与非门输出高电平,封锁芯片。