<<编码的奥秘>>归纳与总结

       大学上了<<微机原理>>,<<信息论与编码>>,<<数字电路>>,<<单片机原理与技术>>。一直不能将这些零散的知识贯穿为一个整体,直到看了<<编码的奥秘>>,才有茅塞顿开的感觉。

1.什么是编码?
本书中的编码或代码通常指一种在人和机器之间进行信息转换的系统。 语言,文字,编码都是一种交流的规则。只要我们约定好使用的规则,就能够互相交流了
不同的编码,适合不同的场合。例如,语言不能在纸上存储,所以使用了文字;语言、文字不适合用来在黑夜
中安静地传递消息。只要一种编码可以适用于其他编码 所不能适用的场合,它就是一种有用的编码。

2.为什么计算机中使用二进制编码?
最初的计算机是一种机械产品,其中一个部件是电磁继电器(如下图)。一个电磁继电器只能表示2种状态,当环绕电磁继电器的导线中通电时,磁铁被吸附,上部的导线接通。断电后,铁圈失去磁性,在弹簧的作用下,磁铁回到原位,于是电路又断开。


               
 

3.布尔代数与逻辑的关系

真理是什么?亚里士多德认为与逻辑有关。亚里士多德的逻辑学的基础是 三段论。最有名的三段论是:
(所有的人都是要死的 ; 苏格拉底是人; 所以,苏格拉底是要死的。 )
在三段论中,两个前提被假设是正确的,并由此推出结论。

数学家们对亚里士多德的逻辑理论苦苦思索,试图用数学符号和操作符来表现它。

布尔代数为解决亚里士多德的三段论提供了一个数学方法。再看看这个著名三段论的两个前提: 1.所有的人都是要死的;2. 苏格拉底是人。


我们用字母P代表所有人的集合, M代表要死的东西的集合, S代表苏格拉底。那么,所谓“所有的人都是要死的”意味着什么呢?它其实表示了所有人的集合和所有要死的东西的集合的交集是所有的人这个集合,即:
P×M = P
而 P×M = M 这个式子是错误的,因为要死的东西还包括猫、狗、榆树等等。而“苏格拉底是人”意味着苏格拉底这个集合(非常小)和所有人的集合(很大)的交 集是苏格拉底这个集合:
S×P = S
由于从第一个式子中知道 P = P×M,所以可以把它代入第二个式子,即:
S×(P×M) = S
根据结合律,上式等同于:
(S×P)×M = S
但我们已经知道S×P等于S,所以上式可简化为:
S×M = S
现在计算完毕。这个表达式告诉我们,苏格拉底和所有要死东西的集合的交集是苏格拉底,也就是说苏格拉底是要死的。相反,如果认为 S×M等于0,那么结论就是苏格拉底不会 死。再如果,若 S×M等于M,则能推出的结论就是苏格拉底是唯一会死去的东西,而其他任何东西都是不朽的!  

4.计算机的硬件如何实现逻辑运算?

    开关,电磁继电器,逻辑门电路都可以。

      最开始的时候,人们用开关和电路的串并联进行逻辑运算,示例如下图

      

后来人们用电磁继电器来替代开关,因为继电器可以被其他继电器控制而不必用手指控制。

只要将电磁继电器按照一定的方式连接起来,就能构成逻辑门电路,一个"与"门如下图所示:



 

5.如何实现加法机?

加法是最基本的算术运算。所以,如果想要建造一台计算机,必须首先知道如何构造一种机器,它可以把两个数加起来。当你解决了这个问题,你会发现加法正是计算机唯一所做的事情。

同现代的计算器和计算机比起来,本章构造的加法机庞大、笨重、速度慢且噪声大。但
有意思的是构成它的部件完全是前几章学过的电子设备,如开关、灯泡、电线、电池以及可
构成几种逻辑门的继电器。

我们先来看1位的加法是如何通过硬件实现的。计算机采用二进制,所以输入要么是1,要么是0。下图是半加器的原理图,可以计算2个输入的和

0+0=1,不进位

1+0=1,不进位

0+1=1,不进位

1+1=0,进位



 

复杂的计算肯定不能用1个半加器来解决,于是我们想到把8个半加器组合到一起,那么就可以进行更复杂的运算了。原理就是,前一个全加器的进位输出是后一个全加器的进位输入。接下去的每一列数都以这种方式连接。 第八个灯泡和最后一对开关连到最后一个全加器上,连接方式如下图所示: 这里最后的进位输出连到第九个灯泡上。这样,8个全加器就构造成功了。 如下图所示:



 

6.如何用8位加法机构造更复杂的16位加法机呢?


 

 

7.如何利用加法机实现减法?

根据微机原理中所学到的知识,加法机只要增加一个求补数的的电路就可以完成减法运算了。所以,在电路中,就是增加8个反向器。


