《编码》读书笔记 ——从计算机记忆到计数

2018-03-01  本文已影响30人  纸简书生

这一篇将介绍触发器与反馈器。这是计算机保持记忆的关键,比较难的是计算机如何计数。这篇的电路图多而复杂,越到后面越懵逼。多看几遍,有时候如果看不懂,只要把他的作用记清楚就可以了。反正我是第一遍,第二遍也没看懂,多看了几遍才有感觉。

振荡器

不知道读者对小时候念书的上课铃还有印象没,比如本人念小学的时候,上课铃声还是电铃实现的,叮叮叮。这篇我们从电铃开始讲起。

电铃实现的电路图如下


此电路中,开关一旦关闭,金属片就会上下跳动。得益于地磁铁的特性,电路会随之连通或者断开。声音也会随之发出。如果把金属片,换成小锤子,旁边放个锣,这就构成了电铃。

其实可以用反向器简化:


反向器中的继电器就会在连通和断开这两种状态反复交替。一定要记住,反向器本质就是一个继电器,而继电器将状态取反从而得到另一个状态是需要一点点时间的。

上面中的电路叫做振荡器,振荡器完全不需要人为的干涉,可以自发地工作。

当用0和1表示振荡器的输出时,可以用图形形象的表示,并且加上时间轴。就可以看到振荡器在0和1之间按照固有规律进行交替变化。所以振荡器也叫做时钟,通过振荡器进行计数也是一种计时方式。


用周期和频率来表示振荡器运行速度的快慢。如下图:



周期是0.05s,频率是1/0.05=20hz。

反馈和触发器

之前介绍过或非门,特点就是两端输入都没电压输出才会产生电压。

如果有如下电路(左边或非门的输出是右边或非门的输入,而右边或非门的输出是左边或非门的输入),这样的连接叫做反馈。


这个电路非常神奇。

对于上面的开关:

对于下面的开关:

两个开关都断开,灯泡有时候亮有时候不亮,这和之前的情况完全不同。当两个开关都断开时,有两个稳定状态,这类电路统称为触发器。

规律:


触发器可以保持信息,记住某些信息,比如如果灯泡是亮着的,则可以推测最后一次连通的是上面的开关,如果灯泡不亮,则可推测上一次连通的是下面的开关。

R-S(复位和设置)触发器就是上面介绍的触发器,是最简单的一种



S对应上面的开关,R对应下面的开关,Q为电路灯泡的输出状态,Q反是对Q的取反。
下面是输入输出表


倒数第二行表示的是如果S、R都为0则输出标志位Q和Q反,代表输出保持为S、R同时被设为0的以前的值。

电路符号



R-S触发器最突出是他可以记住哪个输入端的最终状态为1。如果能够记忆住特定时间点上的信号,就更好了。

下面的电路图就实现这个(在R-S触发器中增加两个与门)


这个电路有两个输入,一个数据端,一个保持位。保持位的作用是使得当前的状态被记住,通常情况下保持为设置为0,这种情况下数据端不会对电路产生影响。当为1的时候,数据端就会被电路系统记住。随后保持为又为0,这时候电路已经记住了数据端的最后一次输入,之后无论数据端输入什么都不会对电路造成影响。

如果我们只想要两个输入达到效果的话,需要考虑到之前在讲R-S触发的真值表的时候,同时为1的时候非法,要尽量避免。真正有意义的是S为0,R为1或者R为0,S为1。如果把置位看成是数据端信号,取反看为复位信号(因为有意义的就是S、R互相反),则可以得到下面的电路图。

上面这套电路被称作为D(Data)型触发器。所谓的电平触发是指当保持位为某一特定电平比如1,触发器才保存数据端的输入。

如果把保持位换成最开始将的振荡器也就是时钟,这样就可以指定什么时候保存数据了。


这个电路有个名字叫做电平触发的D型锁存器,表示电路锁存住一位数据并保持它,以便将来使用,叫做1位存储器。

