计算机是如何使用晶体管实现二进制

 2024-01-08 02:02:03  阅读 0

1.我们来说说计算机为什么使用二进制

简介:本文讲述计算机如何利用晶体管来实现二进制计算。

如果觉得文章有点长,可以直接到文末阅读摘要文字。

1. 理论优先

1.1. 二元思想的命题

二进制是计算技术中广泛使用的数字系统。 二进制数据是由0和1两位数字表示的数字,其基数为2,进位规则为“二对一”,借位规则为“借一得二”,由德国人莱布尼茨发现18世纪数学哲学大师。

目前的计算机系统基本采用二进制系统,数据主要以二进制补码的形式存储在计算机中。

1.2. 二元思想的初步实现

(1)二元与逻辑代数

1854 年,英国数学家乔治·布尔发表了一篇具有里程碑意义的论文,详细介绍了后来被称为布尔代数的逻辑代数系统。 他的逻辑推理在数字电子电路的设计中发挥了重要作用。

(2)通过继电器开关实现二进制的思想

1937年,克劳德·香农( )在麻省理工学院发表了他的硕士论文,历史上首次使用电子继电器和开关实现了布尔代数和二进制算术。

香农的论文题目是《继电器和开关电路的符号分析》,基本建立了实用的数字电路设计。

(3) 中继计算机

第一个使用继电器构建计算机的人是贝尔实验室的乔治·斯蒂比茨 ( )。 1937年,他制作了一个可以完成两位数加法的模型,称为Model-K。

事实上,Model-K只是一个继电器计算器的演示,而且非常简陋。

在上级的支持下,继电器计算器M-1于1940年初成功推出,它使用了440个继电器,可以解决贝尔实验室面临的大量复数的加、减、乘、除四个算术问题当时从事电学研究。

它开创了一个时代,数字计算机时代,使用二进制系统进行计算。 以前的计算机器大多基于常用的十进制数。

下图是中继计算机。

进制数可以直接相加吗_计算机有进制转换吗_可以有e进制的计算机吗

1.3. 二进制思想在现代计算机上的实现

(1)第一台计算机

第一台现代电子计算机ENIAC诞生于1946年。ENIAC的程序和计算是分离的,这意味着你需要手动输入程序。

这类程序的输入需要通过手工接线来完成。 没有存储器,由接线板控制。 计算速度可想而知。 而且,ENIAC使用十进制计算,而不是二进制。

这时,一位匈牙利裔美国数学家冯·诺依曼登场了。

计算机有进制转换吗_可以有e进制的计算机吗_进制数可以直接相加吗

(二)冯·诺依曼的思想

1945年,冯·诺依曼和他的开发团队在共同讨论的基础上发表了新的“存储程序通用电子计算机解决方案”——EDVAC()。 这是一份 101 页的总结报告。

该报告广泛而具体地提出了构建电子计算机和编程的新想法。

EDVAC方案明确提出新机器由五个部分组成,包括:运算单元、逻辑控制装置、存储器、输入输出设备,并描述了这五个部分的功能和相互关系。

在报告中,冯·诺依曼进一步展示了EDVAC的两大设计思想,为计算机设计树立了里程碑。

设计思想之一就是二进制。 根据电子元件的双稳态工作特性,他建议在电子计算机中使用二进制系统。 报告中提到了二进制的优点,并预言采用二进制将大大简化机器的逻辑电路。

(3)冯诺依曼的实现

1952年,计算机之父冯·诺依曼设计的电子计算机EDVAC问世。

与它的前身 ENIAC 不同,EDVAC 使用二进制并且是冯诺依曼架构计算机。 冯·诺依曼的设想在这台计算机上得到了彻底的实现。

EDVAC 是第一台现代通用计算机。 它由五个基本部分组成:算子CA; 控制器CC; 内存M; 输入设备I; 输出设备O

这种架构一直延续至今。 现在使用的计算机的基本工作原理仍然是存储程序和程序控制,所以现在的计算机一般被称为冯·诺依曼架构计算机。

1.4.二元运算的好处

(1)二元态实现简单,可利用元件开关特性和电压高低特性。 广义上讲,只要一个事物具有两种相反的状态,就可以视为二元思想的实现。

比如前段时间去世的张首晟教授,他的研究方向之一就是电子自旋。 利用电子自旋的两个方向也可以实现二元思维;

(2)可靠性和稳定性高,只有两种状态,抗干扰性强;

(3)操作规则简单,简化设计;

(4)通用性强。

2.从晶体管到“1+1=2”

我们都知道计算机的核心是处理器(CPU),它的职责之一就是计算。

