在逻辑学中,逻辑门的工作方式很简单——让电流通过或阻止电流通过。就像普通的让水通过的水门,和让人通过的门类似。

电路的化简和用开关控制输入

上一章用开关和电灯泡组成的电路表示布尔表达式。

这个电路19世纪才被发明出来,但是直到20世界30年代才被发现。主要贡献者是克罗德·艾尔伍德·香农,清晰严谨地阐述了:电子工程师可以用布尔代数的所有工具去设计开关电路。此外,如果你简化了一个描述网络的布尔表达式,那么可以简化相应的电路。

例如,我想要的猫用如下表达式描述:

(M x N x (W + T) + (F x N x (1 - W)) + B

利用结合律重新排列由AND连接的变量,并将表达式写为如下形式:

(N x M x (W + T) + (N x F x (1 - W)) + B

为了更清楚地直到如何变换的,我将定义两个新的符号,X和Y:

X = M x (W + T)
Y = F x (1 - W)

现在,描述小猫的表达式可以写为:

(N x X) + (N x Y) + B

注意,变量N在表达式中出现了两次。利用分配律,表达式可以写为只有一个N的形式:

(N x (X + Y)) + B

现在将X和Y的表达式带入:

(N x ((M x (W + T)) + (F x (1 - W)))) + B

现在表达式少了一个变量,就意味者少了一个开关。以下是化简后的电路图。

事实上,电路中仍有三个开关是多余的。理论上,你只需要四个开关来定义心中的猫咪即可。因为每一个开关都是二进制数,你可以设定一个开关代表猫的性别,另一个开关代表猫的生育能力,再来两个开关表示猫的颜色。这里有四种可能出现的颜色(白色、黑色、褐色和其他颜色),而我们知道,四种选择可以用两个二进制来定义。

现在用一个控制面板来选择猫咪,这个控制面板上只有四个开关,此外面板上还安装了一个灯泡,如下所示。

开关向上闭合,向下断开。表示猫咪颜色的两个开关的标记是这样理解。两个开关都断开表示白色;左边开关闭合,右边开关断开表示黑色;左边开关断开,右边开关闭合表示褐色;两个开关都闭合表示其他颜色。

在计算机术语中,开关是一种输入设备,输入是控制电路如何工作的信息。本例中,输入开关对应4个二进制数信息,这些信息用来描述一只猫。输出设备就是灯泡,描述这只猫是否符合标准。

现在我们要做的就是设计一个电路来控制这个面板工作。

继电器和开关电路

1938年,香农在MIT发布一篇题为《继电器和开关电路的符号分析》的硕士论文。这里的继电器与之前我们在第6章提到的电报系统中的继电器很类似。当时,继电器就已经被广泛应用于其他领域,特别是在庞大的电话系统网络中。

继电器就像开关一样,可以串联或并联在电路中执行简单的逻辑任务, 只完成最基本的功能。这种继电器的组合叫做逻辑门。继电器优于开关之处在于,继电器可以被其他继电器所控制,而不必由人工控制。这意味着,这些简单的逻辑门组合起来就可以实现更复杂的功能,例如一些简单的算数运算。

如前面提到过,继电器对于电报系统的工作而言是至关重要的。在长距离情况下,连接电报站的电线具有很高的电阻。这就是需要采取一些措施来接受微弱信号并把它增强后再发射出去。继电器就是通过电磁铁控制开关来实现这一目的。实际上,继电器通过放大微弱信号来生成强信号的。

就我们目前而言,我们对于继电器放大微弱信号的功能并不感兴趣。我们真正感兴趣的是继电器可以作为一个电流控制而非人工控制的开关。我们将继电器、开关、灯泡和两节电池按照下图连接。

注意,左边的开关是断开的,灯泡没有发光。当闭合开关的时候,左端的电池产生的电流流过缠在铁芯上的圆线圈。于是铁芯产生了磁性,将上面的弹性金属簧片拉下,使回路接通,灯泡发光。

当电磁铁将金属簧片拉下来时,我们称继电器被“触发”(triggered)。当左边的开关断开的时候,铁芯的磁性消失,金属簧片回到原位。

这是一种间接控制灯泡发光的方法。

在逻辑门建立之前,我们将多次运用继电器,因此就需要将上面那幅电路图简化。我们利用接地的方式减少一些电线。在这种情况下,大地仅代表了一个公共端,并不是真正意义上的物理接地。

这看起来还不够简化,我们需要更加简化电路图。注意两节电池的负极都是接地的。因此,我们可以看到这样的符号。

和第5章,第6章一样,可以用大写字母V(代表电压)来代替上图中的电池。这样,继电器看上去就如下图所示。

上图显示了两个电源和两个接地端。为了更简化电路,我们将所有电源即“V”彼此互连,接地端也如此。例如上述电路可用如下只用一节电池的方式。

下图简化了回路,当当看继电器,像前面的控制面板一样,从输入和输出开始。

电流流经输入时,电磁铁就会被触发,输出就得到一个电压。

继电器的输入不一样只是开关,输出也未必只限于灯泡。一个继电器的输出可以连到另一个继电器的输入,例如下面这个电路。

连接继电器时建立逻辑门的关键。

逻辑门

与门

前面提到,两个开关可以串联,同样地,两个继电器也可以串联。

就像两个开关串联一样,这两个继电器也执行了逻辑操作。只有当两个继电器触发的时候灯泡才会亮。这样两个继电器的串联被称为一个“与门”。为了避免复杂的图示,电器工程师用如下专门的符号表示一个与门。

因为人们习惯于从左向右的阅读方式,所以将两个输入端画在左边,一个输入端画在右边。

两个继电器、两个开关和一个灯泡的原始电路图如下所示。

使用“与门”的符号,上图可以画为如下所示的图。

注意,与门的符号不仅仅代替了两个串联的继电器,而且还暗示着上面的继电器与电源相连,两个继电器都接地。

只有当上下两个开关都闭合时,灯泡才会发光。这就是称它为“与门”的原因。

同样可以让与门有多个输入端。例如,将三个继电器串联,如下图所示。

只有当三个开关全部闭合时灯泡才会发光。这个结论可以用如下符号来表示。

它被称为三输入端与门。

或门

以下逻辑门是由两个继电器并联而成。

显而易见,当上面的开关或是下面的开关闭合时,灯泡都会发光,这里的关键词是“或”,因此这样的门被称为“或门”。

它与与门的符号稍微有点相似,但是输入端的一边是弧形,像英文单词“OR”中字母“O”一样(这样可以帮你分清他们)。

反向器

继电器的输出有两种不同的连接方式。通常在开关断开的时候,灯泡不亮。

当开关闭合的时候,灯泡发光。

也可以用另外一种连接方式,使开关断开时灯泡被点亮。

这样的话,开关闭合,灯泡就会熄灭。以这种方式连接的继电器叫做反向器。

反向器不是逻辑门,因为一个逻辑门通常要有两个或多个输入,尽管如此,它的作用还是很广。

反向器可以用如下的专门符号来表示。

它能将0(低电平)转换为1(高电平),因此被称为反向器,反过来也是一样的。

设计自动选择理想猫咪的控制面板

首先从开关开始,第一个断开表示公猫,闭合表示母猫。因此我们可以得到两个信号,把它们分别叫做M和F。

当F=1时,M为0,反之亦然。同样,第二个开关闭合表示这只猫已绝育,断开表示这只猫未绝育。

下面两个开关更加复杂。两个开关的不同组合表示四种不同的颜色。以下是两个接有电源的开关。

两个开关都断开时,表示白色。以下就是如何运用两个反向器和一个与门得到W信号的方式。如果你选择一只白猫,W就为高电平(1);否则,就为低电平(0)。

当两个开关断开时,两个反向器的输入均为0,两个反向器的输出(也就是与门的输入)都为1.这就意味着与门的输出为1.

要想闭合第一个开关表示一只黑猫,可以利用一个反向器和一个与门实现。

只有当第一个开关闭合而第二个开关断开的时候,与门输出才为1.同样,如果第二个开关闭合而第一个开关断开,与门输出也为1,我们用此来表示褐色的猫。

如果两个开关闭合表示其他颜色的猫。

现在,我们将四个小电路合并成一个大电路。(按照惯例,黑实心点表示交叉之间是相连的,没有黑实心点的交叉线着表示仅仅是穿过,没有连接)。

这个电路看起来非常复杂,但是如果你仔细地从输出沿着线路走,看清每个与门的输入从哪来的,电路的工作原理就会一目了然。

在连接门和反向器的时候有一些规则,影响它们的连接方式:一个门(或反向器的输出可以作为一个或多个其他门(或反向器)的输入。但是两个或多个门(或反向器)的输出是不可以相互连接的。

这个电路叫作“2-4译码器”,输入为2个二进制位,各种组合共表示4个不同的值。输出是4个信号,任何时刻只能有一个是1,至于哪一个是1取决于两个输入。利用同样的原理,也可以构造出3-8译码器或者4-16译码器,等等。

简化过的猫咪的表达式位:

(N x ((M x (W + T)) + (F x (1 - W))) + B

在这个表达式中,每个加号对应电路中的一个或门。对于每一个乘号,则对应一个与门,电路图如下所示。

电路图左侧的字母由上到下的顺序与它们表达式中出现的顺序一样。这些信号来源于与反向器相连的开关和2-4译码器的输出。请注意用反向器表示表达式中(1-W)。

一个与门或和或门中有两个继电器,一个反向器中有一个继电器。

或非门

以下两个门都会用到一个继电器,该继电器在未被触发时,其输出为高电平(这是用在反向器中的输出)。例如,在下面这种配置中,第一个继电器的输出为第二个继电器提供电源。布局和与门很累死。两个继电器都断开时,灯泡发光。

如果上面的开关闭合时,灯泡就会熄灭。

灯泡熄灭时由于第二个继电器没有电源供应。同样的,如果下面的开关闭合,灯泡也会熄灭。

如果则两个开关全部闭合,灯泡也不亮。

这些结果恰恰与或门相反,这个门称为“或非门”,简称NOR,用以下符号表示。

除去中间部分的小圆圈,这个符号与或门非常想像。小圆圈表示“反向”,所以或非门也可用下面的符号表示。

或非门的输出如下表示。

这个表所显示的结果与或门正好相反,在或门中,两个输入中有一个为1输出就为1,只有两个输入都为0,输出才为0.

与非门

下面是另一种连接两个继电器的方法。

在这种情况下,两个输出连接在一起,与或门的布局类似,但是却采用了另一种输出接发。灯泡在两个开关全断开时被点亮。

当上面的开关闭合时,灯泡依然是亮的。

同时,当只有下面的开关闭合时,灯泡也依然是亮的。

只有当两个开关闭合的时候,灯泡才会熄灭。

这一结果和与门恰恰相反。这种逻辑门被称为与非门,或简称NAND。与非门符号和与门类似,但在输出部位多了一个小圆圈,意思是输出和与门正好相反。

与非门的输出如下表所示。

注意与非门的输出是和与门完全相反的。与门只有当输入全为1的时候输出才为1,否则输出为0.

到此为止,我们已经看到可以用四种不同的方式连接有两个输入、一个输出的继电器,每一种方式的行为功能都不一样。为了避免重复画继电器,我们将它们称为逻辑门,并用电气工程师专门的符号来表示它们。特定的逻辑门取决于它的输入,输出和输入的关系可总结为以下几个表格。

缓冲器(buffer)

现在,我门已经有四个逻辑门和一个反向器,把这些工具组合到一起的其实就是原始的继电器,如下图所示。

这叫做缓冲器,可用如下符号表示。

除了输出端的小圆圈,这个符号和反向器很相似。很明显,缓冲器它的输入和输出是相同的。

但是在输入信号很微弱的时候,缓冲器就可以派上用场。之前也提到过,这就是很多年前在电报机中使用继电器的原因。另外,缓冲器还可以用于延迟一个信号。这是因为继电器需要一点时间——几分之一秒——才会被触发。

摩根定律

本书从这里开始,继电器将会极少出现了。取而代之地,以后的电路会由缓冲器、反向器、四种基本逻辑门和其他由逻辑门组成的复杂电路(如2-4译码器)组成。

前面在建立2-4译码器的时候,曾出现过这样一个小电路。

两个输入信号经过反向器后作为与门的输入。这样的组合有时可以去掉反向器而画成如下的形式。

实际上,带有两个反向输入的与门和或非门是等价的。

类似的,带有两个反向输入的或门和与非门也是等价的。

这两组等价关系就是摩根定律在电路中的实现。

摩根定律可以简单地表示为如下形式:

摩根定律是简化布尔表达式的一种重要手段,因此也可以用它来简化电路。从历史的角度来说,这真是香农的论文给电气工程师们带来真正意义。但在本书中简化电路不是重点,我们关注的是然一切有效地运转而不是以最简的形式运转。我们下面要做的就是一台加法器。

Loading Disqus comments...
Table of Contents