2.计算机组成-数字逻辑电路 门电路与半加器 异或运算半加器 全加器组成 全加器结构 反馈电路 振荡器 存储 D T 触发器 循环移位 计数器 寄存器 传输门电路 译码器 晶体管 sram rom 微

2019年11月06日 阅读数:93
这篇文章主要向大家介绍2.计算机组成-数字逻辑电路 门电路与半加器 异或运算半加器 全加器组成 全加器结构 反馈电路 振荡器 存储 D T 触发器 循环移位 计数器 寄存器 传输门电路 译码器 晶体管 sram rom 微,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

现代计算机的各个部件究竟是如何经过逻辑电路构成的呢php

 

半加器

咱们说过了门电路css

看似简单的三种门电路倒是组成了整个逻辑电路的根基vue

真值表--其实就是根据输入输出状态枚举罗列出来的全部可能ios

好比有一台设备,他有两个输入A和Bc++

不管什么时候,他们都有电或者都没有电的时候是正常,任何一个有电就是不正常es6

那么他的真值表就是这样子的web

AB表示输入  F表示输出sql

第一步:找到F=1的行npm

第二步:把表达式写成数理逻辑的形式,若是是0写成非的形式编程

         

第三步:各个逻辑"加"起来

继续翻译成逻辑电路的话那就是

A与B的非门链接到一个与门

A的非门与B链接到一个与门

而后再把这两个链接到一个或门

符号

是否是很简单?

就好似摩天大楼由砖头(与) 水泥(或) 钢筋(非)组成同样

一块砖和另外一块砖叠在一块儿很简单,可是组成摩天大楼就会很复杂

其实这个电路不就是一个异或门

a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

若是a、b两个值不相同,则异或结果为1。若是a、b两个值相同,异或结果为0。

再回头看一下上面的真值表

A和B通过这个设备,输出为F,是否是能够这样描述

0⊕0=0

0⊕1=1

1⊕0=1

1⊕1=0

设想一下二进制的加法是什么样子的?

0+0=0

0+1=1

1+0=1

1+1=0(此处应该有进位1)

这不就是没有进位的二进制加法运算设备吗?

因此说

异或也叫半加运算

--之因此说是半,是由于他没有进位机制

 

全加器

想要计算加法,很显然咱们须要一个全加器,就是有进位的,对吧,这是很天然的逻辑思惟

百度百科中如是说:

全加器是可以计算低位进位的二进制加法电路。

是用门电路实现两个二进制数相加并求出和的组合线路.

与半加器相比

全加器不仅考虑本位计算结果是否有进位,也考虑上一位对本位的进位,

能够把多个一位全加器级联后作成多位全加器.

用如今的概念去解释描绘历史,好像不是那么合适,可是我以为会更有利于理解

全加器不仅考虑本位计算结果是否有进位,也考虑上一位对本位的进位

若是不理解的话,能够拿出纸笔来计算,好比

前一个进位1 显然就是上一位对本位的进位

后一个进位1 显然就是本位计算结果是否有进位

每一次的计算,都有三个输入,加数被加数,以及来自上一位的进位

每一次的运算,则会产生当前位的结果,以及向下一位的进位

因此一次计算会有5个变量

咱们用A,B分别表示两个输入 加数和被加数

Ci表示来自前一列的进位

S是加数A被加数B以及Ci的和,和并不太准确,也就是求和后当前位的值

C0表示本位计算结果对下一位的进位

显然,A,B,Ci均可能有不一样的值

咱们列一下S的真值表 表示当前位计算的结果

三位的组合,每位可能两个值,因此总共8种可能

按照以前的步骤,找出来S为1的行,0用非来表示,最后求和

C0的真值表   表示当前计算结果是否有进位

也是三位的组合,每位可能两个值,因此总共8种可能

咱们转换成电路

不要问我怎么画,你就按照咱们上面的两条逻辑对着电路图走一遍

看看是否是这么回事就行了,反正我本身只是要理解计算机,而不是去设计电路

你要想搞得很明白,你能够去研究下

数字逻辑与数字系统设计或者数字逻辑XXX与XX设计一类的书名的书籍

咱们能够把上面的式子简化下

能够简化为

咱们以前已经知道对于  异或电路半加器

a⊕b = (¬a ∧ b) ∨ (a ∧¬b)  也就是a与b的异或就是 

 

简化为

根据:

就能够获得下面的电路图

根据输入输出的变量状况

咱们能够用下面的图来表示一位全加器

有了一位全加器,咱们天然能够组合出来更多位的全加器

看三位的全加器有了

S3  S2   S1   S0   的排列就是计算出来的结果,不是吗

咱们继续抽象一下,一个加法计算器就出来了

根据以前提到过的一些知识理论,咱们能够很容易想获得

对于左侧的输入,咱们彻底能够根据电路的闭合和联通来肯定是0 仍是 1

对于右侧的输出,咱们能够接上小灯泡,用亮和灭来记录结果

 