锁存器在加法器中使用

在讲计算机如何实现加法的那篇中,没有讲到如何存储。这里提一下

下图是一个8位锁存器,每个锁存器包含两个或非门,两个与门和一个反向器。所有的时钟输入端都连在一起。


他可以一次保存8个数,上面是输入端,下面是输出端,当输入的时钟信号是1的时候,输入端的8位值被送到Q端,当信号再次为0时,8位值将保持不变。直到时钟信号再次被置为1。

8位锁存器符号


最终得到下面这个电路



8位加法器的8个S(求和)输出既和灯泡相连,也和锁存器相连。标记为保存的开关是锁存器的时钟输入,存放加法器的运算记过。2-1选择器决定选择加法器来至锁存器还是来至第二批的开关。闭合代表用锁存器的数据。

看看选择器的结构(根据输出,决定输出的数据从哪里来)


输出结果


现在这个加法器不能处理进位输出信号。可以加大加法器、锁存器、选择器的宽度,比如用16位宽度,至少要比可能遇到最大和的位数多一位。

如何给触发器清零呢,之前可以通过复位来实现,但是有可能我们不能直接控制复位的输入。改进如下



清零信号总是强制使得Q输出为0,达到清零的目的。

边沿触发器

R-S触发器为了是数据端保存在锁存器中,必须把时钟的输入从0变为1,但是当时钟输入为1的时候,输入端数据是可以改变的。但是对于某些应用而言,这样的电平触发器不合适。

于是有了边沿触发器,边沿触发器只有当时钟从0变为1时,才会引起输出的改变。在边沿触发器中,时钟输入为1数据端的输入也不会改变,仅仅只有在0变为1的瞬间,数据端的输入才会影响输出。

下面是连接方式(这是怎么发现的?我也不知道):

不要怕电路麻烦,一步一步分析就明白了

有点懵逼,眼睛都看花了

变化通过箭头↑,



0变1称为时钟的正跳变,1变0称为负跳变。

符号如下:



小三角形表示触发器是边沿触发器。

分频器与计数器

之前介绍过振荡器,如果把振荡器与边沿触发器的D触发器的时钟输入端连接,同时Q反输出连接到本身的D端。



这个触发器很奇特,输出的同时也是自己的输入。

如果按照顺序实验这个电路,会得到下面的规律



换一种观察方式


如果这个振荡器的频率是20hz,那么Q的输出频率是他的一半10hz。正因为如此这个电路称为分频器。分频器之间可以相互连接。



上面四个Q的变化规律如下



如果把这些信号标上0和1

把这个图顺时针旋转90度,每行4个数字。你会有神奇的发现

这个电路具备了计数的功能,如果电路中添加更多的触发器,则计数范围会更大。每一次正跳变都会使得输出增加1。

8个触发器连接在一起,构成了一个8位计算器。如下图,这是个8位行波计数器


变化是再出发起一级一级传递的,所以左后一个触发器的变化肯定会有延迟。现在的先进计数器是并行同步计数器,保证计数器的所有输出是同一时刻的。

一个计数器的时序图可以将8个输出分别表示出来。


下面是一个带有预置和清零功能的边缘触发器


预置和清零信号会覆盖始终和数据的输入

已经懵逼了,先不慌,后面回来看,先知道他的作用就行了

电路符号:


写在最后

本篇从介绍简单的振荡器开始,到触发器(实现记忆功能),到8位锁存器,再到边沿计数器,再到计数器。从简单到复杂,中间比较难的就是计数器的实现,以后后面的带有预值清零的边沿触发器。如果第一遍看不懂没关系,第二遍,第三遍,实在看不懂就先记住特性。感觉在这条道路上越走越远了。世界太过于神奇。

扩展阅读

同步计算器的应用

上一篇 下一篇

猜你喜欢

热点阅读