CPU是一块非常大规模的集成电路,所以如果我们想要了解计算机的计算机制,就必须了解集成电路是如何具有计算能力的,而集成电路中封装有大量的晶体管和其他电子器件。元件,所以探索计算机的计算能力可以从晶体管的功能开始。

2.1. 晶体管如何表示0和1

从第一台计算机到EDVAC,这些计算机都使用了真空管和二极管等元件,并利用这些元件的开关特性来实现二进制计算。

然而,管部件具有许多显着的缺点。 例如,运行时产生的热量过多、可靠性差、运算速度不快、价格昂贵、体积大等,这些都限制了计算机的发展。

结果,晶体管开始被用作计算机元件。

晶体管利用电信号来控制自身的开闭,开关速度可以非常快,实验室的开关速度可以达到以上。

使用晶体管后,电子电路的结构得到了很大的改进,我们进入了以晶体管为代表的第二代电子计算机。

1947年,肖克利和贝尔实验室的其他人发明了晶体管,也称为三极管。 下面是晶体管的产品照片。

进制数可以直接相加吗_可以有e进制的计算机吗_计算机有进制转换吗

需要注意的是,晶体管的类型有很多种,每种类型又分为N型和P型。 下图中的电路符号是N型晶体管。

进制数可以直接相加吗_可以有e进制的计算机吗_计算机有进制转换吗

晶体管电路有两种状态:导通和截止。 这两种状态可以作为“二进制”的基础。

从电学角度来看,晶体管仍然具有放大状态,但我们这里考虑的是晶体管用在数字电路中,只要求它是一个开关电路,即可以导通和截止。

如上图所示,当b处电压为e处电压时,晶体管的c、e极截止。

这只是一个简化的解释。 事实上,从模具电气角度来看,开通和关断的要求是两个PN节点的正向偏压和反向偏压,还必须考虑c极电压。

但在实际的数字电路中,e极电压和c极电压一般是恒定的,要么由电源提供,要么接地,所以我们可以简单地记为“晶体管电路的通断由下式决定” b极电压与恒定e极电压的比较。 决定”。

换句话说,当该晶体管的b极电压相对于e极低时,晶体管将导通,而当晶体管的b极电压相对于e极高时,晶体管将截止。

从这里可以看出,晶体管的导通和截止两种状态可以通过b极电压的相对高度来对外表示,这进一步说明了我们可以用高电平或低电平状态来表示二进制。

换句话说,b极是一个输入量(自变量),可以作为变量存储两个值:高电平或低电平,对应的输出值(因变量)是电路的实际变化:打开或关闭。

至于上面的N型晶体管,高电平截止,低电平导通。

那么如果此时我们将高电平设为“1”,低电平设为“0”。 然后向b极输入1将使电路关闭。 如果这个电路控制计算机的电源开关,就会关闭计算机。 这就是机器语言的原理。

我们编程语言的本质就是对很多高低电平信号进行编程。 那么如何输入1呢? 要知道,电脑刚诞生的时候,还没有键盘。 这时候就引入了老物件“打孔纸带”。 这件事下面会详细讨论。

回到晶体管,计算机和移动设备中实际使用的大多数晶体管都是(金属氧化物半导体场效应晶体管)。

又分为N型和P型。 NMOS是指N型,PMOS是指P型。 注意,MOS中的栅极可以比作晶体管中的b极,它的电压控制着整个MOS管的导通和截止状态。

NMOS电路符号如下:

可以有e进制的计算机吗_计算机有进制转换吗_进制数可以直接相加吗

PMOS电路符号如下:

NMOS在栅极为高电平时导通,在栅极为低电平时截止。 因此,NMOS的高电平代表“1”,低电平代表“0”; PMOS则相反,即低电平为“1”,高电平为“0”。

这时候你应该明白“1”和“0”只是两个电信号,具体来说是两个电压值。 这两个电压可以控制电路的通断。

2.2. 从晶体管到门电路

一个MOS只有一个栅极,即只有一个输入。 虽然输出的是高低电压信号,即“1”或“0”,但其功能只是简单的电路开通和截止功能,并不能完成计算任务。 这时,就需要引入门电路闭合。

提醒一下,本文中的电压、电平和电信号是同一回事。

门电路是数字电路中最基本的逻辑单元。 它可以使输出信号与输入信号之间产生一定的逻辑关系。

门电路是由许多二极管、晶体管等电子元件组成的实现基本逻辑运算和复杂逻辑运算的单元电路。 这里我们只介绍最基本的门电路——与门、或门、非门、异或门。

(1)与门

与门电路意味着只有当一件事的所有条件都满足时,某件事才会发生。 下面是MOS管组成的电路图。 A 和 B 用作输入,Q 用作输出。

例如,如果A输入低电平,B输入高电平,则Q将输出低电平。 转换为二进制时,A输入0,B输入1,则Q输出0。