反馈电路  振荡器 -计算机的心跳

以前提到过,继电器的经常使用场景之一就是用做控制电路

以下图所示

想一想咱们以前的非门

带电源的常闭式(就是右侧电路默认是闭合)的继电器就是一个非门

刚已经说过,上面是用做控制电路,左侧电路控制右侧,右侧也是有电源的

若是共用电源

能够很明显的看得出来

开关自己是闭合的,一旦接通电源

吸引衔铁开关,断开电路而后失去磁性,而后电路闭合

吸引衔铁开关,断开电路而后失去磁性,而后电路闭合

.....

他是一种特殊的非门

把自身的输出结果拿过去做为输入

把一个非门的输出拿出来一部分做为它的自身的输入这叫作反馈

那也就是说一个非门加上一个反馈

就构成了这样子的一个装置,能够反复的在两种结果中跳转,而且无限持续

这就是 振荡器

可以产生一连串无限(只要有电)交替变化的输出

能够想象获得,振荡器的变化形式相似下面的形式

也就是高低交替的(不要去纠结究竟是横线多长间距多大两行之间有多高~)

电流的切换速度是极快的

因此咱们直接忽略时间,认为他是瞬间就能够达到,不然他确定是斜线

上升沿:电压从0到最大值的上升的竖线叫作上升沿

降低沿:电压从最大值到0的降低的竖线叫作降低沿

 

触发器-记忆

而后又有两我的才研究出来了一个更加特殊的连线方式

电路上下对称,分别都是一个或门连着一个非门

他们各自的输出又分别是对方的输入

两个或非门首尾相连造成两个反馈

再次强调不要纠结这究竟是啥,我相信最初确定是瞎弄的,科学不就是尝试么

而后发现了有些有意思的地方,而后就被加深研究了

若是左侧加上电源 右侧接上两个灯泡的话

根据开关闭合与断开 以及灯泡的状况

研究出来了触发器的原理

工做状态依赖于两个开关R S 

闭合一个断开另外一个,老是会获得两个相反的输出Q和Q~

要是所有断开,那么取决于Q和Q~刚才是什么状态,也就是有记忆功能

最先的一种触发器,称之为R-S触发器

Q和Q~老是以相反的状态出现

0 1 或者1 0

触发器截然相反的两个输出,不过多数状况下仅仅使用一个

触发器的记忆功能被应用到计算机的存储上

使用Q来记忆一个比特,另一个就不用了,由于原本他们就相反

要想使用Q保存一个比特,天然离不开R  S

想要Q=0   S=0 且R=1

想要Q=1   S=1 且R=0

两个输入能够用非门表示

当电路刚接好(尚未按下开关),S为0 R=1  Q=0  灯泡不亮

当按下开关后,S为1 R=0  Q=1  灯泡亮了

可是一旦开关断开,灯泡马上又灭了,由于又回到了刚才的状态

显然,虽然能够保存1比特,可是并不能维持他的存在,由于R和S做为输入发生了变化

因此很天然的,想到在R和S外加一层控制

而后又发明了带控制的触发器  D触发器

CP做为控制线路

Cp=0 时,经过与门,天然无论D上是什么,S和R都为0,触发器保持原有内容不变

CP=1 时,若是D=0 那么 S=0 R=1  Q=0

CP=1 时,若是D=1 那么 S=1 R=0  Q=1

也就是说CP做为控制线路控制是否可写

在可写的状况写,D控制写入的内容

这种触发器会在CP=1期间均可以进行写,只要D改变了,保存的值就会发生改变

因此想要准确的保存一个比特,你须要保持住D的值,持续通过CP从0~1而后再到0的过程

因此,又发明了一种新的触发器,仅仅是在CP从0变成1  或者从1变成0  的时候才会触发

-也就是接受D的输入

两个D触发器首尾相连而成,前一个触发器的输出是后一个触发器的输入

这两个触发器不会同时工做

这个触发器是上升沿D触发器

也就是无论控制端是0 仍是1   仍是从1到0的降低沿,都不能保存

只有0到1的上升沿才能保存

若是把若干个上升沿D触发器链接起来

最初开关是断开的,全部的触发器都不工做

由于CP都是0

若是你不停的按开关,最初闭合开关瞬间的这个比特1 就会在触发器间顺序传递,从左到右

手动按动开关天然是无聊的,因此振荡器就被应用其中了,并且速度是可调节的

这种走马灯的电路就是 循环移位寄存器

寄存,是临时存放的意思

当若干个触发器组合在一块儿,能够同时保存多个比特时就成为寄存器

 

计数器

T触发器   Q~做为输入到D

假设最初Q=1 Q~=0  灯泡是亮着的

反复按动开关(按键开关),灯泡会在亮灭之间交替变化

每当一个脉冲到达CP时,触发器的输出就会发生翻转,原先是0 则变成1  原先是1 则变成0

Q~也是这样,只不过值恰好相反

