分享

计算机的奥秘原来这么简单(六)

 2017helloworld 2017-07-23

接上文。上文已经做出一个一位数据存储器。那我们把8个锁存器的时钟端输入互相连在一起,然后把它们集成到一个盒子里,就形成了一个8位锁存器。同样的,也可以做成16位,32位锁存器。

锁存器的原理和应用

封装后的8位锁存器如下图所示

计算机的奥秘原来这么简单(六)

图1

说明:上图锁存器一次可以保存8位数,其中8个输入标为D0-D7,下面的8个输出标为Q0-Q7。左边的输入是时钟,时钟信号通常为0。当时钟信号为1时,D端输入被送到Q端输出。当时钟信号变为0时,8位输出值保持不变,直到时钟信号再次被置为1,也就是输出把时钟从1变0的那一刻输入端的数据记忆住了。

那么锁存器是如何在实际电路中起作用的呢?我们举个例子,用之前做的8位加法器计算2+3+6的值。按照步骤呢,我们应该先算(二进制)10+11,把结果101写到纸上,然后再输入101+110才能得到最终结果。如果使用锁存器,则可以省去把中间结果写到纸上的过程。

我们知道8位加法器是:8个A输入和8个B输入连在开关上,CI(进位输入)端接地,8个S输出和CO(进位输出)端连着灯泡。现在改一下,将 8位加法器的输出既与灯泡相连,也作为8位锁存器的数据端(D)输入。标为“保存”的开关是锁存器的时钟输入,用于保存加法器的运算结果,就像这样:

计算机的奥秘原来这么简单(六)

图2

在上图中我们可以看到一个陌生的东西,即标识为2-1的选择器。所以在使用上图之前,我们应该先弄明白这个选择器的作用:即用这个选择器来选择加法器的B端输入是取自第2排开关还是取自锁存器的Q端输出。当选择开关闭合时,就选择了用8位锁存器的输出作为B端输入。当选择开关打开时,就选择第2排开关作为输入。

1、2-1选择器

那么2-1选择器是什么原理可以做到随意选择那个作为输入呢?其实2-1选择器是用了8个下面这样的电路:

计算机的奥秘原来这么简单(六)

图3

上图对应的功能图总结一下是这样:

计算机的奥秘原来这么简单(六)

表1

说明:选择端输入为1,或门的输出和B端输入是一样的。如果选择端输入是0,或门的输出则和A端输入是一样的。修改后的加法器中包含了8个这样的1位选择器。所有选择端的信号输入是连在一起的。此处的A接面板上第2排开关,B接锁存器的输出,选择在一起,表示为图1中的A。

这样的话回到图2就好理解3个数相加的过程了(还是以2+3+6为例):

  • 将选择器的开关打开,加法器A输入10,B输入11

  • 得出结果后,将锁存器“保存”开关闭合,此时锁存器中保存了第一次结果101

  • 然后将选择器的开关闭合,加法器A输入110,B自动输入锁存器中的101

  • 最后得到2+3+6的计算结果了

这样看来图2可以完成多个数的连续相加,但是中间的步骤有点繁琐。根据我们平时的经验,只要输入一个2,然后点“相加”,然后输入3,再点“相加”,再输入6,再点“等于”就可以了。这样才是符合正常操作的,那图2的电路应该做成这样才对:

计算机的奥秘原来这么简单(六)

图4

这样的话这个加法器就比前面那个好用了,尤其是当你需要加上一长串数字时。刚开始时,按下清零开关,这个操作使锁存器输出为0,并熄灭了所有的灯泡,同时使加法器的B端输入全为0。接着,通过开关输入第一个加数,闭合“相加”开关一次,则此加数反映在灯泡上。再输入第二个数并再次闭合“相加”开关一次,由开关输入的8位操作数加到前面的结果上,其和输出到灯泡。如此反复,可以连加很多数(其实此处有个漏洞,按照步骤来运算的话,第二步闭合“相加”开关后,灯泡中输出的结果应该是A+(AB的和) 而且结果时时刻刻的在改变,而且会无限的加下去,这里先不讨论这个漏洞,因为在第3条中会有边沿触发器来解决)。

那么,只要将图2图4对比一下,就会发现有3处改动

  1. 2-1选择器没有了,既然用不到的话我们就不用关心了

  2. 8位锁存器的时钟输入变了个名字,即标识为“相加” 的开关此刻控制着锁存器的时钟输入。这只是名称的变化,也不影响电路。

  3. 8位锁存器左边多了一个清零的开关,这与我们之前了解的锁存器就不一样了,那么这个“清零”功能是如何达到的呢?

