计算机那点事儿~

软件和网站开发以及相关技术探讨
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#16

帖子 ubuntu777 » 2015-03-29 20:17

这次没有新内容。我们纠正一下上次讲PN结时候的一个错误。

上次讲,PN结加上电压。增加PN结介面形成的电场。让电子回去。这样形成导电。这个讲法是错误的。
正确的导电状况是在加上和PN结内部电场相反的电压。这样在N形硅,也就是标有阴极的一端加上负电。我们讲过,电子是由负极流向正极。N形硅是靠自由电子导电。这样加上的电子就可以补充给电子掉入P形硅的空穴后缺少电子的N形硅。让N形硅导电。P形硅的那一端,也就是标有阳极的那一端。加上的是正电。正电的一端吸收电子。这样,把P形硅端头的电子吸出来,形成空穴。前面的位置空了,后面的电子,顺着前面空穴一个个地跳过去。也可以导电。这就是二极管的正常导通状况。

那么上次讲的增加PN结介面形成的电场相同方向的电场,让电子回去的状况。是二极管被击穿的状况。因为不是顺势,一边给需要自由电子P形硅,加自由电子,让它导电。另一边,让利用空穴导电的N形硅,用一点点力拉出电子,让后面都可以顺着前面电子空出来空穴移动。所以,就需要一个非常强大的反方向电压。往不能形成自由电子导电的N形硅一边使劲加电子。虽然电子过不去。电场压力到达一个阶段后,一下把电子崩过去。崩过去之后。就可以导电了。这种现象叫二极管反向击穿。电压达不到这么强大的时候。反向就是绝缘的。

我们以前讲的绝缘体什么的,都是在一定的电压下不导电。当电压足够强的时候,绝缘体也会变成导体。比如空气是绝缘体。在家里。插座里面就是祼露的带电电线。只要不接触到铜线。电不会通空气电到我们。但是在高压电线附近就非常危险。即使不接触。走近到一定的距离,高压电会穿过空气,形成一个闪亮的电弧把人击倒。比如大自然中的闪电。天空的乌云形成非常高的电压。高到一定的阶段,可以穿过云和大地之间的空气,形成一个闪亮的电弧。把电导入大地。就是雷电现象。

这次就是纠正这个错误。大家好好理解。是不是大家没有自己动脑思考。一周的时间,为什么没有人提出这个错误?是有人发现了,但是不确定,就不敢说?因为人学习一些知识的时候。会先简单地认可别人讲的东西。然后寻求自己理解它。一般不会轻易认为错了。往往私下扭曲自己的理解力,或者保持含混。认为自己的能力有限。谦虚的态度非常赞。所以讲东西的人一定要少错误。否则会给他人造成混乱。这是我的错。向大家真诚道歉。但是要注意。讲东西的人毕竟是人,不是神。错误是难免的。讲的人也可能只是在某些方面,刚好先知道了一些东西。并不代表能力、知识就超过听的人。追求真知识的人不会因为别人由于不懂而提出的问题就不高兴。当别人也思考同一问题,并诚实地提出问题的时候。上帝不会让一个人因为有更多的知识,更加的专业,就自然拥有不用解释,就主宰真理的权柄。两个人是平等。和上帝的智慧相比。人不比蚂蚁更聪明。

有足够的谦虚,有足够的诚实。有足够在内心对他人的尊敬。然后就可以提问。就可以达到更高的阶段。这就是品德帮助学习知识的一实例。往往达到高级的阶段的人,都要具有很多良好的品德。但即使是有很多良好的品德,达到很高的阶段。也可能会做出坏事。所以要谨慎。要谦虚。

子曰:善人吾不得而見之矣,得見有恆者斯可矣。亡而為有,虛而為盈,約而為泰,難乎有恆矣。
孔子说,好人我看不见。能看到有恒心的就可以了。没有却装作有,空虚却装作充实,穷困却装作奢侈,这样就难于有恒。
总的意思是有恒就可以时时发现不足,发现不足就可以进入更好的阶段。自满自足,自以为拥有很多了。不思进取了,这就是放弃的表现。当然孔圣人讲的是追求良善。良善比知识更重要。要一生追求,不可放弃。知识可以放弃,追求良善不可以放弃。

有含混的地方,不要害怕提问。提出错误可以帮助到我。也可以帮助自己。
比如qy117121,第一次发现错误就提出。然后我就改了。

提出自己的理解,指出别人的错误。即使提错了也没关系,也没什么丢脸的。
因为我讲的这些貌似并不特别复杂的东西。已经非常高深了。下次要讲的是构成逻辑非门电路的三极管,其实也就是NPN结。就是两头是N形硅,中间夹一层P形硅的状况。发明这个的人,得到了1956诺贝尔物理学奖。下次,我们就要理解它。用到的就是我们讲过的PN结原理。很多中国现在八九十岁左右的科学家。如果在二三十岁的时候能理解这个。当个院士是没问题的。所以不要害怕提问。 :em01
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#17

帖子 ubuntu777 » 2015-04-02 2:20

三个基本的逻辑门电路还剩下一个非门电路没有搞清楚了。

其实非门电路如果用电动开关来做很简单。在电源和输出端装一个电动开关就行了。只不过这个电动开关不是通电打开开关,而是通电后关闭。我想就是装一个电磁铁。那个开关先通过一个弹簧把它接通。电磁铁一通电,就把这个开关吸起来,就断开了。一没电,弹簧自动弹回去,把电线接通就行。这样就满足了非门电路的计算要求。当输入端有电时,输出端没电。当输入端没电时,输出端有电。输入和输出值刚好相反。
看图
notgate02.jpg
notgate02.jpg (2.96 KiB) 查看 8455 次
A就是输入端,接到一个电磁铁上面,控制那个线路上的开关。上面有+号的那个表示一个电源。out那一端就是输出端。

下面讲用半导体材料来做成这个非门电路。
前面讲用二极管的PN节原理做成了逻辑与门电路。这次要讲用三极管做成逻辑非门电路。
就是一个NPN节。大家看图。
NPN_01.jpg
NPN_01.jpg (10.91 KiB) 查看 8455 次
图中左边蓝色块标有n++的部份是N型硅。大家还记得N型硅是自由电子导电。中间薄一点的绿色部份是P型硅,上面标有一个p,是靠空穴来导电。右边也是蓝色块上标有n+。这一块也是N型硅。左、中、右三个方块中的灰色宽箭头表示三极管接通时电子的流动方向。
三个部份外面都接了带有小箭头的黑线。箭头表示电流方向。我们讲过电流的方向是由正极流向负极,电子的运动方向是从负极跑到正极。接到左侧E端(叫三极管的发射极,英文单词Emitter的头一个字母E)的是电源的负极、低电平。接到右侧C端(叫三极管的集电极,英文单词Collector的头一个字母C)的是电源的正极,高电平。

