跳到主要内容

1.7 二进制解码器

解码器是一种组合逻辑电路,它将编码输入转换为编码输出,前提是这两种编码彼此不同。解码器的名称意味着将编码信息从一种格式翻译成另一种格式。因此,输入代码通常比输出代码的位数少。

数字解码器将一组数字信号转换为对应的十进制代码。解码器也是在编码器使用之前最常用的电路之一。在大多数输出设备(如显示器、计算器显示屏、打印机等)中,编码后的数据会被解码以便用户界面显示,这些数据在被编码器编码后需要被解码。在本文中,我们将研究不同类型的二进制解码器。

二进制解码器

二进制解码器是一种多输入、多输出的组合电路,它将 nn 个输入线的二进制代码转换为 2n2^n 个输出代码中的一个。当需要根据 nn 位输入值精确激活 2n2^n 个输出中的一个时,会使用这种解码器。

下图展示了二进制解码器的一般结构,其中在 nn 个输入线处接收编码信息,并在 2n2^n 个可能的输出线处产生输出。

通常,解码器会提供使能输入,以便根据数据输入激活解码后的输出。例如,在 BCD(二进制编码的十进制)代码的情况下,从 0000 到 1001 的 4 位组合足以表示 0 到 9 的十进制数字。

alt text

根据输入线的数量,二进制代码的输入可以是 2 位、3 位或 4 位代码。在有 2n2^n 条线可用的情况下,它通过使所有其他输入失效(设置为逻辑 0)来激活其输出之一,无论何时接收到 nn 个输入。

通常,输出代码的位数比输入代码的位数多。最常用的实际二进制解码器包括 2 到 4 解码器、3 到 8 解码器和 4 到 16 线二进制解码器。

2 到 4 二进制解码器

在 2 到 4 二进制解码器中,两个输入被解码为四个输出,因此它包含两条输入线和四条输出线。在任何时间,只有一个输出处于激活状态,而其他输出保持在逻辑 0 状态,而被保持激活或高电平的输出由两个二进制输入 AABB 决定。

alt text

下图展示了 2 到 4 解码器的真值表。对于给定的输入,如果使能输入 EN\text{EN} 处于激活高电平(EN=1\text{EN} = 1),则输出 Y0Y_0Y3Y_3 将处于高电平。当两个输入 AABB 均为低电平(或 A=B=0A = B = 0)时,输出 Y0Y_0 将处于激活或高电平状态,而所有其他输出将处于低电平。

A=0A = 0B=1B = 1 时,输出 Y1Y_1 将被激活;当 A=1A = 1B=0B = 0 时,输出 Y2Y_2 将被激活。当两个输入均为高电平时,输出 Y3Y_3 将处于高电平。如果使能位为零,则所有输出将被设置为零。输入和输出之间的这种关系在下面的真值表中清晰地说明。

alt text

从上述真值表中,我们可以为每个输出获得布尔表达式:

alt text

这些表达式可以通过使用基本逻辑门来实现。因此,2 到 4 线解码器的逻辑电路设计如下图所示,它通过使用非门(NOT)和与门(AND)来实现。两个非门或反相器提供输入的补码。

一个公共使能线连接到每个与门,以便当 EN=0\text{EN} = 0 时,所有输出均为零;如果 EN=1\text{EN} = 1,则根据输入 AABB 产生输出。每个输出代表两个输入变量的一个最小项(minterm)。

alt text

也可以使用与非门(NAND)设计 2 到 4 解码器,如下图所示,同时附有真值表。这是基于最大项(maxterms)作为输出的原理构建的。为了生成最小项,我们需要使用作为反相器的与非门。如果两个输入均为零(A=B=0A = B = 0),则 Y0Y_0 将为零;如果 A=0A = 0B=1B = 1,则 Y1Y_1 将为 1,依此类推。

因此,在任何给定时间,对于输入的任何组合,只有一个输出处于低电平,而所有其他输出处于高电平。这种类型的解码器以集成电路(IC)形式存在,因此可以根据应用需求制作 3 到 8、4 到 16 和 5 到 32 的解码器。

3 到 8 解码器

在 3 到 8 解码器中,三个输入被解码为八个输出。它有三个输入 AABBCC,以及从 Y0Y_0Y7Y_7 的八个输出。根据三个输入的组合,八个输出中只有一个被选中。

alt text
alt text

下图展示了 3 到 8 解码器的真值表。提供使能输入以根据输入组合 AABBCC 激活解码后的输出。假设 A=B=1A = B = 1C=0C = 0,则输出 Y6Y_6 为 1,所有其他输出均为零。因此,从真值表中可以看出,每个输出方程由最小项表示,给出如下:

alt text
alt text

使用上述最小项表达式,可以通过使用三个非门和八个与门来实现 3 到 8 解码器的电路。每个非门提供输入的补码,而与门生成一个最小项。