对应的Java语言运算表达式为0&&1=0。

进制数可以直接相加吗_可以有e进制的计算机吗_计算机有进制转换吗

(2) 或门

OR 电路意味着只要满足一个或多个条件,就会发生某事。 下面是MOS管组成的电路图。 A 和 B 用作输入,Q 用作输出。

例如,如果A输入低电平,B输入高电平,则Q将输出高电平。 转换成二进制后,A输入0,B输出1,则Q输出1。

对应的Java语言运算表达式为0||1=1。

进制数可以直接相加吗_可以有e进制的计算机吗_计算机有进制转换吗

(3) 非门

非门电路又称为“非”运算,又称为“取反”运算,因此非门电路又称为反相器。 下面是MOS管组成的电路图。 非门只有一个输入 A 和 Q 作为输出。

例如,如果A输入低电平,则Q将输出高电平。 转换为二进制时,A输入0,则Q输出1; 否则,如果A输入1,Q将得到0。

对应的Java语言操作表达式为!0=1; !1=0。

进制数可以直接相加吗_计算机有进制转换吗_可以有e进制的计算机吗

(4)异或门

异或门电路判断两个输入是否相同。 “XOR”表示如果不同,结果为真。 即两个输入电平不同则得到高电平,反之则得到高电平。 如果输入电平相同,则得到低电平。

下面是MOS管组成的电路图。 A 和 B 用作输入,Out 用作输出。

例如A输入低电平,B输入高电平,则Out输出高电平。 转换为二进制时,A输入0,B输出1,则Out输出1。

对应的Java语言运算表达式是0^1=1。

可以有e进制的计算机吗_计算机有进制转换吗_进制数可以直接相加吗

2.3. 从门电路到半加器

通过门电路,我们可以进行Java语言中的逻辑运算,但是加减乘除等算术运算仍然无法完成。 在这种情况下,需要更复杂的电路单元。

出现了由基本门电路组成的各种逻辑单元电路。 如果我们要实现最简单的加法运算,计算二进制数1+1等于。

我们可以使用半加法器来实现这一点。

半加器和全加器是算术运算电路中的基本单元。 它们是完成1位二进制加法的组合逻辑电路。 这里的1位就是我们常说的“1byte=8bit”中的1位,也就是说,如果我们要完成8位二进制运算,就需要8个全加器。

半加器的加法不考虑从低位开始的进位,因此称为半加法。

下图是半加器电路图。

计算机有进制转换吗_进制数可以直接相加吗_可以有e进制的计算机吗

半加器由与门和异或门电路组成。 “=1”所在的方框是异或门电路的符号,“&”所在的方框是与门电路的符号。

这里A和B用作输入端。 由于不考虑低位进位,因此输入端A和B分别代表两个加数。 输出为S和C0,S是结果,C0是进位。

例如,当A=1,B=0时,进位C0=0,S=1,即1+0=1。

当A=1、B=1时,进位C0=1、S=0,即1+1=10。 这个10是二进制的。 如果转换为十进制,则用2表示,即1+1=2。

到这里,你应该明白晶体管是如何计算1+1=2了。

然后我们用它们组成一个全加器。 下面是全加器电路图,同样只支持1位计算。

Ai和Bi是两个加数,Ci-1是低进位数,Si是结果,Ci是高进位数。

进制数可以直接相加吗_可以有e进制的计算机吗_计算机有进制转换吗

如果我们将4个加法器连接在一起,就可以计算出4位二进制,比如计算2+3,那么4位二进制就是0010+0011。 下表显示了使用加法器计算出的值。

和普通的加法一样,从最低位开始计算。 加数A代表0010,B代表0011。

结果Si:0101,即十进制5。加法器实现十进制运算2+3=5。

至此,本文的核心内容就基本结束了。

回想一下:单个晶体管只能打开和关闭电路;

由多个晶体管组成的基本门电路,可以输入电信号和输出电信号为基本单元,完成基本的逻辑运算;

各种门电路组合成一个称为“加法器”的单元来完成加法运算。 此时的这个单位就是计算机中所说的1bit。

如果要计算8位二进制加法,例如+,则需要将8个这样的单元电路连接在一起。 当然,这需要数学知识。

题外话,本节我们的主题是加法的计算,这里的加法器是用门电路实现的。

事实上,计算机计算部件的核心就是加法器。 加法器可以使用补码来计算减法。 左移和累加是乘法,右移和累加是除法。

另外,门电路可以构造计算部件,也可以构造具有存储功能的部件和控制电路。 例如,CPU由运算器、控制器和寄存器组组成,其中寄存器由触发器和门组成。 由电路组成。