中间绿色部份P型硅的B端(叫三极管的基极,Base英文单词基础的头一个字母B),如果是高电平(电压不能太高,要高于E端,同时又低于C端,是一个中间电压),就会使NPN结导电。起到导体做用,把E端和C端连通。如果B端是低电平,那么E端和C端之间就断开,中间的NPN结构就是绝缘体。可以通过B端的带电状况,来控制电流。

可能有人会觉得不对了。这个结构起到作用不就是相当于把两个二极管尖头对尖头拼起来,造成哪一边都不可以导电,形成一个绝缘体的效果吗?事情并不是这么简单。中间那个P型硅实际上非常之薄,薄到几个微米的时候,情况又不同的。这个等一下再分析。

这样的结构就叫做三极管,用下面这个符号来表示
trisyb.jpg
trisyb.jpg (2.64 KiB) 查看 8455 次
注意有三个接头。C端是集电极,接电源正极。E端是发射极,接电源负极。中间B端用来控制CE之间的导通状况。通过这个三极管做成的逻辑非门电路,如下图所示:
notgate01.jpg
notgate01.jpg (4.94 KiB) 查看 8455 次
图中V端表示一个高电平的电源。A端是逻辑非门电路的输入端。out端是逻辑非门电路的输出端。最下面是一个低电平端。和V端一样,是不参与计算的,但在实际的电路中要把它接上。工作的原理和我们讲过的与门电路差不多。V端后面接一个电阻。电阻后面接out端。如果out端和最下面的低电平端接通了。out端就保持低电平。如果接不通。out就会保持高电平。上次我们用水做比喻。A端有电,下面这个阀门就是通的。out没压力。A端没电了,那个三极管就是绝缘体。相当于阀门关闭。压力就会从out喷出。out就是高电平。这样输出端的值刚好和输入端的值相反。形成逻辑非门电路的运算结果。注意到A端和三极管的基极之间还有一个R1的东西。是一个电阻。用来减小接到三极管基极的电压。三极管的基极是一个控制端,只要需一点点的小电压。就足够改变三极管的导电状况。起到控制作用就行。

下面来分析NPN结的工作原理。为了方便大家理解,我又想到了一个冰面比喻。前面那个小朋友牵衣服的比喻并不能准确讲出半导体的导电状况。

以前讲过N型硅是加一些有五个电子的磷元素的硅晶体。硅晶体只能约束住四个电子。第五个电子就可以在外面自由漂移。带负电的自由电子依靠和磷原子核中的一个正电荷平衡,异性相吸。靠这一点点微弱的吸力,附着在N型硅上。自由电子并不能象晶体中其它的电子一样固定在一个位置。就好象人站在冰面上。依靠重力,附在冰面上。但可以滑来滑去。并不固定在某一个地方。这就是N型硅。电子从负极流到正极就形成电流。N型硅就好象人站在冰面上。一但加上电源。电源正极的一端,对电子产生拉力。电源负极的一端,把很多的电子往上推。电子都是带负电的。同性相斥。这样一边拉,一边推。就会形成不断的人员流动。形成电流。一旦电子被拉走。失去电子带正电的原子核又会对后面带负电的电子产生吸引力。这样一个接一个,让电子往一个方向流动。

P型硅是加入了只有三个电子的硼元素的硅晶体。这样就形成空穴。而且这个空穴造成硅、硼原子之间不能达到合适的正负电荷平衡。总是一种不稳定的状态。硅原子核和旁边的原子核共享它们之间的一半的电荷才能平衡。如果同是硅原子。大家记得周围四个方向每边两个,一共八个,各享一半。刚好是四个电子平衡原子核中间的四个正电荷。如果是带三个正电荷和三个电子的硼原子掺杂其间。总是无法完美平衡。

这样形成的空穴。上次讲到在PN结交界面上,电子掉在里面,就出不来。但又因为硼原子核只有三个正电荷。没有足够的正电荷来平衡新加入的带负电的电子。所以P型硅带负电。带负电的P型硅会排斥电子。所以在P型硅的一端接负极。给它提供电子。它就更加不导电了。如果给它接到正极,把电子拉走,形成空穴。那么,由于缺少了一个带负电的电子。原子核中的正电荷会吸引电子来补充。空穴就会不断被挤到提供电子的负极的一边。就好象把一个装有空气的水瓶放在水底。打开盖子。这样会有空气源源不断往上冒。实际上是不断有水进入原来空气占据的空间。这样P型硅的导电看起来是空穴往一个方向移动。实际是电子不断地往相反的方向运动的结果。

所以接在中间基极P型硅上一个正极小电压(这个电压低于集电极的正极电压,但也是正极),会导致发射极和基极之间产生电流。这个大家都理解。根据这个知识,发射极和集电极之间还是不会有电流。因为基极和集电极之间的P型硅,同样会吸收电子,产生绝缘效果。问题的关键就是中间这一块P型硅需要做得非常的薄。薄到只有几个微米。这个距离小于电子的扩散距离。这样一旦基极和发射极之间有电流。本来掉进空穴的电子,可以形成一个排斥其它电子的绝缘保护层,阻止电流形成。但由于太薄了。这边电子又是流动的,可以扩散到N型硅上,形成自由电子,流动产生电流。

半导体的奇妙之处在于。一、P型硅必須接正极,拉动电子情况下才能导电。二、N型硅只能提供一些导电的自由电子,不能象接到电源上的金属导体比如铜一样,把强大的正极电压传到P型硅上,把掉进空穴的电子拉出来。

金属材料导体,一旦接上电源正极,所有的原子核都可以失去电子,这样形成众多强大带正电荷的原子核群体。产生拉动电子的巨大能力。N型硅中大部份是硅原子核都不会失去电子。而且少量掺杂的有五个电子磷元素,有四个电子也是不能动的。一个磷原子只多出一个自由电子。失去之后,原子核中也只多出一个正电荷有吸引电子的能力。

另外,注意左侧的N形硅上面标有n++,两个加号,表示掺杂的磷元素较多。因为在负极,要提供较多的自由电子。右侧的N形硅标有n+只有一个加号,表示掺杂的磷元素较少。主要保证在加正极电压的时候,吸力不能太大。不能把掉到P型硅空穴中的电子吸出来。加电就吸出来的话,半导体效应就没有了。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#18

