译码的含义就是把输入的二进制代码的特定含义翻译成被编码的信息。译码器是一种常见的组合逻辑电路,它的输入代码组合会在某一个输出端产生特定的信号。译码器按照用途可分为3类:变量译码器﹑码制变换译码器和显示译码器。
变量译码器有n个输入端,m个输出端,它们的关系应满足:
m≤2n
变量译码器的方框图如图5-13所示。一般输入信号以二进制码出现,输出端中只有与输入二进制码对应的那个输出才为1。
图5-13 变量译码器框图
常见的变量译码器产品有:二输入四输出的2-4译码器,三输入八输出的3-8译码器和四输入十六输出的4-16译码器等。下面举例说明其原理和设计方法。
【例5-6】设计一个2-4译码器。
解:首先,列出2-4译码器的真值,如表5-4所示。
表5-4 2-4译码器真值表
X1 |
X0 |
Z0 |
Z1 |
Z2 |
Z3 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
根据真值表可以直接写出函数表达式:
Z0=X1' X0'
Z1=X1' X0
Z2=X1X0'
Z3=X1X0
根据该表达式可以画出逻辑电路图,如图5-14所示。
图5-14 2-4译码器逻辑电路图
常用的译码器通常会增设使能端E'。当E'=1时,译码器的4个输出均为1,译码器停止工作;当E'=0时,译码器才处于正常的工作状态。带使能端的2-4译码器的真值如表5-5所示。
表5-5 带使能端的2-4译码器真值表
E' |
X1 |
X0 |
Z0 |
Z1 |
Z2 |
Z3 |
1 |
d |
d |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
根据真值表5-5,可以写出函数表达式如下:
Z0=(E' X1' X0')'
Z1=(E' X1' X0)'
Z2=(E' X1X0')'
Z3=(E' X1X0)'
根据该表达式,可以画出带使能端的2-4译码器的逻辑电路图,如图5-15(a)所示。其逻辑符号如图5-15(b)所示。
(a) (b)
图5-15 带使能端的2-4译码器的逻辑电路图及逻辑符号
【例5-7】设计一个带使能端的3-8译码器。
解:通常为了充分利用封装的所有管脚并增强电路的功能和通用性,3-8译码器用3个使能端S1,S2和S3来控制电路。当S1=0,S2+S3=1时,所有的输出均为1,译码器停止工作;当S1=1,S2+S3=0时,译码器才能正常工作。带使能端的3-8译码器的真值,如表5-6所示。
表5-6 带使能端的3-8译码器真值表
S1 |
S2+S3 |
X2 |
X1 |
X0 |
Z0 |
Z1 |
Z2 |
Z3 |
Z4 |
Z5 |
Z6 |
Z7 |
d |
1 |
d |
d |
d |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
d |
d |
d |
d |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
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 |
根据真值表,可以写出函数表达式如下:
Z0=(S1S2' S3' X2' X1' X0')'
Z1=(S1S2' S3' X2' X1' X0)'
Z2=(S1S2' S3' X2' X1 X0')'
Z3=(S1S2' S3' X2' X1 X0)'
Z4=(S1S2' S3' X2 X1' X0')'
Z5=(S1S2' S3' X2 X1' X0)'
Z6=(S1S2' S3' X2 X1 X0')'
Z7=(S1S2' S3' X2 X1 X0)'
根据该表达式,可以画出带使能端的3-8译码器的逻辑电路图,如图5-16(a)所示。其逻辑符号如图5-16(b)所示。
(a)
(b)
图5-16 带使能端的3-8译码器的逻辑电路图及电路符号
【例5-8】用两片3-8译码器构成一片4-16译码器。
解:3-8译码器只有3个输入端,要对四输入的二进制数译码,需要借助使能端来做第4个输入端。具体连接如图5-17所示。
图5-17 两片3-8译码器扩展成一片4-16译码器
如图5-17所示,D、C、B、A为4-16译码器的输入端,Z0 ~Z15为输出端。可见,当D=0时,译码器Ⅰ工作,而译码器Ⅱ不工作,C、B、A控制Z0 ~Z7的输出状态;当D=1时,译码器Ⅰ不工作,而译码器Ⅱ工作,C、B、A控制Z8~Z15的输出状态。
【例5-9】用适当的译码器实现函数F(A、B、C、D)=∑m(0,2,5,7,8,13,15)。
解:因为该函数是四输入的函数,所以最方便的方法是用4-16译码器来实现该函数。4-16译码器的真值如表5-7所示。
表5-7 4-16译码器真值表
S1 |
S2 |
A3 |
A2 |
A1 |
A0 |
Z0 |
Z1 |
Z2 |
Z3 |
Z4 |
Z5 |
Z6 |
Z7 |
Z8 |
Z9 |
Z10 |
Z11 |
Z12 |
Z13 |
Z14 |
Z15 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
d |
d |
d |
d |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
d |
d |
d |
d |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
d |
d |
d |
d |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
4-16译码器的逻辑电路符号如图5-18所示。
图5-18 4-16译码器的逻辑电路符号
题目所给函数为:
F(A,B,C,D)=∑m(0,2,5,7,8,13,15)
= m0+m2+m5+m7+m8+m13+m15
=(m0' m2' m5' m7' m8' m13' m15')'
又根据译码器的真值表可知,当S1+S1=0时,
Zi= mi'
所以,可以用4-16译码器将函数实现,如图5-19所示。
图5-19 函数实现电路图
码制变换译码器是将一种码制的输入翻译成另一种码制的输出。常见的码制变换译码器有将8421 BCD码译成十进制码,将余三码译成十进制码,将余三循环码译成十进制码等码制变换译码器。下面我们以将8421 BCD码译成十进制码的码制变换译码器为例来介绍这一类译码器的原理和应用。
(1)不完全译码的BCD译码器。
8421 BCD码是用4个变量的二进制码来表示十进制码。因此,在16种可能的变量组合中,只有0000~1001这前10种可能用到,而1010~1111用不到。不完全译码就是将6种用不到的变量组合按照任意项处理。其真值如表5-8所示。
表5-8 不完全译码的BCD译码器真值表
十进 制码 |
输入的8421 BCD码 |
译码输出 | ||||||||||||
X3 |
X2 |
X1 |
X0 |
Z0 |
Z1 |
Z2 |
Z3 |
Z4 |
Z5 |
Z6 |
Z7 |
Z8 |
Z9 | |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
3 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
4 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
5 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
6 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
7 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
8 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
9 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
伪码 |
1 |
0 |
1 |
0 |
d |
d |
d |
d |
d |
d |
d |
d |
d |
d |
1 |
0 |
1 |
1 |
d |
d |
d |
d |
d |
d |
d |
d |
d |
d | |
1 |
1 |
0 |
0 |
d |
d |
d |
d |
d |
d |
d |
d |
d |
d | |
1 |
1 |
0 |
1 |
d |
d |
d |
d |
d |
d |
d |
d |
d |
d | |
1 |
1 |
1 |
0 |
d |
d |
d |
d |
d |
d |
d |
d |
d |
d | |
1 |
1 |
1 |
1 |
d |
d |
d |
d |
d |
d |
d |
d |
d |
d |
根据真值表,用卡诺图化简输出函数的表达式。卡诺图如图5-20所示。
(a)Z0 (b)Z1
(c)Z2 (d)Z3
图5-20 输出函数的卡诺图化简
(e)Z4 (f)Z5
(g)Z6 (h)Z7
(i)Z8 (j)Z9
图5-20 输出函数的卡诺图化简(续)
由图5-20的卡诺图,可以写出输出函数的表达式,如下所示:
Z0=(X3' X2' X1' X0')' Z1=(X3' X2' X1' X0)'
Z2=(X2' X1X0')' Z3=(X2' X1X0)'
Z4=(X2X1' X0')' Z5=(X2X1' X0)'
Z6=(X2X1X0')' Z7=(X2X1X0)'
Z8=(X3X0')' Z9=(X3X0) '
不完全的BCD译码器的逻辑电路图如图5-21所示。
(2)完全译码的BCD译码器。
完全译码就是将6种用不到的变量组合按照逻辑1处理。其真值如表5-9所示。
图5-21 不完全的BCD译码器的逻辑电路图
表5-9 完全译码的BCD译码器真值表
十进 制码 |
输入的8421 BCD码 |
译码输出 | |||||||||||||
X3 |
X2 |
X1 |
X0 |
Z0 |
Z1 |
Z2 |
Z3 |
Z4 |
Z5 |
Z6 |
Z7 |
Z8 |
Z9 | ||
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | |
2 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | |
3 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 | |
4 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 | |
5 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 | |
6 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 | |
7 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 | |
8 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 | |
9 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 | |
伪 码 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 | ||
根据真值表5-9,可以直接写出输出函数的表达式,如下所示:
Z0=(X3' X2' X1' X0')' Z1=(X3' X2' X1' X0)'
Z2=(X3' X2' X1X0')' Z3=(X3' X2' X1X0)'
Z4=(X3' X2' X1X0')' Z5=(X3' X2X1' X0)'
Z6=(X3' X2X1X0')' Z7=(X3' X2X1X0)'
Z8=(X3X2' X1' X0')' Z9=(X3X2' X1' X0)'
完全的BCD译码器的逻辑电路图如图5-22所示。
图5-22 完全的BCD译码器的逻辑电路图
数字系统的一些终端设备都需要显示十进制数字,字符显示译码器就是这样一种译码器,它接收二进制码的输入,译码后显示十进制字符。
最常见的字符显示译码器是七段数字显示器,它是由7段条形的发光二极管来显示输出字符的,如图5-23所示。
图5-23 七段译码器的输出字符
由图可见,需要输出哪个字符时,只需要使该字符对应的二极管发光即可。下面给出输入为8421 BCD码的七段显示译码器的真值,如表5-10所示。
表5-10 七段显示译码器的真值表
十进 制数 |
输 入 |
输 出 | |||||||||
X3 |
X2 |
X1 |
X0 |
a |
b |
c |
d |
e |
f |
g | |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
2 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
续上表
十进 制数 |
输 入 |
输 出 | |||||||||
X3 |
X2 |
X1 |
X0 |
a |
b |
c |
d |
e |
f |
g | |
3 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
4 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
5 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
6 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
7 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
8 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
9 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
根据真值表,可以用卡诺图化简各输出函数。卡诺图如图5-24所示。
(a)a (b)b
(c)c (d)d
(e)e (f)f (g)g
图5-24 七段译码器卡诺图
因为该函数是个多输出的函数,所以为了整体的简化,输出e和f都化到最简。各个输出的逻辑表达式为:
a= X3' X2' X1' X0+X2X1' X0'
b= X2X1' X0+X2X1X0'
c= X2' X1X0'
d= X2X1' X0'+X 2 X1X0'+X3' X2' X1' X0
e= X1+X2X1' X0'
f= X1X0+X3' X2' X1' X0+X2' X1X0'
g= X2X1X0+X3' X2' X1'
根据逻辑表达式,可以画出七段译码器的逻辑电路图,如图5-25所示。
图5-25 七段译码器的逻辑电路图