常用的组合逻辑电路编码器
编码器
- 编码:为了区分一系列不同的事物,将其中的每个事物用二值代码表示
- 编码器:由于在二值逻辑电路中,信号是以高低电平给出的,故编码器就是把输入的每一个高低电平信号变成一个对应的二进制代码
- 编码器分为普通编码器和优先权编码器。根据进制可分为二进制编码器和二-十进制编码器
1 普通编码器
1.1 电路特点
8-3译码器(八线三线编码器):每个时刻都只能有一个电平输入,对每一个输入的电平进行编码,一共八个输入,所以需要三位二进制数
- I 0 I 7 I_{0} ~I_{7} I0 I7 为信号输入端,高电平有效
- Y 2 Y 1 Y 0 Y_{2} Y_{1} Y_{0} Y2Y1Y0 为三位二进制代码输出端
1.2 写出真值表
1.3 写出逻辑表达式
1.4 逻辑电路
2 优先编码器
- 普通编码器每次只能输入一个信号。而优先编码器可以同时输入几个信号,但在设计时已经将各输入信号的优先顺序排好。当几个信号同时输入时,优先权最高的信号优先编码
下面以8线-3线优先编码器74HC148为例,其逻辑符号如图一所示,内部电路如图二所示( I 7 I_{7} I7优先级最高)
2.1 电路特点
- 输入低电平有效,选通端S也是低电平有效
- 通过选通输入端S进行选通锁定的切换,.当 S = 0 S=0 S=0时, S ′ = 1 S'=1 S′=1时,所有输出端均被锁定在高电平,即 I 7 ′ ~ I 0 ′ = 1...1 I'_{7} ~ I'_{0} =1 ... 1 I7′~I0′=1...1。当 S = 1 S=1 S=1时, S ′ = 0 S'=0 S′=0,编码器正常工作。
- 为了扩展电路的功能和使用的灵活性,在8线-3线优先编码器74HC148中附加了选通输出端 Y S ′ Y'_{S} YS′ 和扩展端 Y E X ′ Y'_{EX} YEX′
- Y S ′ = 0 Y'_{S}=0 YS′=0,电路工作但无编码输入, Y E X ′ = 0 Y'_{EX}=0 YEX′=0,电路工作有编码输入
2.2 真值表
根据电路特点得到真值表:
2.3 逻辑表达式
根据真值表,写出逻辑表达式
大家可能觉得低电平有效有点怪怪的,其实咱们用换元法就行啦,比如我们要求 Y 2 ′ Y'_{2} Y2′,我们直接看哪一行 Y 2 ′ = 0 Y'_{2}=0 Y2′=0,然后看这几行,然后写出来 Y 2 ′ = ( ( I 7 + I 6 I 7 ′ + I 5 I 6 ′ I 7 ′ + I 4 I 5 ′ I 6 ′ I 7 ′ ) S ) ′ Y'_{2}=((I_{7}+I_{6}I_{7}'+I_{5}I_{6}'I_{7}'+I_{4}I_{5}'I_{6}'I_{7}')S)' Y2′=((I7+I6I7′+I5I6′I7′+I4I5′I6′I7′)S)′【因为使用原变量进行运算,所以最后结果要取反】,利用 I 7 + I 6 I 7 ′ = I 7 + I 6 I_{7}+I_{6}I_{7}'=I_{7}+I_{6} I7+I6I7′=I7+I6,化简得到 Y 2 ′ = ( ( I 4 + I 5 + I 6 + I 7 ) S ) ′ Y_{2}'=((I_{4}+I_{5}+I_{6}+I_{7})S)' Y2′=((I4+I5+I6+I7)S)′,同理可以得到一下输出的表达式
【王老师课件这里有点错误,参照书中已经改进】
Y 2 ′ = ( ( I 4 + I 5 + I 6 + I 7 ) S ) ′ Y_{2}'=((I_{4}+I_{5}+I_{6}+I_{7})S)' Y2′=((I4+I5+I6+I7)S)′
Y 1 ′ = ( ( I 2 ′ I 4 I 5 + I 3 ′ I 4 I 5 + I 6 + I 7 ) S ) ′ Y_{1}'=((I_{2}'I_{4}I_{5}+I_{3}'I_{4}I_{5}+I_{6}+I_{7})S)' Y1′=((I2′I4I5+I3′I4I5+I6+I7)S)′
Y 0 ′ = ( ( I 1 I 2 ′ I 4 ′ I 6 ′ + I 3 I 4 ′ I 6 ′ + I 5 I 6 ′ + I 7 ) S ) ′ Y_{0}'=((I_{1}I_{2}'I_{4}'I_{6}'+I_{3}I_{4}'I_{6}'+I_{5}I_{6}'+I_{7})S)' Y0′=((I1I2′I4′I6′+I3I4′I6′+I5I6′+I7)S)′
Y S ′ = ( I 7 ′ I 6 ′ I 5 ′ I 4 ′ I 3 ′ I 2 ′ I 1 ′ I 0 ′ S ) ′ Y_{S}'=(I_{7}'I_{6}'I_{5}'I_{4}'I_{3}'I_{2}'I_{1}'I_{0}'S)' YS′=(I7′I6′I5′I4′I3′I2′I1′I0′S)′
Y E X ′ = ( ( I 7 + I 6 + I 5 + I 4 + I 3 + I 2 + I 1 ′ + I 0 ) S ) ′ Y_{EX}'=((I_{7}+I_{6}+I_{5}+I_{4}+I_{3}+I_{2}+I_{1}'+I_{0})S)' YEX′=((I7+I6+I5+I4+I3+I2+I1′+I0)S)′
2.4 逻辑电路图
3 总结与例子
总结
- 普通编码器每次只能输入一个信号,对每一信号进行编码
- 优先编码器允许多个信号同时输入,对优先级最高的进行编码,S端像阀门一样, Y S = 0 Y_{S}=0 YS=0工作无编码, Y E X = 0 Y_{EX}=0 YEX=0工作有编码
例子
要求:试用两片74HC148接成16线-4线优先编码器,将 A 0 ′ ~ A 15 ′ A'_{0} ~A'_{15} A0′~A15′ 16个低电平输入信号编为0000~1111, 16个4位二进制代码,其中 A 15 ′ A'_{15} A15′ 的优先权最高, A 0 A_{0} A0 的优先权最低
分析:
- 根据优先权的要求,若第一片的优先级比第二片高,则第一片的输入为 A 15 ′ ~ A 8 ′ A'_{15} ~A'_{8} A15′~A8′ ,第二片的输入为 A 7 ′ ~ A 0 ′ A'_{7} ~A'_{0} A7′~A0′ 。当第一片工作,即有输入信号时,第二片禁止工作,也就是使得第二片的 S ′ = 1 S'=1 S′=1
- 由于74HC148输出端只有3个,要想根据要求输出为4线,必须借用第一片的扩展端 Y E X ′ Y'_{EX} YEX′ 。由于有输入时, Y E X ′ Y'_{EX} YEX′=0 ,无输入时 Y E X ′ = 1 Y'_{EX}=1 YEX′=1 ,故加反相器可作输出四位二进制数码的最高位
- 由于74HC148禁止工作或允许工作而无输入信号时,输出端的状态为111,故输出四位二进制代码的低三位可由两片输出端与非构成。
特点总结:
- 第一片为高优先权,只有(1)无编码输入时,(2)才允许工作
- 第(1)片 Y E X ′ = 0 Y'_{EX} =0 YEX′=0时,表示对 A 15 ′ ~ A 8 ′ A'_{15} ~ A'_{8} A15′~A8′的编码
- 低3位输出应是两片的输出的“与非”
我是这样想的:
(1)对于二进制数,输入从8变成16,所以需要两片,输出其实是多了一位二进制数,所以可以看成输出多了一位;
(2)对于某一片,一个二进制数就对应一个信号,那我们只要让同一个时间只有一篇工作,然后多一个标志信号,确定是那一片
(3)原本的电路输出的是反码,采用与门的话,结果是低电平那一位,采用与非门再取了一次反