帖子 ubuntu777 » 2015-04-05 22:05

今天回顾一下通过几周的学习,我们了解了多少知识。
一、二进制代表数字,并进行加法运算的规律。
二、全加器需要的功能,以及真值表。
三、三个基本的逻辑门电路:或门、与门、非门的运算规律,以及各自的真值表。
四、如何运用三个基本的逻辑门电路组合,来完成更复杂的逻辑运算。逻辑异或运算。以及逻辑异或运算的运算规律,以及它的真值表。
五、通过三个基本的逻辑门电路以及异或门电路的组合,完成全加器的功能。
六、三个基本的逻辑门电路分别是用什么材料,用什么方法做的。由以下几个知识组成。
1、PN结的材料、以及工作原理,以及二极管的接线、工作方式。
2、用电动开关组成逻辑与门电路的方法,以及线路图。用二极管组成逻辑与门电路的接线方式、以及线路图。
3、组成NPN结的材料工作原理,以及三极管的接线、工作方式。
4、用电动开关组成逻辑非门电路的方法,以及线路图。用三极管组成逻辑非门路的接线方式、以及线路图。

可能有些人会对第六个知识里面有关半导体硅材料的内容很感兴趣。我们只是用了比喻来说明大概的原理。材料在原子、电子这个级别上,各种力的交互做用产生的结果,尚未十分清楚的被人类认知。虽然科学上对宇宙间的四个基本力,重力、电磁力、强作用、弱作用已经发展了较为完善的理论。对于粒子群体的运动状况也可以利用流体力学加热力学,建立数学模型进行分析。事实上,科学家对物质是否是由最基本的粒子组成也搞不清楚。粒子不断打破到最后可能发现,构成物质的最基本的东西不是粒子,而是空空如也,啥也没有。不但粒子搞不清,更奇葩的连我们存在的空间,“啥也没有”是啥也搞不清。 :em04 当然在搞不清楚的时候,还有相对论和量子力学。如果有很好的数学知识,可以了解清楚这些理论(有人想了解吗?:)。但应该知道这些科学理论知识是建立在假说(presumption)之上。就是建立在猜想之上。了解更多的科学知识,保持谦卑的心,诚实面对自己和我们的宇宙,但不要相信科学。几乎所有科学上的重大进步都是在不相信科学的前提下实现的。对微观事物和基础理论的诚实认识才可能带来CPU速度能耗方面的重大进步。诚实-这一道德的力量,在科学方面的权柄超过即使是已经非常成熟的科学理论。
三极管有放大作用,在基极的一个小电流的变化,可以控制发射极和集电极之间大电流的变化。比如,电脑的耳机插孔,里面电流的变化,可以让耳机工作,让我们听到音乐。耳机并不要外接电源。也可以接到有外接电源的大功率的音箱。这点小小的电流变化,接到音箱里面三极管的基极。来控制大电流推动大喇叭工作。听到的音乐是一样的。但声音大了很多倍。这种功能也用在收音机、电视和手机各种无线接收设备上。空中的电磁波会令到金属材料中产生非常非常微弱的电流。把带有非常微弱的电流的金属接到三极管的基极,可以一步一步通过三极管放大,用来接到喇叭或者显示屏,就可以听到声音,看到图像。
基本的逻辑门电路通过各种组合,可以用来发射出想要的电信号。通过导线,或者通过电磁波发射出去。与其它的设备通信。接收设备也可以通过逻辑门电路的组合,把收到的电信息处理后送到,电驱动的发声喇叭和发光或者反射光的显示屏设备。最终转化成我们人眼可看,人耳可听的信息。

最后讲讲逻辑或门和逻辑与门电路的一种功能。

先是逻辑或门,看图
orgate01.jpg
orgate01.jpg (7.55 KiB) 查看 8192 次
三个或门电路连在一起。左边是输入端,最右边是输出端。下面三个标有#1、#2、#3的三个脚可以起到控制作用。假设信号要从最左边传到最右边这个输出端。下面1、2、3三个脚必须保持为零值。如果任意一个脚为1。那么右边输出端就为1。对左边输入端的信号变化没反应了。信号就被阻断。

逻辑与门,看图
andgate01.jpg
andgate01.jpg (7.4 KiB) 查看 8192 次
同样方式连接。编号1、2、3的三个脚必须全是1,信号才可以从左传到右。也就是最右端输入端的信号变化和最左端上面那个脚一致。如果1、2、3中有一个是零值。那么右端的信号就总是为零。信号传输就被阻断。

大家对三种逻辑门电路的工作方式要非常清楚。这样才能知道三种逻辑门电路的各种组合处理后的信号输出端的结果是什么,会怎么变化。这对于理解CPU如何工作非常重要。大家复习一下。下次要用到四个逻辑门电路组一个重要的东西。我估计即使您现在认为自己已经很了解了。下次看到组合图之后,可能还是会糊涂。不过没关系。我会为大家解释。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
elseJun
帖子: 5
注册时间: 2015-01-13 18:24
系统: ubuntu
送出感谢: 1 次
接收感谢: 0

Re: 计算机那点事儿~

#19

帖子 elseJun » 2015-04-07 11:40

好棒啊 帮我复习了一遍 计算机基础知识以及高中物理~化学 看楼主已经更了一个月了 好棒 一定会看下去 :em09
头像
elseJun
帖子: 5
注册时间: 2015-01-13 18:24
系统: ubuntu
送出感谢: 1 次
接收感谢: 0

Re: 计算机那点事儿~

#20

帖子 elseJun » 2015-04-07 11:41

好棒啊 帮我复习了一遍 计算机基础知识以及高中物理~化学 看楼主已经更了一个月了 好棒 一定会看下去 :em09
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#21

帖子 ubuntu777 » 2015-04-08 20:34

三个基本的逻辑门电路有一个还没有讲完。就是或门电路。上次讲到只要将输入端和输出端的线简单连在一起就可以满足输出端的要求。但实际并不是这么简单。
实际的二极管逻辑或门电路图如下:
Diode_OR_Gate..jpg
Diode_OR_Gate..jpg (11 KiB) 查看 7948 次
大家想想为什么?逻辑门电路在使用中并不是一次性的。电路除了要保证根据不同的输入端值得到输出端的结果之外。还要保证输入端的初始值不受其它输入端或输出端的结果的影响。就是说原来输入端的值为0的。完成计算后还是0。原来输入端是1的,完成计算后,还是1。所以看图中A、B两个输入端都加了一个二极管。这样当另一个输入端为1、高电平时,自己这边如果是0值的话,还是继续保持0值。通过二极管可以阻断反向电流。