使能输入根据输入数据激活解码后的输出。该解码器的逻辑图如下所示。

在给定时间,对于特定的输入组合,八个输出中只有一个处于高电平,这就是为什么这种解码器也被称为 1-of-8 解码器的原因。例如,当 ABC=011\text{ABC} = 011 时,只有与门 4 的所有输入均为高电平,因此 Y3Y_3 处于高电平。

此外,输入处的 3 位二进制数被转换为输出处的八位数字(相当于八进制数系统),这就是为什么它也被称为二进制到八进制解码器。

alt text

也可以使用最大项表示每个输出方程。在这种情况下,逻辑电路中的反相操作比使用最小项的电路更为复杂。下图展示了使用与非门的 3 到 8 线解码器的真值表。表中的每个输出给出一个最大项表示。

在任何给定时间,只有一个输出处于低电平,而所有其他输出处于高电平。例如,当 A=B=1A = B = 1C=0C = 0 时,输出 Y6Y_6 为零,而所有其他输出为高电平,如下图所示。

alt text

从上表中可以看出,3 到 8 线解码器可以通过使用三个与非门和三个非门来设计。非门用于生成输入的反相,而与非门用于生成每个输出的最大项,如下图所示。

alt text

4 到 16 解码器

4 到 16 解码器包含 4 个输入和 16 个输出。与上述讨论的所有解码器类似,在这种情况下,也只有一个输出在任何给定时间处于低电平,而所有其他输出处于高电平(使用最大项)。

这种类型的解码器的真值表如下所示。如果输入为 1000,则输出 Y8Y_8 将为低电平,而所有其他输出将为高电平,如下图所示。对于所有输入组合,情况都是如此。

alt text

从上述真值表可以看出,4 到 16 解码器可以通过使用 4 个非门和 16 个解码与非门来实现。为了对 4 位输入的所有可能组合进行解码,需要十六个(24=162^4 = 16)解码门。

需要指出的是,该电路中实现的所有与非门都产生低电平有效的输出,如下图所示。

由于它根据特定的输入组合选择 16 个输出中的一个,这些解码器也被称为 1-of-16 解码器。此外,其输出以十六进制数系统表示十六个数字,因此这种类型的解码器也被称为二进制到十六进制解码器。

alt text

通过使用解码器的使能输入,可以组合或级联两个或多个解码器,以产生具有更多输入位的解码器。两个 3 到 8 线解码器的级联组合如下图所示。它包含四个输入 AABBCC 和使能 EE,以及 16 个输出 Y0Y_0Y15Y_{15}

其中一个输入变量用作第一个 3 到 8 解码器的使能输入,而这个相同的输入经过反相后连接到第二个解码器的使能输入。要启用的解码器由最高有效输入变量决定,而其他输入变量分别输入到每个解码器。

当使能输入为零时,顶部解码器被启用,而另一个被禁用。然后,顶部解码器的八个输出生成最小项 0000 到 0111。同样,当使能输入为 1 时,底部解码器被启用,而顶部解码器被禁用。因此,底部解码器的输出生成最小项 1000 到 1111。

alt text

解码器的应用

解码器广泛应用于需要在特定输入电平组合发生时激活特定输出或一组输出的场合。这些输入电平通常由寄存器或计数器的输出提供。

当计数器或寄存器连续脉冲解码器输入时,输出将依次被激活。这些输出可以用作顺序信号或定时信号,以在特定时间切换设备。

二进制到十进制解码器

解码器用于获取特定输入组合对应的十进制数字。一个 BCD 数字需要 4 个二进制位来表示 0 到 9 的十进制数字,因此它包含 4 个输入线。它包含 10 个输出线,分别对应于 0 到 9 的十进制数字。

这种类型的解码器也被称为 1 到 10 解码器。对于特定的输入组合,输出将被激活,对应于输入组合的十进制等效值。

地址解码器

在众多用途中,解码器广泛用于计算机存储系统中解码特定的存储位置。解码器接收由 CPU 生成的地址代码,这是存储中特定位置的地址位组合。

在存储系统中,多个存储集成电路(IC)被组合在一起,每个存储 IC 都有其独特的地址,以区分其他存储位置。

在这种情况下,存储 IC 电路中内置的解码器用于通过解码系统地址的最高有效位来响应一系列地址,从而选择一个存储 IC,进而选择特定的存储位置或 IC。

在更复杂的存储系统中,存储 IC 或芯片被安排在多个存储库中。当微处理器希望一次访问一个或多个字节时,这些存储库必须同时或单独被选择。

在这种情况下,必须激活多个解码器。为此,可以使用级联解码器,或者更常见的是,用可编程逻辑器件替换解码器。

指令解码器

解码器的另一个应用是在中央处理单元的控制单元中。这种解码器用于解码程序指令,以便激活特定的控制线,从而在 CPU 的算术逻辑单元(ALU)中执行不同的操作。