本篇文章从电灯泡入手,讲解如何通过电路传递信息,这也是计算机工作的基本原理
注意:文章并不讲述电路相关的东西,只讲述现象
我们有一个基本的认识,那就是:
这个电路中有两个开关,像这样一个接着一个首尾相连的接线方式叫做串联
,此时,
如果我们把开关的断开与合上作为输入,合上为输入1,断开为输入0,灯泡的亮与否作为输出B,亮为输出1,不亮为输出0,那么,这个串联电路我们可以表示为:
{ A 1 = 0 , A 2 = 0 , B = 0 A 1 = 1 , A 2 = 0 , B = 0 A 1 = 0 , A 2 = 1 , B = 0 A 1 = 1 , A 2 = 1 , B = 1 \begin{cases} A1=0,A2=0,B=0\\ A1=1,A2=0,B=0\\ A1=0,A2=1,B=0\\ A1=1,A2=1,B=1\\ \end{cases} ⎩ ⎨ ⎧A1=0,A2=0,B=0A1=1,A2=0,B=0A1=0,A2=1,B=0A1=1,A2=1,B=1
像这样的接线方式叫做并联
,此时,
如果我们把开关的断开与合上作为输入,合上为输入1,断开为输入0,灯泡的亮与否作为输出B,亮为输出1,不亮为输出0,那么,这个串联电路我们可以表示为:
{ A 1 = 0 , A 2 = 0 , B = 0 A 1 = 1 , A 2 = 0 , B = 1 A 1 = 0 , A 2 = 1 , B = 1 A 1 = 1 , A 2 = 1 , B = 1 \begin{cases} A1=0,A2=0,B=0\\ A1=1,A2=0,B=1\\ A1=0,A2=1,B=1\\ A1=1,A2=1,B=1\\ \end{cases} ⎩ ⎨ ⎧A1=0,A2=0,B=0A1=1,A2=0,B=1A1=0,A2=1,B=1A1=1,A2=1,B=1
虽然我们先讲了电灯,但是实际上,继电器的发明在电灯之前,但是使用电灯举例更容易让人理解。为了方便表述,我们陈述一下几件历史事件:
如下图所示。如果你手头有一根铁棒,那么在上面用细导线绕几百圈,然后在导线上接通电流, 铁棒就变成了一块磁铁。现在它可以吸引其他的铁块和钢块(电磁铁上缠绕足够多的细导线,会产生足够强的电阻,能防止电磁铁产生短路现象 )。断开电流,铁棒将丧失磁性。
也就是说,理论上,我们通过电线的连接可以控制很远的一块铁棒是否有磁性
,而一块铁棒是否有磁性有什么用呢?如果我们用一个弹簧拉着一块铁块,放在铁棒的上面,当铁棒有磁性的时候,铁块被吸引下来,当铁棒磁性消失的时候,铁块被弹簧拉上去,这样就相当于我们在一个地方对开关的操作会通过电线传播到很远的铁块上面来,这就是电报机的基本原理。
如果我们把开关稍微修改一下,改成我们比较熟悉的模样,一个完整的电报机如下所示:
但是,现在有一个问题,那就是电线是有电阻的,虽然单位长度的电线电阻很小,但是如果传输距离太远,电阻会变得很大,电阻一旦变大,通过铁棒的电流就会变小,这样就会导致铁棒的磁性变弱,磁性弱到一定程度那就没法将铁块吸引下来了。为了解决这个问题,继电器登场了。
继电器其实在电报系统中,起到了中转的作用,你也可以把他当作一个开关+电源
,不过这个开关的闭合不是通过人来控制的,而是通过电磁感应,我们下面分步骤表述一下继电器的使用:
注意A+C这是一个新的电路
,所以之前的电线产生的电阻已经没有影响了,这样,每隔n公里加一个继电器,信号便能一站接一站的传递下去,这就是电报机。
一个完整的电报机如下:
好了,我们现在回顾一下继电器的优势以及劣势
优势:
缺点:
事实上,虽然继电器有这么多缺点,但是历史上真的使用过继电器成功制造过计算机:
当A1和A2同时闭合的时候,电灯才会亮
当A1和A2任何一个闭合的时候,电灯都会亮
我们知道,计算机能识别的状态只有两种,0和1,反应在电路上其实就是通断两种状态,我们也可以使用高低压来表示,而我们前面介绍的继电器正好可以传递这两种状态。
虽然使用继电器也确实制造出了计算机,但是继电器本身的问题导致制作出来的计算机体积大,耗电高,易损坏。
所以,后来出现了真空管
,一种可以替代继电器的元件。
真空管同样存在自身的问题,比如,价格昂贵、耗电量大,以及产生的热量太多。 可是,其最大的问题是真空管最终会被烧坏,如同人活一世一样,是无法改变的事实。在计算机中,当一个真空管烧坏时并不可能立刻被检测到,此外,一台计算机拥有数量巨大的真空管,按统计学来分析,每隔几分钟就会烧坏一个。
用真空管取代继电器的最大好处在于真空管的状态可以在百万分之一秒(us)内发生转变。真空管状态转变(开关的打开与关闭)的速度比继电器要快1000倍,继电器在其最好状态下状态的转变也需要1ms,即千分之一秒。
在20世纪40年代初期,新设计的计算机中真空管开始取代继电器。到1945年,真空管已经完全取代了继电器
我们认知的第一台计算机ENIAC,就是1945年底在宾夕法尼亚大学设计完成的,ENIAC使用了18,000个真空管,重达30吨,被认为是世界上最大的计算机
1947年12月16日,威廉·肖克利(William Shockley)、约翰·巴顿(John Bardeen)和沃特·布拉顿(Walter Brattain)成功地在贝尔实验室制造出第一个晶体管。它被一些人称为20世纪最重要的发明之一
晶体管的具体制作工艺和原理可以先不用理解,只需要知道晶体管的工作方式如下:
电流从集电极到发射极,但是电流是否能通过是根据基极是否有电压决定的,基极有电压,电流便能通过,基极没有电压,电流便不能通过
这个结论和继电器,灯泡的通断是一致的,都是输入决定输出,晶体管的输入便是基极,输出为发射极。
晶体管有一下特点:
A输入端与B输入端必须同时有电压的时候才会有电流输出
A输入端与B输入端任何一个有电压的时候就会有电流输出
本篇文章之所以强调电路的串并联,是因为他们是组合逻辑的基本要求,而我们为了理解计算机原理,必须使用逻辑门来模拟计算机行为
本篇文章没有讲述电路相关的东西,是因为我们是为了理解计算机原理,不是为了制造计算机,知道晶体管的使用方式就可以了,后面我们会使用C语言模拟逻辑门