希望大家都明白了逻辑门电路的运算规律。要十分清楚。必须是100分。而且要熟练,这样才可以理解清楚后面通过它们连接成的复杂电路。

如果大家都认为很简单,已经非常清楚了。来看看下面这个图。虽然只使用了四个逻辑门电路。可能还是会有些难理解。
flipflop.jpg
这个电路叫flip-flop。这个电路的功能是:当输入端Input S为1,并且输入端Input R是0时,输出端Output的结果确定为1。当输入端S为0值,并且输入端R为1值的时候,输出端Output的结果确定为0值。当输入端S和R的值都是1的时候,输出端的值是不确定的。如果输出端Output原来是1,那就还是1。如果原来是0,那就还是0。大家好好动脑筋理解一下这个电路。今天没有别的新内容。这个电路非常重要。要以这个电路为基础,来做存储数据的东西。大家看到,它可以接收一个设定的值0或者1。然后还可以把这个事先设定的值,保存在里面。所以先花时间理解清楚。要不然后面就不好继续。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#22

帖子 ubuntu777 » 2015-04-12 20:47

上次讲了flip-flop电路。在了解清楚它的功能之后。我们对它进一步加工,一步步改进。最终让它成为一个能受控制的存取数据的东西。
看图
latch.jpg
在左边两个输入端各加了一个逻辑或门电路。两个逻辑或门内侧的两个输入端接一起,接到一根标有Freeze/Copy#的输入线上。外侧的两个输入端,上面一端直接接到了一个Input输入端,下面一端通过一个非门电路,也连到那个输入端Input。注意Freeze/Copy#,这个写法。Freeze是冻结的意思。Copy是拷贝的意思。这个写法表示如果这根线上的值是1的话。就完成Freeze这个功能。如果不是1,就完成后而标有#的那个单词讲的功能。也就是Copy。
大家看一下。如果Input的一端是1,它会上面是1输入上面逻辑或门电路的一个输入端,下面变成0后,输入下面逻辑或门电路的一端。如果Input的一端是0,那刚好反过来,上面是0,下面是1。这样在Freeze/Copy#一端的值是0的情况下。可以把和Input一端同样的值传送到Output一端。如果Freeze/Copy#一端的值为1的话。不管Input一端的值是什么。flip-flop电路的两个输入端都会是1。这样Output一端的值就保持原有一数值不变。被锁定。这样的一个东西,就叫做锁存器。英文名叫latch,这个单词是插销的意思。这个类型的叫D-latch。D锁存器。
下面就是把实现这个功能的电路封装起来,只留三个脚的图
dlatch01.jpg
dlatch01.jpg (11.2 KiB) 查看 7770 次
左边的Data In表示数据输入端。右边的Data Out一端表示数据输出端。中间朝下Freeze/Copy#一端,表示冻结或者拷贝数据的控制端。

继续对这个D Latch进行加工。
看图
dlatch02.jpg
dlatch02.jpg (11.52 KiB) 查看 7770 次
下面的控制端接了一个非门电路,后面又接了一个与门电路。然后与门电路的两个输入端,其中一个标有W/R#,另一个标有Sel。W/R#这个写法,W代表英文单词Write,意思是写的功能,也就是写入数据功能。当这一端的值是1的时候,就实行写功能。如果不是1,就完成后来标有#这个符号的字母R的功能。R代表英文单词Read,是读的意思,代表读取数据的功能。Sel这一端代表英文单词Select,意思是选择,具有选择功能。如果选择这一端的值是0,代表这个存数据的单元D Latch没有被选择。那么,与门电路输出值总是0。然后由后面的非门路把这个0变为1。把这个锁存器锁定,保持它的值不变。如果被选中了,Select一端的值是1。还要看上面W/R#一端的值是什么。只有当W/R#一端的值也同时是1,允许进行写入数据功能的时候。与门电路才能输出1值。由非门电路把这个值变为0,对锁存器解锁。允许Data In一端的数据进入。

好了,现在大家仔细想清楚各种情况。下次还要对这个继续加工。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#23

帖子 ubuntu777 » 2015-04-15 16:38

为了进一步加工这个存储的东西。要用到一个新的门电路。叫三态门电路。
三态门电路
看图
Tristate.jpg
Tristate.jpg (5.87 KiB) 查看 7618 次
图左边是一个三态门电路的符号。左边A是输入端,右边C是输出端。中间B是控制端。图右边是表示它实现的功能。就好象A、C之间有一个开关。当B端是低电平0值的时候,相当于开关断开。A端的值不能影响到C端的值。C端的值也不会对A端产生影响。起到中间断开的作用。当B端是高电平1值的时候,相当于开关接端通。可以把输入端A端的值传送到输入端C。让C端的值和A端的值相等。这个图里面B端那根控制线是朝上的。下面我们用到的三态门电路中这根控制线朝下,一样的功能,就是方向不一样。

三态门电路的真值表如下:表中的X是表示断开的意思。
x┌──────┬──────┬──────┐
x║控制端Bxx│输入端Axx│输出端Cxx
x├──────┼──────┼──────┤
xxxxx0xxxxxxxx0xxxxxxxxXxxxx
x├──────┼──────┼──────┤
xxxxx0xxxxxxxx1xxxxxxxxXxxxx
x├──────┼──────┼──────┤
xxxxx1xxxxxxxx0xxxxxxxx0xxxx
x├──────┼──────┼──────┤
xxxxx1xxxxxxxx1xxxxxxxx1xxxx
x└──────┴──────┴──────┘
通过这个三态门电路的加入,对上次的加工过的D锁存器做进一步加工。
看图
onebitmem01.jpg
把Data In数据输入端和Data Out数据输出端连在一起了。共用一根线。在输出端和锁存器之内加了一个三态门电路来进行控制。这个三态门电路的控制端,还是根据W/R#,写/读控制端,和Sel选择端的状态来确定。就是说通过这两个控制端的状态来决定什么把那根线断开,让两边互不影响;什么时候把那根线接通,让锁存器里面的数值能传到输出端。
大家看看Sel选择一端直接通过与门电路接到三态门电路。如果Sel一端的值是0,表示这个存储没有被选中。那三态门电路肯定是断开状况。如果被选中了,Sel端的值是1。还要看W/R#端的状况。如果W/R#端的值是1,表示这个时候要往这个存储单元写入数据。这个值1通过一个非门电路后变为0,再接入与门电路。导致三态门电路还是断开状况。这样Data那一端来的数值,可以被存入锁存器。断开之后,原来这个锁存器中存的值是什么,都不会影响Data端。内容直接被改变为和外来的Data端数值一致。如果,在Sel端的值是1,被选中。W/R#端的值是0。表示要从这个存储单元读取数据的时候。W/R#端的0值,通过那个非门变为1值。然后和Sel一端的1值一起通过与门电路,输出1值到三态门电路的控制端,把开关接通。这样锁存器中存取的数值就被放到了Data端。可以被其它电路读取使用。

