逻辑门是处理逻辑和计算的基础,这一章我们就来了解一下逻辑门的工作原理。
这一章用到的硬件材料:面包板-1块、绿色LED-4颗、P型三极管-6颗、触点开关-6颗、1kΩ电阻-10颗,导线若干。

开关(Switch)

在上一章我们提到了需求材料中需要用到三种开关,但是在实际计算过程当中,我们不可能全部使用手动开关,所以我们需要一个元件,有三个接口,两个输入、一个输出,其中一个输入口作为开关状态输入,通电时开关闭合(通电),不通电时断开(断电)。

我们可以使用继电器来作为电路开关,继电器中一般会有一个电磁铁。控制电路通电时,电磁铁产生磁性,吸住导电贴片,电路闭合;控制电路断开时磁性消失,导电贴片断开。实际上,在很多远程控制电路或需要低电压操作高电压开关的电路中,继电器就被作为控制开关来使用。但是继电器有两个缺点:一是体积太大,二是延迟极高,这两个缺点对于我们CPU制造来说都是致命的。所以在我们制造CPU时会使用到P型(PNP型)三极管(也就是上一章提到的晶体管)来实现这个功能。

PNP型三极管电流方向

P型三极管有三个引脚,分别是:发射极E、基极B、集电极C。其中,源极连接到高电压,基极连接到低电压,集电极连接到需要控制的电流。

如果要使用三极管实现开关功能,我们只需要把发射极E和集电极C连接到用电器电路中,把基极B连接到控制电路输出。比如如果我们需要控制一个LED灯的点亮,只需要把发射极连接到+5V,集电极连接到LED正极,LED负极连接到接地,基极连接到控制电路的输出,这样当控制电路高电平时,LED灯亮,控制电路低电平时LED灯灭,这也是我们后面用到的BUFFER的原理,即输出与输入相同:

IN OUT
00
11
BUFFER

缓冲(BUFFER)

将上述电路以电路图方式呈现如下:

BUFFER电路图

从输入和输出上看来,BUFFER似乎没有什么作用,但是实际上在后续存储开发时,BUFFER电路能发挥非常大的作用。

非门(NOT)

非门与BUFFER相反,其输出和输入相反:

IN OUT
01
10
NOT

其电路图实现如下:

NOT电路图

NOT与BUFFER在原理上的不同是将LED灯与三极管并联,当开关闭合时,三极管激活,集电极输出电流,同时LED被短路,否则LED正常构成回路。

与门(AND)

与门有两个输入和一个输出,其要求两个输入高电平时,输出高电平,否则永远输出低电平:

IN1 IN2 OUT
000
010
100
111
AND

与门很简单,只需要将两个三极管串联即可,两个三极管同时接收高电平信号,才输出高电平,其电路图如下:

AND电路图

或门(OR)

或门与与门类似,也是两个输入,其中至少一个输入高电平,则输出高电平,只有在两个都输入低电平时输出低电平。

IN1 IN2 OUT
000
011
101
111
OR

在电路图上与与门不同的时,或门将两个三极管并联,其中一个三极管基极接收到高电平信号时,就会输出高电平,如下:

OR电路图

至此,我们就实现了最基础的与或非三个门以及缓冲BUFFER,我们可以尝试使用元器件在面包板上搭建这些逻辑门电路:

剪线把我手都磨破了?

有了这三个基础逻辑门,我们就可以基于这些逻辑门来实现其他逻辑门了,不过由于其他逻辑门搭建过程太枯燥,我就不在面包板上实际搭建出来了,也不一个一个地从元件开始画电路图了。后面我就使用turling complete来演示逻辑门的实现。

与非门(NAND)

与非门的输出与与门相反,其实就是与门后加一个非门,其输入输出如下:

IN1 IN2 OUT
001
011
101
110
NAND

其实现图如下:

NAND

或非门(NOR)

或非门只在两个输入都为低电平时才输出高电平:

IN1 IN2 OUT
001
010
100
110
NOR

其实现图如下:

NOR

异或(XOR)

异或门只在两个输入电平状态不同时输出高电平,否则输出低电平:

IN1 IN2 OUT
000
011
101
110
XOR

其实现图如下:

XOR

同或(XNOR)

通过与异或输出相反,在XOR后面加个非门即可:

IN1 IN2 OUT
001
010
100
111
XOR

其实现图如下:

德·摩根定律

百度百科对德·摩根定律的解释如下:

在命题逻辑和逻辑代数中,德摩根定律(或称德·摩根定理)是关于命题逻辑规律的一对法则。
奥古斯都·德·摩根首先发现了在命题逻辑中存在着下面这些关系:
非(P 且 Q) = (非 P) 或 (非 Q)
非(P 或 Q) = (非 P) 且 (非 Q)

将德·摩根定律应用到逻辑电路设计当中,我们可以完成任意逻辑门之间的转换,至于具体如何实现,大家可以在有需要的时候再仔细研究。(实际上是我不知道该怎么讲这个东西了?)

总结

以上就是所有的7个基本逻辑门的实现方法,我们后续会使用封装好的芯片来代替晶体管实现逻辑门,以减小CPU的面积及复杂度。

7个逻辑门的符号和输入输出

下一章我们将使用逻辑门搭建一个可以计算加法的全加器,以实现一些简单的数学加法运算,同时也是我们迈向"数据处理"的第一步。


学而不思则罔,思而不学则殆