2月书单《编码隐匿在计算机软硬件背后的语言》 13-16章

第13章 如何实现减法

在你确信继电器(当然现在用晶体管)可以连接起来以构成二进制加法器后,你可能会问:“减法器如何实现呢?”

以前我只是会做题,知道减法可以变为加法,只要变为加上补码即可,可其中道理一直没怎么想(好像补码原因还有0的表示是唯一的,计算机系统的知识,不太记得了)只是把它记下来,这次有了进一步的认识

减法如果按照以前,列式算,是挺麻烦的,因为有借位的问题,我们不希望借位,那么怎么办呢?

如下图,可以保证不借位

而当减数比被减数大,可以交换减数与被减数,结果取反,也可以

176-253=(999-253)+176-999=746+176-999=922-999

上面是10进制的例子,现在看2进制

当计算十进制数减法时,减数是从一串9中减去,得到称为9的补数的结果。对于二进制数减法,减数从一串1中减去,差称为1的补数。但请注意,求1的补数实际上并不需要做减法,因为1的补数中,原来的0变成1,原来的1变成0,所以, 1的补数有时也称为相反数或反码。-->这点很明显但以前没注意

现在,已经可以改进加法机使它既能执行加法操作亦能执行减法操作。为使简便起见,这个加/减法机只执行被减数大于减数的减法操作,即差为正数的操作。这一章还是很有意思的

假设A为被减数,B为减数,按照刚才的说法,只要对B先取反即可达到减法的第一步操作

里面的结构如下图:其中sub 0-->加法  1-->减法

做减法时, B输入在送入加法器之前先求补。此外,做减法时,通过设置加法器的进位输入端( C I )为1,使由加法器得到的结果加1。对加法而言,求补电路没有起作用,C I输入也就是0。

取反器的结构

取反位为0 输入与输出相同   取反位为1  输出为输入的反码

“S U B”信号及加法器的C O输出作为异或门的输入来控制表示上溢/下溢的小灯泡。如果“S U B”信号为0(表示做加法),则当C O输出为1时灯泡点亮,这表示加法的和大于2 5 5。当做减法时,如果被减数大于减数,则加法器的C O端正常输出1,这表示在减法的最后
一步中要减去1 0 0 0 0 0 0 0 0。所以,只有当加法器的C O输出为0时,上溢/下溢灯泡才被点亮。这时减数大于被减数,差是个负数。上面这个加/减法器现在还不能表示负数。

上面粗体部分为书中的一段话,写得很好,加法比较简单,主要讲减法,sub为1,当co为1,异或结果为0,灯不亮,要减去1 0000 0000,而我们只输出后八位,即相当于已经进行了此减法操作。当co为0的时候,结果还需要减去1 0000 0000,为负数,那么,co(值为0)与sub(值为1)异或结果为1,等亮,代表溢出了。

后面的部分又介绍了负数的二进制表示,比较简单,就是最高位为符号位,权重为负数,如1111,为1*(-8)+1*4+1*2+1*1 = -1    0111为 0*(-8 )+ 1*4 +1*2 +1*1=7

第14章 反馈与触发器

反馈:当你受到1点伤害后,你可以获得伤害来源的一张牌。

哈哈,下面了解下计算机之中的反馈

这个电路称为振荡器,它和我们以前见到的每样东西都有本质上的区别。以前,所有的电路都靠手动地断开或闭合开关来改变状态,而振荡器却不需要人的干涉,它可以自主地工作。
当然,单独的一个振荡器不会有什么用,但在本章的后面及接下去的几章里,你会看到这个电路和其他电路连接后构成了自动控制中一个十分关键的部分。所有计算机都靠某种振荡器来使其他部件同步工作。--->时钟信号

现在有个问题:我们怎么测量振荡器的速度?

我们可以构造一种器件来真正地测量一个振荡器的速度。为了构造这个器件,先看一个用特殊方式连接的一对或非门。

其中,黄色高亮部分的就是反馈。

左边或非门的输出是右边或非门的输入,右边或非门的输出是左边或非门的输入。这是一种反馈。事实上,这和在振荡器中类似,输出又返回作为一种输入。

此电路有些特性,简单模拟实验后可以发现一些规律,总结起来就是:
• 闭合上面的开关使灯泡点亮,当再断开时,灯泡仍然亮着。
• 闭合下面的开关使灯泡熄灭,当再断开时,灯泡仍然不亮。

电路的奇特之处是:有时当两个开关都断开时,灯泡亮着;而有时,当两个开关都断开时,灯泡却不亮。当两个开关都断开时,电路有两个稳定状态,这样的一个电路称为触发器。

它有记忆性(一个能计数的电路(本章后面要提到)必定需要触发器。)。它可以“记住”最近一次是哪个开关先闭合的。如果你遇到这样一个触发器,它的灯泡亮着时,你可以确定最近闭合的是上面的开关;而灯泡灭着时则是下面的开关。

最简单的触发器  :  R - S(或R e s e t - S e t,复位/置位)触发器

R - S触发器能够记住哪一个输入端最近被输入高电位,这确实很有趣。但更有用的电路应该能记住某个特定时间点上上一个信号是0还是1

其功能表:

同样的,当保持位为0的时候,复位信号对输出也没有影响。