做好了之后,把它封装起来。形成一个存取一位数据的内存。
看图
onebitmem02.jpg
onebitmem02.jpg (6.85 KiB) 查看 7618 次
怎么把多个存储一位数据的内存组成一个多位存储单元。如何给每个多位存储单元安排地址,来选择读取、或者给它们写入数值。下次揭晓谜底。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#24

帖子 ubuntu777 » 2015-04-19 21:10

把四个1位的内存组在一起。看图:
4bitmem01.jpg
所有W/R#端连在一根线上。所有的Sel端联在一根线上。这样一次可以控制、选择一个4位二进制数的读写。4位二进制叫做半字节nibble。一个字节Byte是一个8位的二进制。现在的内存大小是用Byte来计算。比如1K内存就是1024个字节。1M内存就是1024*1024个字节。1G内存就是1024*1024*1024个字节。我们只是为了讲清原理。所以简单一点,只用半字节来说明问题。

4位内存组好了。封装起来。如图:
4bitmem02.jpg
左边留两个控制端。上面留4位数据端。可以用来读取和写入一个4位的二进制数。位的英文单词是bit。4-bit就是4位。Mem是英文单词Memory,记忆,内存的意思。

然后,再把很多这样的四位内存组起来。看图:
4bitmem03.jpg
最左边两根线上面写了2-Bit Address Bus。翻译成中文是2位地址总线。Address是地址的意思。Bus这个单词大家知道是公共汽车的意思。在计算机领域是总线意思。总线就好象是一条长江。各个小支流,小河都汇总在这个地方,或者从这里分流出去。电脑把各分枝线路的电信号汇总在这里,或者从这里分流出去的总路线就叫Bus。这是2位地址总线。就是2根代表传输地址信号。通过不同的逻辑门电路连到4个4位内存的Sel端的线。每根线上也是用高电平代表1,低电平代表0。两根线A1、A0。一共有四种不同的带电方式。两个同时低电平00。这样,连接最上面一个4位内存的Sel端的两个非门电路会把两根线上的0都变成1,然后接入一个和门电路。让Sel端的值成为1。让这个内存单元被选择。A1、A0的的所有其它的带电状态都不会令到这个4位内存的选择端为1。A1、A0还有其它的三种带电状态,分别是01、10、11。其它的三个4位内存,分别通过各自Sel端的逻辑门电路识别这些状况。保证各自只在其中一种状况下Sel端为1值,其它状况都是0值。

中间有一根线标有Control Wire。Control是控制的意思。Wire是线的意思。合起来就是控制线的意思。一根线接所有4位内存的W/R#端。来控制所有的内存的读、写状况。大家记得,如果Sel端的值不为1。读写端的信号对内存是不起作用的。所以只用一根线就可以了。

右边标有4-Bit Data Bus的4根线叫4位数据总线。大家看所有4位的内存的D3、D2、D1、D0都连到这根数据线上。如果要读、写数据。每次通过地址线选择一个内存单元。可以把需要的数据放到数据线,让其它连到这根线上东西可以利用这些数据。也可以把其它东西处理计算后的结果,通过这4根数据线,写入内存里面,保存起来。

有些人看到这里可能很欢乐了。想起我们前面讲的全加器也是通过输入的几根线的信号,就自动输出几根的数据计算结果。只要想办法,把这些线按规律连起来。就可以形成一个获得数据,并自动计算的机器。

而且,不知大家注意到没有。对数据读、写。内存地址的选择和控制也是通过线路上的高电平、低电平的1、0信号来完成。把事先组好的1、0代码,存入内存,然后送到这些控制线路,有规律地处理内存中数据流向和计算结果,就可以完成大量的各种计算。

要完成所有这些,还有很多问题要处理。怎么把内存中的数据送到和全加器或者乘法器等等其它计算功能的东西。怎么处理计算后的结果。除了要有各种不同功能的组件合理的连接方式之外,还要了解清楚处理数据的步骤。要知道怎么让各种电路和线路在不同的时间,完成不同的工作。让所有的这些工作自动完成的源动力,就是依靠象一闪一闪的信号灯一样的时钟源不断发出1、0电脉冲。然后通过一系列的逻辑门路组合处理,再配合编好的1、0程序代码,运算就可以完成了。听起来很欢乐吧?那个电脉冲的频率越高,也就是通常讲的CPU主频越高,计算速度就越快。注意这个频率发生器在主板上,不在CPU里面。CPU主频高,只是讲CPU可以在高主频下正常运算,不会被烧坏。只要把这根高频闪动的线,接入CPU就可以了。什么样的物质会导致电脉冲有规律的变化。怎么把最简单初始的不断重复1、0脉冲变成推动各个运算控制电路都自动合理的运作的方法。以后慢慢给大家揭晓。

另外,了解了这些知识大家可以算一下自己的内存有几根脚。内存给每个字节8位数据一个地址。首先数据线要8根。如果是4G的内存,要几根地址线?几根地址线控制的内存单元数目就是2的几次方。比如1G就是1024*1024*1024个字节。用这个数字对2取对数就行了。可以在计算器上先用自然对数对1024*1024*1024的结果取对数。然后再除以2的自然对数。ln(1024*1024*1024)/ln2。不要忘了逻辑门电路还要电源线。还有接地线。说不定还有保护线。大家可以数一数,算一算。或者查一下资料自己了解一下,看看自己的计算结果和实际的内存脚的数目是否一致,为什么?
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#25

帖子 ubuntu777 » 2015-04-23 0:54

