朋友们,看到这篇文章意味着我还活着,最近比较忙,文章差点太监了。快扶我起来,我还能继续写


接之前文章,CPU分为运算器、控制器和存储器,前面几篇文章已经简单介绍过计算机是怎么计算加、减、乘、除了,运算器的原理基本上已经清楚了。现在就好比,你是一个工头,手下有一个小学生,能计算加减乘除,你要控制这个小学生计算2的三次方,你需要让小学生先计算2×2,然后计算出的结果再×2。
这样就需要有一个地方把之前2×2的结果存储下来。就需要存储器了,有了存储器,你就可以控制小学生做更复杂的计算了,本篇文章简单介绍一下存储器的原理。


1、CPU原理之逻辑、电路和数学

2、CPU原理之减法、乘法和除法



01

振荡器


介绍存储器之前,先看另外一种电路。这个电路中没有灯泡,是不是很奇怪。当a处的开关闭合之后,电路就接通了,铁棒有了磁性会把b开关往下拉,电路就断开了,电路断开之后,铁棒没有了磁性,开关b又弹回原位,电路又接通了,铁棒又有磁性了……,电路就一直处于高频的断开闭合又断开的重复过程。


是不是脑回流很清奇,是不是很有意思,如果把b处装个小锤子和锣,就是小学时候的电铃了,那种刺耳的声音,现在想起都记忆犹新,回味无穷啊。这个电路的特点就是当开关闭合之后,整个电路就处于自动运行状态,而且输出会反馈给输入。有人可能发现这个电路跟之前文章里介绍的非门很相似,确实是,我们把电路简化下。

有人会问这个电路有什么用?貌似也没法输入数据,更没法存数据啊。不要着急,这个电路的发明给后人提供了一个反馈电路的思路,很快就有人搞出了另外一种电路。


02


触发器


振荡器里的非门,只能接收一个输入参数,反馈电路肯定要把输出连到输入,我们就没法额外输入要存储的数据了。所以我们可以用或非门来构造一个电路,一个用来接收输出反馈,另一个用来输入要存储的数据。


我们来分析下这个神奇的电路。初始状态下,左边两个输入是关的,根据或非门的特性(两个输入按或操作之后取非),左边的或非门输出是1(电路浅绿色代表有电信号,深绿色代表无电信号),右边的或非门输出为0,电路里的值是0。

当我们把上面的输入变为1之后,左边的或非门输出是0,右边的或非门输出变成了1,请看下图。

然而,更神奇的是,当我们把上面的输入重新变成0之后,电路的输出结果仍然是1。

可以看到,上面输入位的信号改变不再影响电路的输出结果,电路真的有了记忆特性,震惊不震惊,惊喜不惊喜。


怎么把电路输出重新变成0呢?这个时候下面的输入位就派上用场了,我们改下下面输入位的状态看下。

果然,下面的输入位变成1时候,电路就重新变成了0。当我们把下面的输入位重新变成0,电路输出仍然是0。

这个电路的神奇之处在于,两个输入位都是0的情况下,电路输出有两个稳定状态,有时候是0,有时候是1,这类电路被称为触发器。他赋予了电路记忆的功能,使一切都有了可能。

触发器的种类有很多,刚才介绍的是R-S(Reset-Set)触发器。上面输入位是S,下面的输入位是复位R。R-S触发器可以改造成如下图所示。

这样我们可以S用来设置Q位,而R用来复位。我们可以通过Q和Q’的值确定哪个输入端的最终状态为1。但是,我们可能还需要另外一种电路,使电路可以在我们想存储时候才会被存进去。

怎么设计这种电路呢?我们可能需要一个保持位,当设置为1时候才会存储数据,设置为0时候,就不存储数据。也就是说电路需要有两个输入位。一个保持位H,一个数据位D。当H为1时候D的数据才生效,加个与门是不是就搞定了,让我们来改造一下。


这样,当H为1时候,其实跟R-S触发器的效果是一样的,S端的数据才会被存储到Q里,H为0时候,S的输入对电路没有任何影响。但是我们只需要两个输入位,图中多了一个输入位。怎么再改造一下呢?我们发现S设置为1时候,R肯定为0(置位时候肯定不可能复位),S为0时候,复位设置为1,Q不就变成0了。这么看,他俩完全相反就好了,把S和R用一个非门连起来就搞定了。

大功告成了,这个电路的名字叫做D型触发器,也叫D型锁存器。这个电路可以锁住一位数据,在需要时候使用。我们可以用多个1位锁存器构造出8位锁存器。这样咱们的8位CPU就可以使用这个锁存器存储中间数据了。

当然,事情没有那么简单,还有一种牛逼的D型触发器,叫边沿触发D型触发器。之前的D型触发器只要H位设置为1,输入位设置的数据就会对电路结果产生影响。边沿触发D型触发器,只有在H位由0变成1时候才会触发数据的存储。电路是怎么样的呢?我们可以把两个D型触发器连起来,H为0时候,第一个D型触发器把D输入位的数据保存起来,第二个触发器不做存储。H为1时候,第二个触发器再把第一个触发器的数据存起来输出,直接看电路图吧。


我们可以看到,H为0时候前面的D型触发器的H位由于取了个反,所以会保持数据,但是后面的D型触发器不会保持数据。当H变为1时候,后面的D型触发器会把前面D型触发器的结果保持下来,显示到Q位。边沿触发D型触发器的电路简化为如下符号:

我们把电路改造一下,让振荡器频繁的在0和1之间跳变,用来控制H位,同时把Q’的输出给D位,看一下会发生什么。

左边的时钟跳变1次,Q的值会变化一次。时钟重复震荡,Q的值在0和1之间切换,也就是说时钟的值变化4次,Q的值变化2次,他们两个频率不一样,这个电路称为分频器。如果我们把多个分频器连起来,就成了计数器。

存储器就说到这里吧,是不是很有意思,是不是很牛逼。强烈建议在电路仿真软件里自己画一下电路图,深刻理解一下原理。

本篇文章来源于微信公众号: 搞点儿啥

最后修改日期:2019年11月27日

留言

填写回复或留言