他有一个神器的做用就是用于计数

简化一下(隐藏了Q~到D的连线,可是他是存在的)

5个链接在一块儿,从右往左看,每一个触发器的输出端Q~都链接下一个触发器的CP

先把每个触发器清零 使得 Q43210   的值为00000,这表示0  

随着振荡器脉冲的输入,会不断计数

显然,一个触发器表示一个比特,8个触发器组成计数器,就是能够累积255个脉冲 11111111

试想一下若是计数器已经达到最大了,此时又来了一个脉冲,是什么效果?这不就是溢出的基本原理么

 

寄存器

试想一下若是多个数经过全加器进行计算,须要解决什么问题?

以前咱们说到过半加器到全加器的进化,须要记录处理进位的状况相似

多个数相加,天然须要处理中间结果,因此你须要保存下来

寄存器的符号(就是触发器组成 多个触发器能够构成寄存器)

上升沿才会工做

把加法器换一种形式描绘

若是你还记获得话,以前是这样子的

咱们把寄存器链接到加法器上

你应该能够看得懂

当按键开关KRA按下时,开关输入的数值会经过寄存器,输出到加法器,做为他的一个加数

为了简化电路图,使用同一组开关提供加数和被加数

这样,经过开关送进来的数能够先到到寄存器RA ,同时也被送到加法器另外一个输入端

若是你想要保存到寄存器RA就按一下按键开关

若是你想要用它和寄存器中的数相加,就什么也不用作,结果自动从加法器的输出端

因此当你输入第一个数字,按一下KRA开关,寄存器保存了加数

输入第二个数字,寄存器的值就和他相加  马上得出结果

然而此时的寄存器尚未保存中间结果

一种很显然的方案就是加法器的输出,同寄存器的输入端直接相链接

很显然,共用电路带来了不少麻烦

好比加法器计算出来的结果不只会达到寄存器还会进入本身的输入端

因此说要么就是想办法电路分开,要么就是轮流共用线路

你们共用的线路,就是咱们常说的总线

 

轮流使用总线 传输门

继电器的做为控制电路的理论再次被应用

这种结构就叫作传输门---开关闭合,信号能够经过,开关断开,信号就中断

名字很形象

因此可使用传输门来控制总线上数据的传输

 

上图中都是按键开关,不是闸刀开关

左边经过传输门GA接入总线

右边加法器输出经过GB接入

并且还多了一个临时寄存器TR 临时保存加法器的计算结果

计算过程是这样子的:

好比 1+2+3+4+5

第一步:开关拨出来第一个数 ->按住KGA打开传输门->按下KRA,数据保存在寄存器RA中,松开KGA,关闭传输门

虽然此时这个数据已经也到了加法器的另外一个输入,加法器也会进行运算,可是GB关闭的,TR也不会进行保存

第二步:开关拨出来第二个数

->按住KGA打开传输门,这样第二个数被加数会进入加法器的另外一个输入端,加法器会自动运行

->按一下KTR,保存计算结果到临时寄存器

->松开KGA

->而后就是按住KGB,让临时寄存器TR的数据达到RA

->按一下KRA寄存器保存中间结果

虽然也会输入到加法器的另外一个输入端,也会进行加法,可是TR会屏蔽掉数据不会保存

梳理简化下步骤:

按住KGA   按一下下KRA 松开KGA===>保存了加数

按住KGA===>计算结果

按一下KTR    松开KGA  按住KGB 按一下KRA===>保存中间结果

 

译码器

你能够去设想可能的电路,找到输入输出,而后列出真值表

而后设计逻辑电路,这是通用的解决问题的思路

好比咱们设想

 

通过这样子一个电路,咱们能够更方便的操做,图中假定设置加数 是装载   设置被加数求和 是相加

再次优化

 

RR是循环移位寄存器,两个输出t0  t1 替代了K0 K1

这样子就是最开始的时候须要装载,此后都是开关拨数,按两次K,开关拨数按两次K..

这就是控制器的基础原型

上面的这个新电路其实就是译码器,译码器就是用于输入的转换,把一种输入转换为另外的一种输出

如同名字同样,翻译

至此,咱们已经能够经过相对比较简便的操做进行连续累加

可是每次不断地拨弄开关进行数据输入,仍旧是比较繁琐的

 

存储器

存储器按照咱们的理解,他像一个容器同样,有一个口能够进行 存 / 放 数据

以前说过想要存储数据那就是触发器-上升沿D触发器

G是传输门,控制Q与外部世界的连通性

默认W和R都为0  G是断开的

写入时,DB输入数据,W从0变成1 上升沿   R继续为0,G是断开的

读取时,R=1 打开传输门,W仍旧为0

做为一个基本单元,能够构造容量更大的存储器

使用几个就是能够保存几个比特的二进制数

默认读写均为0

D0~D4准备好数据 写从0~1上升沿,写0  写入数据

写0 读1 读取数据到D0~D4