知识了数据怎么存储,怎么传递,怎么用全加器进行计算。我们现在组一个CPU。
看图
mu00.jpg
这是一个CPU和内存连在一起工作的示意图。
标有PC是一个由多个能1位数据的单元的多位存储单元就是我们前面组过的。-寄存器的一种。叫程序计数器(Program Counter)。
标有ALU的东西被称为算术逻辑单元。记得我们前面讲的全加器吧?可以接入A、B两个数字,计算之后可以输出它们的和。这个梯形下面左右分开的就代表一边输入A,另一边可以输入B。计算之后,结果从上面输出。(Arithmetic Logic Unit)。
标有ACC的也是一个存储单元-寄存器的一种。把通过ALU计算后的结果保存并累加起来。叫累加器(Accumulator)。
标有IR的叫指令寄存器。也是一个存储单元。用来接受内存里面存好的一个个指令。(Instruction Register)。
最右边的标有Memory就是内存。我们上次讲过。由很多个存储单元构成。每一个单元分配有一个地址。有地址线,还有读写控制线和数据线。
图最上面的一条横线,标有address bus就是地址总线。只画一根,其实很多根线组成。数量由内存中存储单元的数量决定。
最下面的一条横线,标有data bus就是数据总线。也是只有一根,代表很多根。位置有几位,就有几根线。
其它的只有一个存储单元的寄存器,也有读写控制线,也有各自的Sel端这些统称为控制线,另外存储单元也有数据线。和内存不同这些寄存器的数据输入和输出线是分开的。那个三态门用来控制它们和数据总线的连接和断开状况。这些三态门控制的数据线接到数据总线或地址总线上,可以按要求断开,或连上。图中PC和IR都接到地址总线上。因为它们存储的数据要用来选择内存单元。这些存储单元的控制线,也分别按位排在一起。由IR寄存器中的数据的1、0值来控制各自的有电,无电状况。根据指令的要求,让需要的部件协同工作。看那个IR。左边标有control的箭头就是控制它们。另外IR也可以选择内存的地址,控制读写。

程序就存在内存里面。每一个存储单元里面装一条指令。里面有很多的1、0值。来指挥各个部件,提供数据,完成想要的计算工作,并且把结果存到相应的内存单元。一条条的指令在内存里面按地址顺序排好。等待执行。

比如我们用的电脑。事先都有程序放在ROM(Read Only Memory只读内存)里面。一条条的指令从地址0开始排队放好。一开机。那个程序计数器PC的值都是低电平。都取0值。把第一条指令读入CPU。这些程序可以驱动各种设备,在完成计算机各种设备的自我检查之后。按BIOS里面设定顺序,查找启动盘。如果找到了,把硬盘或者光盘中MBR(Master Boot Record)主引导记录中的512字节的程序读入内存之中。然后把PC中的数据调整为那个地址就不管了。然后,所有工作就由操作系统完成。至于操作系统怎么工作,有人想知道吗?Linux的内核工作原理也值得一学。不过我们先要对硬件有充分了解。要不然你不会知道操作系统要做什么工作,应该怎么做。


CPU执行指令有4个步骤。
1、取指令
2、解码指令
3、取操作数
4、执行指令

下次我们来看这些步骤怎么进行。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#26

帖子 ubuntu777 » 2015-04-26 18:44

CPU里面还可以用其它各种方式来连接ALU和各种存储单元。有更多的寄存器。不同的总线方式等等,来加快处理数据的速度,或者是为了完成更复杂的计算。我们这个图只是一种。目的是尽量简单。让大家知道CPU处理数据的原理就可以了。
下面来看处理数据的步骤。
第一步是取指令。看图
mu01.jpg
图上面的红线和下面的蓝线是表示工作的路线。灰色的表示不工作的线路。
第一步,把PC里面数据放到地址总线(address bus)上面。就是上面的红线。PC里面是地址的数据。存储器里面的数据和地址线接通,怎么控制到相应的存储单元在讲怎么组内存的时候讲过了。地址数据放到地址线上,内存读取线打开,内存中那个对应存储单元中的数据就和数据线(data bus)连通了。同时IR存储单元的W/R#控制线的写功能打开。这样IR存取单元中的数据,就是内存中某个单元中的数据一致了。这个数据就叫做指令。可以用来控制下一步的动作。控制完成怎么样的计算。你想要完成怎么样的计算,就要把相应的编码就是10等数据先放到内存里面。很多条有规律组成,可以完成特定功能的指令就叫程序。现在指令由内存跑到了IR里面。第一步就完成。

第二步、指令解码。看图
mu02.jpg
第一步完成之后。根据时间脉冲的变化。就是有一个有规律的由1变到0再变回1再变到0的线。这根线接到很多的逻辑门电路。它由0变到1,很多相应的线路上的数据状况也发生变化。相应的控制线路上10值的变化。就导致就第二步状况形成。
还是红蓝色标出的部色工作。IR变红。由写入变为读取。里面存好的由内存而来的数据。现在可以影响控制线了。
IR里面的指令。通过控制线,要经过一系列的逻辑电路来调整。来确定什么时间在哪一步,什么存储单元的读写功能打开,以完成指令需要的功能。
注意ALU有线连到地址线上。PC存储器依然是把里面的数据连到地址线。ALU的一端接收到这个地址数据,然后根据IR的数据,增加一个K值。然后,把原数据加K之后的结果。再存到PC存储器中。
在ALU的数据进口或者出口要有一个缓冲存储器。因为PC存储要先读出数据。然后,变为写入状态。才可以接收结果。图里面没有画出来。这个缓冲存储器要么在ALU的进口。先存好。等时间脉冲一变。这个缓冲存储器就连通ALU,ALU连PC,PC写入打开。这样PC里就存入经过和IR存储中提供数据,进行加法运算之后的结果。
通常来说,PC存储器加1就可以了。这样内存单元中的这个指令完成之后。就按顺序执行后一个内存单元中的指令。但有的时候。会跳到地址很远的其它内存单元中取下一个指令。就看IR中指令是怎么安排了。PC中的值改变之后。第二步就完成。

第三步 取操作数 看图
mu03.jpg
根据时间脉冲变。各控制线路再次跳转。还是红蓝线的部分工作。
IR中的地址数据放到地址线上。控制读取内存中存有数据的存储单元地址。把相应的数据放到数据线上。这个数据可以被ALU读取,影响到ALU的一个进口。或者直接进入ACC累加器。
数据放到数据线上。第三步完成。

第四步 执行指令 看图
mu04.jpg
根据时间脉冲的变化。IR中的控制数据,到现在又被释放出来。影响到ALU和ACC。让ALU左边进口接受到的缓冲数据和右边进口缓冲的ACC中的数据(可能是上一次指令的运算的结果,也可能是新接受的内存中的数据)进行计算。结果存入ACC。这样就完成了一个指令。

第五步 写回内存 看图
mu05.jpg
根据IR中的地址数据。内存中的某个存储单元被选取,并且写入状态打开。ACC单元中的数据被放到数据线上。

