在数字系统中,所谓编码,就是将字母、数字、符号等信息编成一组二进制代码的过程。编码器是数字电路中常用的集成电路之一。最常见的计算机键盘中就含有编码器器件,当按下键盘上的按键时,编码器将按键信息转换成二进制代码,并将这组二进制代码送到计算机进行处理。目前经常使用的编码器有普通编码器和优先编码器两类。
在普通编码器中,任何时刻只允许输入一个编码信号,否则输出将发生混乱。现以将十进制的10个数码0、1、2、3、4、5、6、7、8、9的按键编成二进制代码的电路为例,分析普通编码器的设计过程。
若规定每次只能按下其中的一个数码,否则无效,则10个数码就对应着10个状态,也就是应该有10个二进制编码与之对应。
(1)确定二进制代码的位数
因为每一位二进制只有0和1两个数码,因此n位二进制数最多可以对2n个信息进行编码。故二进制代码的位数可以用下列公式决定,即
(1) |
式中,M为待编码信号的个数;n为所需的二进制代码的位数。
因为24≥10,所以对0~9这10个数码进行编码需要4位二进制数码。即该编码器有10个输入,4个输出,因此称具有该结构特点的编码器为10-4线编码器,又因为该编码器是将0~9这10个十进制数码编程二进制代码,故又称为二-十进制编码器。
(2)列编码表(编码器的真值表)
0~9这10个数码(输入变量)分别用I0、I1、I2、I3、I4、I5、I6、I7、I8、I9表示,4位二进制代码(输出变量)分别用Y0、Y1、Y2、Y3表示,并设按下数码键的状态对应逻辑“1”,不按数码键的状态对应逻辑“0”。根据编码器每次只允许按下一个数码键的要求,可得编码器的编码表如表1所示。
表1 10—4编码器的编码表
输入 | 输出 | ||||||||||||
I0 | I1 | I2 | I3 | I4 | I5 | I6 | I7 | I8 | I9 | Y3 | Y2 | Y1 | Y4 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
(3)由编码表写出各输出的逻辑式
(2) |
(3) |
(4) |
(5) |
将式(2)、式(3)、式(4)、式(5)化简为
(6) |
(7) |
(8) |
(9) |
(4)根据化简结果画出编码器电路图
根据上式画出的10-4线编码器电路如图1(a)所示,图1(b)所示是对应该电路的10-4线编码器的图形符号。
图1 10.4线编码器逻辑电路图和图形符号 |
若选择与非门组建逻辑电路,则必须将化简结果转换成与非的形式。根据摩根定律将式(6)式(7)、式(8)、式(9)转换成与非式
(10) |
(11) |
(12) |
(13) |
根据式(10)、式(11)、式(12)、式(13)搭建的10-4线编码器电路如图2(a)所示。
由图2(a)可见,该编码器电路的输入变量是反变量。如果用输入变量的反变量作为输入变量,即以、、、、、、、、、作为输入变量,以、、、作为输出变量,则根据式(10)、式(11)、式(12)、式(13)列出的该编码器的编码表如表2所示。
图2 10-4线编码器逻辑电路图和图形符号 |
表2 10-4线编码器以反变量作为输入变量时的编码表
输入 | 输出 | ||||||||||||
I0 | I1 | I2 | I3 | I4 | I5 | I6 | I7 | I8 | I9 | Y3 | Y2 | Y1 | Y4 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
从表2中可以看出,当输入变量为反变量时,编码器是对低电平“0”的输入信号进行编码,此时称该编码器的输入信号为低电平有效。对应的编码器的图形符号的输入端处有一个小圆圈,表示输入端低电平有效。图2(b)所示为输入端低电平有效的10-4线编码器的图形符号。相应地,图1(b)所示的编码器的图形符号的输入端没有小圆圈,则表示输入端高电平有效,即编码器对高电平的输入信号编码。
除了上面介绍的10-4线编码器以外,还有8-3线编码器、16-4线编码器等。设计这些编码器的方法与上面所介绍的方法相同,这里不再赘述,请读者自行设计完成。