顾名思义,编码器将较大的信息位编码为较小的位值。有 很多类型的编码器的基础上,投入和产出的数量和基于它是如何运作。但是每个编码器都有一个基本规则,编码器上的输出线数将始终少于输入线数。在本文中,我们将了解有关编码器,什么是编码器,如何以及为什么在数字电路中使用它们的更多信息。
编码器基本原理:
让我们想象一个编码器是一个黑盒,如下所示,它神奇地将输入线的数量从4条减少到2条输出线,但仍提供相同的信息而不会造成数据损失。
首先,让我们确定此编码器的名称。它具有四个输入和两个输出,因此此编码器的名称将为4:2编码器。如果编码器的输出线数为“ n ”,则输入线数为2 n,在我们的情况下,输出线的数量为两(n = 2),因此输入线的数量应为(2 2 = 4)四(正好是这种情况)。四个输入引脚标记为I0至I3,两个输出引脚标记为O0至O1
因此,编码器如何将四个信号转换为两个信号,可以通过查看下面的真值表来理解。同样重要的是要知道,如此处所示的普通编码器有一条规则,即在给定时间只有一个输入引脚应为高电平,因此在下面的真值表中,只有一个输入将为高电平。
上面的真值表中显示了输入,输出的所有可能条件。例如,当只有O1为高(1)而所有其他输入为低(0)时,两个输出引脚都将为低(0)。同样,对于每种情况,输出引脚也会改变其状态。通过使用此输出位状态,用户将可以追溯到将给编码器的输入信号。
好的,将4行转换为2行有什么用,为什么我们甚至需要它?
为了便于理解,我们已经解释了4:2编码器,但是还有其他一些编码器可以采用更多的输入并将其转换为更少的输出,例如8:3编码器,16:4编码器等。这些类型当我们必须减少MCU / MPU上使用的引脚数或减少PLC和其他带有开关或LED阵列的系统中的信号传输线的数量时,编码器的功能非常有用。它也可用于使用较少的电线有效地传输数据。在某些应用程序中,我们可能会遇到多个输入可能很高的情况(1),在这种情况下,我们将使用一种称为Priority Encoder的方法,我们将在本文中进一步讨论。
使用组合逻辑设计构建编码器
现在,我们知道了编码器的工作原理和使用位置。让我们学习如何使用简单的逻辑门构建一个。尽管像8:3这样的编码器可以像SN74LS148这样的整齐的单封装IC形式获得,但是了解它们的构造很重要,这样我们才能根据所需的真值表为我们的项目制作自定义编码器。
布尔表达式:
设计组合逻辑设备的第一步是为真值表找到布尔表达式。这非常简单,只需查看真值表即可轻松确定。下面给出了与我们之前看到的相同的真值表,并带有一些插图,以使您更好地理解。
表达式的数量将等于输出行的数量,这里我们有两个输出,因此我们有两个表达式。对于第一个输出O0,只需检查它在哪个条件下为高(1),并跟踪相应的输入引脚号,该引脚也保持为高(1)。同样,对于O0的所有高值,请注意哪个输入引脚号为高并添加引脚。对应于输出引脚O0的输入引脚在上方以红色突出显示,而对于O1则以蓝色突出显示。因此,O0和O1的表达式为
O 1 = I 3 + I 2 O 0 = I 3 + I 1
4:2编码器电路图:
一旦获得布尔表达式,我们只需要以盖茨的形式绘制即可。在这里,由于我们具有加法(+)操作,因此我们将使用“或”门来构建电路。您还可以根据需要简化或修改布尔表达式。上面表达式的电路图如下所示
使用7432或门IC可以轻松构建该电路。我已经在面包板上构建了编码器电路,如下所示
四个按钮提供了四个输入线(I0,I1,I2和I3),当按下按钮时,它将+ 5V链接到该引脚,使其变为逻辑1;当不按下该按钮时,该引脚保持接地。通过一个10k下拉电阻使其逻辑为零。输出(O0和O1)使用一对红色LED表示。如果LED发光,则表示输出逻辑为1,如果它们关闭,则表示输出逻辑为0。编码器电路的完整工作如下图所示。
如您所见,当按下第一个按钮时,输入I0变为高电平,因此两个输出均保持低电平。当按下第二个按钮时,输入I1打开,因此一个LED变高,表示O0为高。最后,当按下第四个按钮时,输入I3变为高电平,因此两个LED都变为高电平。这是一个非常简单的电路,因此我们可以很容易地将其构建在面包板上,但是对于实际的编码器,电路会变得更加复杂。但是,编码器也可以作为IC封装提供,如果适合您的项目,则可以购买。
8:3编码器:
8:3编码器的工作和用法也与4:2编码器类似,不同之处在于输入和输出引脚的数量。8:3编码器也称为八进制到二进制编码器,下面显示了8:3编码器的框图
此处,编码器有8个输入和3个输出,在任何给定时间,只有一个输入应为高(1)。由于有8个输入,因此称为八进制输入,由于有3个输出,因此也称为二进制输出。编码器的真值表如下所示。
8:3编码器真值表:
布尔表达式:
由于我们有你的输出,我们将有三个表达式,如下所示
O 2 = I 7 + I 6 + I 5 + I 4 O 1 = I 7 + I 6 + I 3 + I 2 O 0 = I 7 + I 5 + I 3 + I 1
8:3编码器电路图:
一如既往获得布尔表达式后,我们可以使用“或”门构建电路图,如下所示。
该电路使用4输入或门IC,您也可以简化布尔表达式以使用其他普通2输入门IC。
普通编码器的缺点:
这些类型的编码器具有以下主要缺点
- 当输入均不为高时,输出将等于全零,但是此条件也与第一位为高(MSB)相冲突。因此,应始终注意至少任何一位始终保持打开状态
- 当一个以上的输入为高电平时,输出将被折叠,并且可能会给任一输入带来结果,从而导致混乱。
为了克服这些困难,我们采用了另一种类型的编码器,称为优先编码器,该编码器使用附加的输出来确定输出是否有效,并且当多个输入为高电平时,仅考虑从LSD开始变为高电平的输入,忽略其他输入。
优先编码器:
让我们以4:2优先级编码器为例,以了解它与普通编码器的不同之处,并且它可以克服上述两个缺点。4:2优先编码器的框图如下所示
优先级为4:2的编码器也有4个输入和2个输出,但是我们将添加另一个称为V的输出,代表有效位。该有效位将检查四个输入引脚是否全部为低(0),如果为低,该位还将使其自身变为低,表明输出无效,因此我们可以克服上述第一个缺点。
4:2优先编码器真值表:
可以通过优先考虑MSB位来避免下一个缺点,编码器将从MSB中进行检查,一旦找到第一位高(1),它将相应地生成输出。因此,其他引脚为高电平还是低电平都没有关系。因此,在下面的真值表中,一旦达到1,则“ X”表示无关值。
布尔表达式:
现在,我们必须导出三个分别用于O0,O1和V的表达式。由于真值表无关紧要,我们必须使用K-map方法来为此导出布尔表达式。由于本文不涉及K-map的求解,因此我们将不介绍其解决方法。但是下方显示了地图,因此您可以自己进行干预和学习。
在上面的地图中,左边的是O1,右边的是O0。y表示输出线,x表示输入线。因此,相应地安排方程式,我们将得到以下结果。
O 1 = I 3 + I 2 O 0 = I 2 I 1 '+ I 3
同样,对于有效位“ V”,布尔表达式可以表示为
V = I 3 + I 2 + I 1 + I 0
电路原理图:
可以使用布尔表达式构建该项目的电路图。
可以使用基本的NOT,AND和OR门构建电路。在这里,位O0和O1被视为输出,而位V用于验证输出。仅当位V为高电平时,如果V的值为低(0),才考虑输出,因为应表示所有输入引脚均为零,因此应忽略输出。