这就是指令执行的五个步骤。并不是每个指令都执行这五个步骤。有的指令进行运算,在多个指令计算完成之后。才会把结果写回内存。有的指令可能就完成跳转到某一个内存地址。有的指令就写一个数据进ACC。

大家注意,指令要完成各种工作。而且要分时间段来控制相应的线路。指令怎么编码和解码,时间脉冲是什么?它怎么完成控制功能。电路怎么记录时间。大家可以想一想。内存中的数据怎么到硬盘,硬盘中的数据怎么就变成01值的电信号了。人对键盘的点击怎么被CPU认识。键盘怎么区别各种不同的击键。电脑屏幕怎么可以显示不同颜色的图片和字符。CPU怎么控制它们。计算机之间怎么通讯的。怎么把内存中的数据,怎么变成有规律的脉冲放到网线上。电脑又怎么把网线,或者无线设备上的这些脉冲变成数据。最终影响到我们的屏幕。这些外部设备的问题,也可以先动动脑筋想一下。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#27

帖子 ubuntu777 » 2015-04-29 18:06

上次讲到CPU运行指令需要几个步骤。要分几个时段完成。所以在了解各种电路怎么存储数据还不够。
还要了解这些电路怎么来认识处理时间。
其实电路里面的时钟就是有规律的时间脉冲。好象一闪一闪的灯。一个高电平,灯亮,一个低电平,灯灭。
要让电路自动产生这样的效果。要用到石英。当然也可以用别的方式。比如RCL电路。我们就讲石英。
看图
640px-Quartz_Brésil.jpg
这个就是石英晶体。石英可以用来做石英玻璃,做成杯子什么的。
石英晶体不导电。但是它有一种压电效应。什么是压电效应呢?就是有些物质在受压的状况下。会变形产生电。本来物质中正负电荷都是自然平衡。相互之间通过力,和彼此间的距离保持住一种平衡状况。形状一变,有些电荷就会被挤到表面。大量的电荷一起挤到表面就产生电能。就称为压电现象。是机械能转化为电能的一种方式。

石英除了具有压电效应之外。如果给石英加点电压,它会产生变形。一变形,就会产生压电现象。产生电流。这样在电路中接一片切得很薄的石英。本来是不导电的。一端加上电压,它就产生变形,变形之后因为压电效应,表面产生电荷,被另一端的电线接走。就产生电流。前面讲门电路的时候讲过,电压有点象水压,如果另一端是接通的,压力就会释放掉。电一接通,电压就没有了。然后石英又回复到原来的状况。压电现象消失。电路断掉。断了之后,形成电压。电压又令到石英变形。这样不断的重复。重复的频率可以达到几兆赫兹MHz。赫兹是频率的单位。一赫兹是就一秒种之内重复一次。1MHz就是一秒种之内重复一百万次。
大家看图
220px-Inside_QuartzCrystal-Tuningfork.jpg
220px-Inside_QuartzCrystal-Tuningfork.jpg (9.29 KiB) 查看 6784 次
这是石英表里面的石英。那个分叉的东西就是一小片石英。做成这样就是让它很容易振动。后面接了两根电线。一端给它加电压,另一端出来的就是不断在高电平、低电平转换的电信号,经过处理放大就可以形成可以用的时间脉冲。
下面是一个大一点拆开之后的石英共振器。外面本来是有壳子保护。看图。
640px-InsideQuartzCrystal.jpg
两大片圆金属,把一片透明的石英夹在中间。做得很薄。可以让它变形。变形后又可以从表面收集很多的压电效应产生的电荷。

石英的振动的频率和怎么切割它,它的形状有关。而且石英的这个频率很固定。受温度变化的影响并不大。所以可以用来做石英表和石英钟。

下面是一个有壳子的石英共振器。上面标有它的频率是16MHz。大家如果看过电脑的主板,会发现上面有这种东西。只要把它产生的时间脉冲经过处理,通过一根线接入CPU就可以。所以CPU里面不用安装它。下面的图是它的电路符号。
200px-16MHZ_Crystal.jpg
200px-16MHZ_Crystal.jpg (5.78 KiB) 查看 6784 次
Crystal-oscillator-IEC-Symbol.svg.png
Crystal-oscillator-IEC-Symbol.svg.png (450 Bytes) 查看 6784 次
大家想想,这种一闪一闪的信号,只能表示两个时间。对于电路来讲,只知道高电平和低电平的不同。我们会数数的人,可以通过计数闪了多少次,知道过去了多少时间。如果电路不会数数的话。第一个时间高电平,第二个时间低电平。第三个时间又是高电平。它就不懂第一个时间和第三个时间的区别。要通过一个复杂的逻辑门路来让电路计时。下次告诉大家。然后大家就知道会石英电子表怎么工作。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#28

帖子 ubuntu777 » 2015-05-03 19:04