但是这个电路对所有数都求反,我们只需要在做减法的时候才求反,于是我们需要改进一下。
 



 
 

 

8.触发器的原理是什么,有什么用?

原理下图所示,触发器可以保存信息



 

 

. 闭合上面的开关使灯泡点亮,当再断开时,灯泡仍然亮着。
. 闭合下面的开关使灯泡熄灭,当再断开时,灯泡仍然不亮。

根据触发器的功能,我们将8个触发器组合到一起,就组成了8位锁存器



 

9.如何用加法机和锁存器实现累加功能呢?



 

将8位加法器的输出保存到8位锁存器,再将8位锁存器的输出通过2-1选择器连接到加法器,这样就实现了连续的运算操作。

10.存储器的基本原理



 这种锁存器就是RAM,可以写入/读取数据,将多个这样的存储器集成起来,就可以构成64KB存储器,如下图所示:



 11.如何用开关操作存储器呢?

利用控制面板来操作所有的存储器—写入数据到存储器或验证写入的数据—将更加先
进。这种控制面板用 1 6个开关来表示地址, 8个开关来表示需要输入存储器的 8位数据, 8个灯
泡来显示8位数据,再用一个开关来表示写入信号,如下图所示:



 12.如何将RAM存储器连接到累加器上?



 

这样,我们将需要运算的数据先存放到RAM存储器上,那么就能自动进行计算了。

加入有100个数相加,我们将数据存到0000H-0063H上,通过控制面板,整个计算过程就自动运行了。

 13.如何让加法器自动工作?

假设我们希望先将3个数加在一起,然后另外2个数相加,,最后再把另外3个数相加,这8个数在存储器中的位置如下图所示:

要做加法,需先从存储器中传 送一个字节到累加器中,这个操作叫作装载。第二项所要执行的操作是把存储器中的 一个字节 到累加器中。第三项是从累加器中取出结果,保存到存储器中。最后, 需要有一些方法使自动加法器停止工作。

详细说来,让自动加法器所做的工作如下所示:
. 把地址0 0 0 0 h中的数装载到累加器中
. 把地址0 0 0 1 h中的数加到累加器中
. 把地址0 0 0 2 h中的数加到累加器中
. 把累加器中的数保存到地址 0 0 0 3 h中
. 把地址0 0 0 4 h中的数装载到累加器中
. 把地址0 0 0 5 h中的数加到累加器中
. 把累加器中的数保存到地址 0 0 0 6 h中
. 把地址0 0 0 7 h中的数装载到累加器中
. 把地址0 0 0 8 h中的数加到累加器中
. 把地址0 0 0 9 h中的数加到累加器中
. 把累加器中的数保存到地址 0 0 0 A h中
. 停止自动加法器的工作
 

有时我们也想直接把存储器中的数装载到累加器中或者把累加器中的数保存到存储器中。在所有事情都完成以后,我们还想让自动加法器停下来以便检查 R A M阵列中的内容。怎样完成这些工作呢?

12中组装的计算机,只能按部就班的执行累加操作,现在,为了让计算机更灵活的执行命令,.可以用指令编码来代表计算机的4个操作(加载,加,停止,保存),于是可以用1个RAM存储指令,1个RAM存储数据,如下图:



 

但是这种指令和数据分开存储的方式有个缺陷,不允许在随后的计算中使用之前的计算结果,因为之前的自动加法器执行的过程是,代码RAM阵列和数据RAM阵列同时,顺序的从0000A开始寻址,,代码RAM阵列中的每条指令对应数据RAM阵列中的每个数据存储单元,一旦保存指令使某个数保存了,就不能在再被装载到累加器中。如下图所示:



 

因此,要做一些改变,改进后,每条指令在存储器中占3个字节,第一个字节是指令,后两个字节存放一个16位的存储器单元地址。如下图所示:




 改进后,数据和指令可以存放到一个RAM上了。

但是,又有一个新的问题出现了, 计算机顺序取指令的话,到000CH就停止运行了,如果现在又要累加2个新的数,如何取出0010H-0013H中的数据呢?

我们可以重新输入新的更复杂的指令,不过你肯定不想这么做,怎么省事呢? 在指令中加入跳转(JUMP)指令,用跳转指令来替换停止指令。

14.开关,电磁继电器,电子管,晶体管的联系

这几样东西的存在意义,都是进行逻辑运算的实体,前者不断被后者取代的原因在于成本,响应速度,集成度

15.什么是中央处理器(cpu)?

就是将上面提到的所有的逻辑门电路,加法器(ALU),控制部件等集中到一块芯片上。

16.为什么存储器需要使用堆栈?

堆栈的工作方式是先入后出,这样可以有序保存工作的轨迹,执行完高优先级的任务后,能够回到原来的任务,继续执行。

堆栈是RAM的一部分。

猜你喜欢

转载自542255641.iteye.com/blog/2309513
今日推荐