经过分析,我们得到结论:要想使多个加法计算的电路更简单一些,只需要做成图4这样,而核心的改动就是“清零”的出现。

2、锁存器“清零”的实现

回顾一下在第5篇文章中说到的下面这个情景:

计算机的奥秘原来这么简单(六)

图5

其中A-D的位置是这样(此图也在第5篇中):

计算机的奥秘原来这么简单(六)

图6

很明显,我们只要保障E处值为1,则可达到清零的目标。所以只要在图5中对它加一个或门和一个称为清零的输入信号就可以了:

计算机的奥秘原来这么简单(六)

图7

只要“清零=1”,则无论另一个输入是多少,E处的值都为1,也就迫使Q输出为0,起到了给触发器清零的作用了。

3、边沿触发时钟

刚才我们对图2图4分析对比的时候,第二条有个相加的开关,控制时钟触发用的,那此处的触发器是电平触发式的,意思是说只有在时钟端输入从0变到1后(即高电平时),数据端输入的值才能保存在锁存器中。我们知道,在时钟端输入为1期间,数据端输入的任何改变都将反应在Q或-Q端的输出值上。就像在前文所说的那个漏洞一样,这时候相对于电平触发时钟输入来说,另外一种边沿触发时钟输入就显得更为适用了。

因为对于边沿触发器而言,只有当时钟从0变到1的瞬间,输出才会改变。在电平触发器中,当时钟输入为0时,数据端输入的任何改变都不会影响输出;而在边沿触发器中,当时钟输入为1时,数据端输入的改变也不会影响输出。只有在时钟输入从0变到1的瞬间,数据端的输入才会影响边沿触发器的输出。

边沿触发的D型触发器是由两级RS触发器按如下方式连接而成的:

计算机的奥秘原来这么简单(六)

图8

这里可以和图5比较着,一起看。

计算机的奥秘原来这么简单(六)

表3

可以看出Q端输出只有在时钟输入从0变到1的那一个瞬间才发生改变,就算然后数据端变成0,也不影响那一瞬间保存的数值。边沿触发的D型触发器的功能表需要一个新符号来表示这种从0到1的瞬时变化,即用一个向上指的箭头(↑)表示:

计算机的奥秘原来这么简单(六)

表4

4、分频器的原理

知道了边沿触发器,那么分析下下面这个电路:

计算机的奥秘原来这么简单(六)

图9

图中为了避免触发器中继电器不一定能跟上振荡器的速度的问题,这里假设振荡器中继电器的速度比这个电路中其他地方的继电器的速度都慢。然后总结一下上图电路中发生的事情:

计算机的奥秘原来这么简单(六)

表5

总结:每当CLK输入从0变到1时,Q端输出就发生改变,或者从0变到1,或者从1变到0。用波形图看得更直观些。

计算机的奥秘原来这么简单(六)

上图中可以发现:若振荡器的频率是20HZ,则Q的输出频率是它的一半,即10HZ。由于这个原因,这种电路称为分频器。

如果分频器的输出连接到另一个分频器的CLK输入,再一次进行分频。然后按此方法按下图将三个分频器连在一起的话,我们就可以看到CLK反、Q1、Q2、Q3的波形图了。

计算机的奥秘原来这么简单(六)

计算机的奥秘原来这么简单(六)

5、行波(异步)计数器

如果我们将Q3/Q2/Q1排列好,组成二进制中3位数,即上图顺时针翻转90度着看,正好是从000-111(0-7)的数,代表CLK做了7次正跳变。

上图是用3个触发器做的,如果用8个触发器连在一起,并和之前一样封装起来,如下所示,那么它就能表示从00000000-11111111(0-255)的数,可以对CLK的正跳变次数做计数了。

计算机的奥秘原来这么简单(六)

那么这个计数器称为8位行波(异步)计数器。因为每一个触发器的输出都成为下一个触发器的时钟输入。变化是沿着触发器一级一级地传递的,最后一级触发器的变化必定要延迟一些。更复杂的计数器是“并行(同步)计数器”,在这种计数器中,所有输出是同时改变的。

输出端信号已标识为从Q0~Q7,Q0是第一个触发器的输出。如果把灯泡连到这些输出上,就可以把8位结果读出来。这样一个计数器就可以像下图所示把CLK的正跳变次数读出来了:

计算机的奥秘原来这么简单(六)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多