这一期是需要超级动脑的一期。如果觉得不行,可以略过动脑部分,知道结果就可以了。
时间脉冲就是一根在固定的时间不停重复高电平,低电平变化,也就是不断重复进行1、0值变化的电线。
要知道怎么用这根电线来表示时间,首先要知道时间的表示方法。看电子手表或电脑上显示的时间的格式。比如是9:12:30就代表早上九点十二分三十秒。大家如果仔细看一下表。就会发现它的规律。首先是最右边一位表示秒的数字。可以不断变化显示出0-9十个数字。每个数字出现一秒,然后就变成下一个数字。从0变到9,然后重新由0开始重复。从右边数第二位数字是秒种的十位数字。可以显示出0-5六个数字。也是由0变化到5。但每个数字出现停留的时间是十秒钟,才变化为下一个数字。这十秒种也就是最右边秒钟的个数字完成一次0-9变化的时间。相当于秒种每完成0-9的一次重复,就进一位。然后,右边第二位,秒钟十位数字完成0-6的一次重复。就进位到右数第三位,分钟的个位数。这个数字就停留一分钟,也就是六十秒。才发生一次变化。以此类推。越左边的数字,变化一次停留的时间越长。通过读取不同位数上的数字。我们就可以知道时间。
电路计算时间的方式也是一样的道理。只不过是二进制。因为每一位,就是每一根电线,只区分高电平、和低电平两种方式,只有1、0两个值。如果能让高一位上1、0值停留的时间等于低一位1、0停留时间的两倍。这样把很多位组合起来。通过读取每一位上的值,就可以知道时间。
怎么做到?到了需要大家动脑筋的时间了。看图。
JK_flip-flop_NAND.png
这个东西叫做JK flip-flop。就是JK触发器。左边有三个输入端。上面是J端、中间是clock端,代表经过石英共振器处理之后,不断进行高电平、低电平变化,持续发出1、0变化值的时间脉冲线。下面是一个K端。然后接的几个东西就是我们讲过的逻辑门电路。大家看这个圆头的是逻辑与门电路。但是有三个输入端。圆顶上还有一个小圈。这个小圈代表与门电路的输出结果后加了一个非门电路。这个小圈代表非门电路。三个输入端就是代表三个输入端同时为1时,输出结果1值,然后马上把这个1变成和它相反的零值。这就是头顶加一个小圈的三个脚与门电路的功能。然后,右边的Q和Q代表两个输出端。
让J、K两端总是保持高电平,总是1值。然后clock端就是不断变化的1、0值。动脑分析一下输出端的结果。输出端Q和Q端的值总是相反的。Q是1,Q就是0。然后,它们的值会在clock端的值为1时交换,在0值的时候会维持原来的状况。这样一个本来1值马上就变成0值,不断变化的时间脉冲,输出之后就慢了。输出端在clock输入端变为0值的时候,不会变化。要等到下一个1值到来的时候才变化。和电子表0-9完成一个周期进行十进制时间进位一样。只不过是完成二制0-1时间周期,进行一个二进制时间进位。如果把这个慢了之后的输出端后面再接一个这个JK触发器,然后就更慢。然后一个比一个慢。把每一位JK触发器的输出端组合起来,就形成多位二进制数字的时钟。
通过这个二进制数的数值。把每一位都牵出来一根线。就好象前面讲过的,根据地址线总线上的值,对应控制不同内存单元的方式。就可以用来取不同时段需要的时间值,或控制多个三态门电路来开闭多位数据总线、地址总线。
上次由 ubuntu777 在 2015-05-13 19:40,总共编辑 2 次。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
ubuntu777
帖子: 249
注册时间: 2007-03-28 18:40
送出感谢: 4 次
接收感谢: 3 次

Re: 计算机那点事儿~

#29

帖子 ubuntu777 » 2015-05-06 22:19

J-K触发器做好了。也和以前做内存的时候一样,就把它封装起来。
看图:
JK_flip-flop_01.jpg
JK_flip-flop_01.jpg (7.63 KiB) 查看 6315 次
左边三个输入端J、Clk、K。中间Clk代表Clock时钟脉冲。右边是Q和Q两个输出端。中间大写的粗体FF代表flip-flop,就是触发器的意思。

然后,按上次说的把四个这样JK触发器连接起来。形成一个四位的同步计数器。
看图:
jk_ripple_counter_01.jpg
jk_ripple_counter_02.jpg
注意几个特别的地方。首先是Q输出端取消了。再就是Clk输入端加了一个小圆圈。这个小圆圈代表一个非门电路。就是Clock时钟脉冲输入先通过一个非门电路,然后再进入JK触发器的Clk端。为什么要这样?大家记得JK触发器是时钟端是1值的时候,Q端的值才发生改变。在全加器的时候讲过,二进制的数字进行计算的时候,低的一位如果是0,加1之后,首先自己变1,不用进位。自己本位变1之后,然后再加1,自己变0的时候,才发生进位,自己变0的同时把比自己高的一位变为1。所以加一个非门电路之后,时钟脉冲输入是1的,通过非门电路变为0,这样就不影响输出端Q值。变为0时,通过非门电路进JK触发器,把高一位的值改变。如果高一位原来是0,就变为1。如果高一位原来就是1了。把高一位变为0的同时,这个高一位输出的0值还可以通过非门电路触发更高位的输出端变化。这就产生加1进位的效果。
然后,四个FF触发器按FF0-FF3编了号码。输出端也按Q0-Q3编了号码。所有的4个触发器的JK端都连到一起通过一个输入端得到1值。Q端除了接出来,还要分出一根线提供给下一个JK触发器做时钟脉冲输入端信号。

下面的一个图是Clock时钟脉输入的波形图,和对应的Q0-Q3端的波形图。
波形图由高起来,低下去的部份组成。高起来的一段就代表高电平,表示1值。低下去的代表低电平,表示0值。上面1-16四个数字,分别对应Clk输入端的出现的第1个到第16个高电平状况。Q0后的波形图,对应Clock第1个高电平之后的低电平就凸起。而Q3后的波形图,对应Clock1-8的变化都不变,保持低电平,一直是直线,没有变化,在第8个高电平之后的低电平才凸起。然后一直在高位保持直线。
对应下面Q0-Q3。相当于四位二进制数字。16个时间。大家根据波形可以看第1-第16个时间的Q0-Q3值。波形线最左边的时候都是低电平,0000。到最右边都高起来,代表1111。

要最终做成一个计算机,还要学习一些细致的知识。还要费很多脑筋和耐心。大家现在已经有很大进步了。相信能看到这里的人,不光是知识增长了很多,思考问题的方式也有了进步,解决问题的能力也得到了增强。但能得到最后的收获的人,还要有一个重要的素质。就是耐心细致。就好象爬山。最初很开心,很新鲜,很兴奋。然后,努力向上,可以不断发现新东西,虽然花费了体力,也觉得不错。再然后,仍然是花体力,但周围风景的新鲜的程度,新发现没那么多了,山路很长要走,也没什么特别。现在我们就是达到了这个阶段。认为自己有了一些的登山能力,获得了一点登山的体验就足够,不想收获达到顶峰的快乐的人。现在下山是个合适的时机。好好考虑一下自己的能力和毅力,觉得再继续努力,也没可能坚持到登顶。再花时间和头脑是得不偿失的。因为这一段路虽然很长,但除了消耗头脑,做很多细致重复工作。新知识,新能力的收获比以前其实是没多少增加。
上次由 ubuntu777 在 2015-05-13 19:43,总共编辑 1 次。
שְׁמַע יִשְׂרָאֵל יְהֹוָה אֱלֹהֵינוּ יְהֹוָה ׀ אֶחָֽד׃
וְאָהַבְתָּ אֵת יְהֹוָה אֱלֹהֶיךָ בְּכׇל־לְבָבְךָ וּבְכׇל־נַפְשְׁךָ וּבְכׇל־מְאֹדֶֽךָ׃
头像
sunfish
帖子: 964
注册时间: 2008-05-03 1:53
送出感谢: 18 次
接收感谢: 9 次
联系:

Re: 计算机那点事儿~

#30

帖子 sunfish » 2015-05-07 8:09

mark一下 :em11
docker && kubernetes
回复

回到 “软件/网站开发”