这一篇将介绍触发器与反馈器。这是计算机保持记忆的关键,比较难的是计算机如何计数。这篇的电路图多而复杂,越到后面越懵逼。多看几遍,有时候如果看不懂,只要把他的作用记清楚就可以了。反正我是第一遍,第二遍也没看懂,多看了几遍才有感觉。
振荡器
不知道读者对小时候念书的上课铃还有印象没,比如本人念小学的时候,上课铃声还是电铃实现的,叮叮叮。这篇我们从电铃开始讲起。
电铃实现的电路图如下
此电路中,开关一旦关闭,金属片就会上下跳动。得益于地磁铁的特性,电路会随之连通或者断开。声音也会随之发出。如果把金属片,换成小锤子,旁边放个锣,这就构成了电铃。
其实可以用反向器简化:
反向器中的继电器就会在连通和断开这两种状态反复交替。一定要记住,反向器本质就是一个继电器,而继电器将状态取反从而得到另一个状态是需要一点点时间的。
上面中的电路叫做振荡器,振荡器完全不需要人为的干涉,可以自发地工作。
当用0和1表示振荡器的输出时,可以用图形形象的表示,并且加上时间轴。就可以看到振荡器在0和1之间按照固有规律进行交替变化。所以振荡器也叫做时钟,通过振荡器进行计数也是一种计时方式。
用周期和频率来表示振荡器运行速度的快慢。如下图:
周期是0.05s,频率是1/0.05=20hz。
反馈和触发器
之前介绍过或非门,特点就是两端输入都没电压输出才会产生电压。
如果有如下电路(左边或非门的输出是右边或非门的输入,而右边或非门的输出是左边或非门的输入),这样的连接叫做反馈。
这个电路非常神奇。
对于上面的开关:
默认状态下,左边或非门两个输入为0则输出1到右边或非门,右边或非门输入1和0输出0,灯泡不亮
当接通上面的开关,左边或非门输入1和0,则输出0,右边或非门输入0和0 输出1,灯泡亮
这个时候断开上面的开关,左边或非门输入0和1(这个1是来至右边或非门的输出),输出0,右边输入0和0,输出1,灯泡亮
对于下面的开关:
接着接通下面的开关,左边输入的是0和1,输出0,右边输入1和0,输出0。灯泡不亮
然后断开下面的开关,左边输入0和1,输出0,右边输入0和1,输出0,灯泡不亮。
然后接头下面开关,左边输入0和0,输出1,右边输入1和1,输出0,灯泡不亮
两个开关都断开,灯泡有时候亮有时候不亮,这和之前的情况完全不同。当两个开关都断开时,有两个稳定状态,这类电路统称为触发器。
规律:
触发器可以保持信息,记住某些信息,比如如果灯泡是亮着的,则可以推测最后一次连通的是上面的开关,如果灯泡不亮,则可推测上一次连通的是下面的开关。
R-S(复位和设置)触发器就是上面介绍的触发器,是最简单的一种
S对应上面的开关,R对应下面的开关,Q为电路灯泡的输出状态,Q反是对Q的取反。
下面是输入输出表
倒数第二行表示的是如果S、R都为0则输出标志位Q和Q反,代表输出保持为S、R同时被设为0的以前的值。
电路符号
R-S触发器最突出是他可以记住哪个输入端的最终状态为1。如果能够记忆住特定时间点上的信号,就更好了。
下面的电路图就实现这个(在R-S触发器中增加两个与门)
这个电路有两个输入,一个数据端,一个保持位。保持位的作用是使得当前的状态被记住,通常情况下保持为设置为0,这种情况下数据端不会对电路产生影响。当为1的时候,数据端就会被电路系统记住。随后保持为又为0,这时候电路已经记住了数据端的最后一次输入,之后无论数据端输入什么都不会对电路造成影响。
当保持位为0,重置、置位对电路都不会有影响
当保持位位1,就和R-S触发器功能一致。
如果我们只想要两个输入达到效果的话,需要考虑到之前在讲R-S触发的真值表的时候,同时为1的时候非法,要尽量避免。真正有意义的是S为0,R为1或者R为0,S为1。如果把置位看成是数据端信号,取反看为复位信号(因为有意义的就是S、R互相反),则可以得到下面的电路图。
当输入均为0的时候,输出Q也为0(此时Q反为1)。保持为为0,电路不会受影响
当保持位为1,电路反映了数据端的输入的值,Q的输出和数据端输入一致。
这个时候如果保持位再次为0,则数据端对电路没有影响。数据端上次的数据就被记住了。
上面这套电路被称作为D(Data)型触发器。所谓的电平触发是指当保持位为某一特定电平比如1,触发器才保存数据端的输入。
如果把保持位换成最开始将的振荡器也就是时钟,这样就可以指定什么时候保存数据了。
这个电路有个名字叫做电平触发的D型锁存器,表示电路锁存住一位数据并保持它,以便将来使用,叫做1位存储器。
锁存器在加法器中使用
在讲计算机如何实现加法的那篇中,没有讲到如何存储。这里提一下
下图是一个8位锁存器,每个锁存器包含两个或非门,两个与门和一个反向器。所有的时钟输入端都连在一起。
他可以一次保存8个数,上面是输入端,下面是输出端,当输入的时钟信号是1的时候,输入端的8位值被送到Q端,当信号再次为0时,8位值将保持不变。直到时钟信号再次被置为1。
8位锁存器符号
最终得到下面这个电路
8位加法器的8个S(求和)输出既和灯泡相连,也和锁存器相连。标记为保存的开关是锁存器的时钟输入,存放加法器的运算记过。2-1选择器决定选择加法器来至锁存器还是来至第二批的开关。闭合代表用锁存器的数据。
看看选择器的结构(根据输出,决定输出的数据从哪里来)
选择器为1的时候,则或门输出就和B端输入一样;为0就和A端输入一样。
输出结果
现在这个加法器不能处理进位输出信号。可以加大加法器、锁存器、选择器的宽度,比如用16位宽度,至少要比可能遇到最大和的位数多一位。
如何给触发器清零呢,之前可以通过复位来实现,但是有可能我们不能直接控制复位的输入。改进如下
清零信号总是强制使得Q输出为0,达到清零的目的。
边沿触发器
R-S触发器为了是数据端保存在锁存器中,必须把时钟的输入从0变为1,但是当时钟输入为1的时候,输入端数据是可以改变的。但是对于某些应用而言,这样的电平触发器不合适。
于是有了边沿触发器,边沿触发器只有当时钟从0变为1时,才会引起输出的改变。在边沿触发器中,时钟输入为1数据端的输入也不会改变,仅仅只有在0变为1的瞬间,数据端的输入才会影响输出。
下面是连接方式(这是怎么发现的?我也不知道):
不要怕电路麻烦,一步一步分析就明白了
数据输入端为1,因为时钟输入默认为0,经过取反变为1,二级触发器保持不变,因为时钟仍位0,现在把时钟变为1.
变1之后,二级触发器输出改变,使得Q输出变为1。这时候无论数据端如何改变都不会影响Q的输出。
只有在时钟从0变化到1的瞬间Q的输出才会改变。
有点懵逼,眼睛都看花了
变化通过箭头↑,
0变1称为时钟的正跳变,1变0称为负跳变。
符号如下:
小三角形表示触发器是边沿触发器。
分频器与计数器
之前介绍过振荡器,如果把振荡器与边沿触发器的D触发器的时钟输入端连接,同时Q反输出连接到本身的D端。
这个触发器很奇特,输出的同时也是自己的输入。
如果按照顺序实验这个电路,会得到下面的规律
换一种观察方式
如果这个振荡器的频率是20hz,那么Q的输出频率是他的一半10hz。正因为如此这个电路称为分频器。分频器之间可以相互连接。
上面四个Q的变化规律如下
如果把这些信号标上0和1
把这个图顺时针旋转90度,每行4个数字。你会有神奇的发现
这个电路具备了计数的功能,如果电路中添加更多的触发器,则计数范围会更大。每一次正跳变都会使得输出增加1。
8个触发器连接在一起,构成了一个8位计算器。如下图,这是个8位行波计数器
变化是再出发起一级一级传递的,所以左后一个触发器的变化肯定会有延迟。现在的先进计数器是并行同步计数器,保证计数器的所有输出是同一时刻的。
一个计数器的时序图可以将8个输出分别表示出来。
下面是一个带有预置和清零功能的边缘触发器
预置和清零信号会覆盖始终和数据的输入
已经懵逼了,先不慌,后面回来看,先知道他的作用就行了
电路符号:
写在最后
本篇从介绍简单的振荡器开始,到触发器(实现记忆功能),到8位锁存器,再到边沿计数器,再到计数器。从简单到复杂,中间比较难的就是计数器的实现,以后后面的带有预值清零的边沿触发器。如果第一遍看不懂没关系,第二遍,第三遍,实在看不懂就先记住特性。感觉在这条道路上越走越远了。世界太过于神奇。
扩展阅读