但我们还没有达到目标,我们只想要两个输入,而不是三个,怎么办呢?前面讲过R - S触发器中两个输入同时为1的情况是禁止的;而两个输入同时为零的情况没有什么意义,因为那只是输出保持不变的简单情况。这里,只要将保持位置为0,就可以完成同样的功能。
可见,真正有意义的输入是S为0,R为1或R为0,S为1。把数据端信号当作置位信号,它取反后的值就是复位端信号,如下图示:

这个电路称为电平触发的D型触发器,D(D a t a)表示数据端输入。所谓电平触发是指当保持位输入为某一特定电平(本例中为“ 1”)时,触发器才对数据端的输入值进行保存。

这个电路就是所谓的电平触发的D型锁存器,它表示电路锁存住一位数据并保持至将来使用。它也可以称为1位存储器   触发器为存储器的基础

上面的电路还可以进一步优化 ,加入清零位

触发器是电平触发式的,意思是说只有在时钟端输入从0变到1后(即高电平时),数据端输入的值才能保存在锁存器中。注意,在时钟端输入为1期间,数据端输入的任何改变都将反应在Q或-Q端的输出值上。

对一些应用而言,电平触发时钟输入已经足够用了;但对另外一些应用来说,边沿触发时钟输入更为适用。对于边沿触发器而言,只有当时钟从0变到1的瞬间,输出才会改变。在电平触发器中,当时钟输入为0时,数据端输入的任何改变都不会影响输出;而在边沿触发器
中,当时钟输入为1时,数据端输入的改变也不会影响输出。只有在时钟输入从0变到1的瞬间,数据端的输入才会影响边沿触发器的输出。

这个比较有意思,分析一下

下面是处于非工作状态的触发器,其数据端、时钟输入均为0,Q端输出也是0:

现在,使数据端输入为1:

这改变了第一级触发器状态,因为时钟信号取反后为1。但第二级仍保持不变,因为时钟端输入仍为0。现在把时钟输入变为1:

这就引起第二级触发器改变,使Q端输出变为1。与前面不同的是现在无论数据端输入如何变化(如变为0),它也不会影响Q端的输出值:

Q和-Q端输出只有在时钟输入从0变到1的瞬间才发生改变。

触发器的符号图如下所示:

后面的章节介绍了计数器,确定振荡器的频率,这个方法就是计数器如果把振荡器连到8位计数器的时钟输入上,计数器会显示出振荡器经历了多少次循环。当计数器总和达到11111111时,它又会返回到0 0 0 0 0 0 0 0。使用计数器确定振荡器频率的最简单方
法是把计数器的输出连到8个灯泡上。当所有输出为0时(即没有一个灯泡点亮),启动一个秒表;当所有灯泡都点亮时,停住秒表。这就是振荡器循环2 5 6次所需要的时间。假设是1 0秒钟,则振荡器的频率就是2 5 6÷1 0,或者说是2 5 . 6赫兹。

第15章 字节与十六进制

这一章比较轻松,介绍了字节与16进制。

字节长度:8位

8位数事实上是很适用的,字节在很多方面都比一位数优越。I B M采用字节的一个原因就是它们易于以B C D(将在第2 3章中描述)这种格式保存。字节用于保存文本也是很合适的,因为世界上大部分书面语言都可以用少于2 5 6个字符的字符集来表示(除了汉语、日语、韩语等所用的表意文字以外)。用字节表示黑白图像中的灰度也是很合适的,因为人眼大约能区分2 5 6种不同程度的灰度。当一个字节不足以表示信息时(如刚才说的表意语言:汉语、日语、韩语等),用两个字节,即21 6或65 536也可以很好地表示。

第16章 存储器组织

电报继电器—当集成为逻辑门然后再集成为触发器—也一样可以保存信息。正如我们所知道的,一个触发器可保存1位信息。保存1位信息当然并不代表保存全部信息,但这是一个开端。一旦我们知道了如何存储1位信息,就可以容易地存储2位、3位或更多位信息

这是同一个触发器,但现在Q输出端命名为数据输出(Data Out),时钟输入端(在第14章是作为保持位)命名为写入(Write)。就像可以在纸上记录信息一样,写入信号使得数据输入(Data In)信号写入或存储到电路中。通常,若写入信号( W )为0,则数据输入( D I )信号对输出无影响。而当我们想在触发器中存储数据输入信号时,写入信号应先置1后置0。就像在第1 4章提到的,这种类型的电路也叫锁存器,因为它锁定数据

这种锁存器的配置有时也称为读/写存储器,但通常叫作随机访问存储器或R A M。R A M可存储8个单独的1位数据。就像操作系统书里所说,随机访问其实就是直接访问,不用顺序访问的意思。

之后书介绍了RAM的搭建,比较简单。

还有一个必须注意的有关存储器的问题,它非常重要。在第11章介绍逻辑门的概念时,并未画出构成逻辑门的单个继电器的构造。特别地,没有标出每个继电器连接的电源。任何时候当继电器触发时,电流流过电磁线圈并在适当的位置吸下金属簧片。如果一个装满65 536字节的6 4 K×8 RAM阵列被关掉电源,将会发生什么情况呢?所有的电磁铁将失去磁性,所有继电器的触点将回到未触发状态, R A M中的内容也将永远丢失。这就是随机访问存储器也称为易失性存储器的原因,它需要恒定的电源来保持其中的内容。

晶体管也需要通电才能工作,故RAM没有电就某得了。

猜你喜欢

转载自www.cnblogs.com/caishunzhe/p/12304104.html