通过这些功能组件、存储组件和控制组件,可以构建一个简单的计算机模型。

3. 完成实际计算

通过上面的描述,大家应该明白了,这串数字无非就是高低电平信号。 逻辑电路可以将这堆电信号转换成另一堆电信号。 那么它是怎么发生的呢? 这些二进制数是如何转换成电信号的呢? 输出的电信号可以通过什么方式被人类读取?

继续听我说。

3.1.打孔纸胶带

穿孔纸带是早期计算机的输入和输出设备。 它将程序和数据转换成二进制数:有孔的1和无孔的0,通过光电扫描输入计算机。

光电扫描利用光敏电阻的感光特性,可以自然地将数字转换为电信号。 例如,如果纸张上有透光的孔,那么光敏电阻的阻值就会很小,可以获得高压信号。 相反,在没有孔的地方,得到低电压信号。

下图是一种将打孔纸带转换为电信号的古老方法,使人们更容易理解计算机如何读取输入。

进制数可以直接相加吗_计算机有进制转换吗_可以有e进制的计算机吗

该方法利用电流的通断来识别数据。 对应穿孔纸带上的每个数据孔,上面有一根金属针,下面有一个容器,里面装有水银。

当按压压板时,针可以穿过卡上的孔,与水银接触,电路接通。 针被堵在没有孔的孔中。 这也是将01信号转换为电信号的一种方式。

下面是一张打孔纸带的照片,这是我们国家在 20 世纪 60 年代和 1970 年代仍在使用的输入法。

进制数可以直接相加吗_计算机有进制转换吗_可以有e进制的计算机吗

既然了解了输入,就无需再多说输出了。 输出的高低电压可以通过机械装置,如打孔纸带,直接打印出输出结果。 此外,输出的电信号还可以连接到其他仪器和电路,如示波器等。

3.2. 练习一些练习

到这里我们就理清思路了:

(1)提出要求:项目中需要计算*-

(2) 将十进制转换为二进制并制作打孔纸带

(3)将打孔纸带放入电脑中,电脑读取数据

(4)计算机读取“01”数据,将“01”转换为低电压和高电压。

这里提出两点。 第一点:低电压和高电压不是具体的固定值。 如果计算机输入电压范围为0~10V,以5V为分界线,则0~5V之间的任意电压值为低电压,5V~10V之间的任意电压值为高电压。

第二点:流程的介绍。 计算机的计算速度很快,但是由于需要人类制作打孔纸带,而计算机读取纸带的速度也很慢,所以一开始的计算之间会有很长的时间。

为了不浪费这些计算资源,科学家引入了“进程”的概念,这样就可以一次性进入多个计算任务。 计算机开机后,计算机会依次执行相应的进程,没有任何空闲时间。

(5)数据电信号(输入电平)在命令电信号的控制下在电路中进行转换,最终得到一批高低电压(输出电平)。

(6)输出高、低压信号,可通过打印装置打印出结果。

3.3.编程语言的本质

机器语言是高低层不同序列的排列。 我们编写的机器语言是高低电平(0和1)不同序列的排列以及不同顺序的输入。 经过计算机处理后,输出也是高低电平不同序列的排列。 。

只是我们通过电路转换将这些不同的高低电平序列转换成不同旋律音高的声音或者明暗颜色不同位置的图像输出,然后获得我们可以直观理解的信息。

同理,我们的高级编程语言也是如此,只不过人类可读的文本代码需要借助编译器来生成相应的二进制代码,最终在本地机器上运行。

总之,代码是高层和低层的抽象。 点击运行后,代码所代表的高低电平组合将在各种电路中运行。

2.为什么计算机使用二进制来处理信息?

因为数字计算机只能识别和处理由“0”和“1”符号组成的字符串的代码。

它只使用两个数字符号0和1,非常简单方便,并且易于电子化实现。

电子计算机出现后,由于过于复杂,无法用电子管来表示十种状态,所以所有电子计算机中只有两种基本状态,开和关。

也就是说,电子管的两种状态决定了基于电子管的电子计算机使用二进制来表示数字和数据。

计算机有进制转换吗_可以有e进制的计算机吗_进制数可以直接相加吗

扩展信息

特征:

1、如果一个二进制数(整数)的第0位值为1,则该数为奇数; 如果该位为 0,则该数字为偶数。

2. 如果一个二进制数的低n位全为零,那么这个数可以被2n整除。

3. 如果二进制数的第 n 位为 1,其他所有位均为 0,则该数等于 2^n。

4. 如果一个二进制数的第 0 位到第 n - 1 位全为 1,其他位全为 0,则该数等于 2^n - 1。

5. 将二进制数的所有位左移的结果是该数乘以 2。

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码