计算机简史第三章 机电时代之数字电路
电路的发明,使得计算机的速度大幅提高
布尔代数、二进制与电路的关系
20 世纪,随着继电器电路的发展,许多科学家开始将二进制、布尔代数和电路联系到一起,最终,由美国一位名为克劳德·香农(Claude Shannon)的数学家做出了完整阐释。
1938 年,就读于麻省理工学院的香农发表了他那篇著名的硕士论文《继电器与开关电路的符号分析》( A Symbolic Analysis of Relay and Switching Circuits),奠定了数字电路的理论基础,这篇论文至今仍占据着重要的地位。
克劳德·艾尔伍德·香农(Claude Elwood Shannon),美国数学家、电气工程师、信息论创始人
布尔代数和电路的关系
布尔代数里有真和假两个值;而开关电路也有两种状态:接通和断开。如果我们将真表示为接通,假表示为断开,我们就可以用电路实现布尔运算了!
继电器电路就是一种典型的开关电路。当我们用 A、B 等字母表示开关电路,将两者串联就可以表示逻辑与,将两者并联就可以表示逻辑或,逻辑非的实现也容易表示。
我们看一个简单的例子,如下图:
- 图(a)电路中,只有两个开关都闭合的时候,指示灯才会亮;
- 图(b)电路中,只要有任何一个开关闭合,指示灯都会亮
- 图(c)电路中,开关断开时灯泡才亮,开关闭合时灯泡反而不亮
有了与、或、非 3 种基础逻辑电路,异或等复杂逻辑电路也就不难搭建了。
如此一来,电路就彻底数字化了,原本物理的连接可以用数学来表示,是为数字电路。
香农认为,基于布尔代数,再复杂的电路都可以用表达式条理清晰地设计出来,更重要的是可以等效化简。
香农的研究成为后来二进制机电计算机和电子计算机强大的理论支柱。
逻辑门
我们将布尔运算中常用的电路,作为一个基础的器件使用,称为元器件(也就是最基础的器件了)。例如实现与运算的就是与门,实现或运算的就是或门。
工程师们不关心这些元器件的内部实现,更关注当代表 0 或 1 的信号从它们的输入端进去,从输出端出来的是 0 还是 1。这种通过逻辑电路实现二进制信号转换的元器件称为逻辑门(logic gate)。
门的概念很形象,二进制数据可以从门通过,也可能被门挡住。下图为 IEEE 和 IEC 标准中规定的逻辑门符号,统一的矩形表示更有利于绘制复杂的集成电路,信号从矩形左侧进入,从矩形右侧输出:
图片来自《数字电子技术基础》阎石.第5版,下同。
逻辑门和二进制运算的关系
我们知道,二进制只有 0 和 1 两种数字;而用逻辑门,可以很好的实现二进制的加减乘除。
例如,我们将二进制数中的 0 代表布尔代数中的 false, 二进制数的 1 代表布尔代数的 true。
我们来看看二进制的加减乘除:
假设我们要实现加法(加法最简单),如何用逻辑门实现呢?我们先实现只有一位二进制数的两两相加。我们假设两个加数为 A,B,本位和为 S,进位为 CO,那么我们可以得到电路的真值表(真值表列出了输入和输出的关系。用于设计电路用的,数字电路中会讲到):
然后,我们就可以用几个逻辑门,实现这个加法的逻辑(更多细节后续会在《数字电路》专栏里展开讲):
我们可以把上述电路,作为一个新的逻辑门,称之为半加器:
有了半加器,我们可以将多个半加器组合起来,就可以实现多位二进制数的加法了。
我们继续来看看减法、乘法和除法:
我们可以看到二进制算术运算的两个特点:
- 二进制数的乘法运算,可以通过若干次的“被乘数(或零)左移 1 位”和“被乘数(或零)与部分积相加”这两种操作完成
- 二进制数的除法运算能通过若干次的“除数右移 1 位”和“从被除数或余数中减去除数”这两种操作完成
原理:
在二进制下,(0001)2 左移一位,就是 (0010)2, 从 1 变成了 2,放大了 2 倍。相当于小数点往右移动。
就好比十进制下,100.00 的小数点往右移一位,就变成了 1000.0,放大了十倍。
所以,如果我们能完成减法的电路实现,那么加、减、乘、除运算就全部可以用“移位”和“相加”两种操作实现了。还记得我们学过的补码吗?它可以将减法转化为加法。
所以,我们只用加法器,就可以完成二进制的加减乘除,这使运算电路的结构大为简化。这也是数字电路中普遍采用二进制算术运算的重要原因之一。
组合逻辑电路
逻辑门像一块块标准化的积木,我们可以用这些积木灵活地搭建出实现各种功能的组合逻辑电路。例如,我们可以实现加法器,乘法器,减法器,除法器;
然后,如果我们要解决数学问题,例如解方程,就可以先设计电路,然后实现电路。庞杂的计算机电路正是靠着一扇扇这样的门组合而成的。
开关电路仅仅是逻辑电路的实现途径之一,其实不论任何材料,所组成的基础元件只要能表达出两种状态、能在两种状态之间切换,并能将状态传递给其他基础元件,都可以用来实现逻辑电路以及逻辑门:
- 我们可以用齿轮和按钮等材料组成的,纯机械的继电器来制作逻辑门
- 在小说《三体》中,有提到用士兵实现逻辑门的例子
- 到后期我们会讲到真空管,它开关起来比继电器更快
- 最后我们会讲到晶体管,也是我们现在用的计算机内部采用的技术。
逻辑门一旦实现,二进制计算机的建造就像搭积木一样简单了。这种基础元件的等效性,是可以用不同材料来建造计算机的本质原因。
小结
由于布尔代数 跟二进制非常类似,例如可以用 true 代表 1, false 代表 0, 很多运算也可以用电路来实现,因此也将布尔代数成为逻辑代数或者开关代数。