本章探讨各种形式的反馈,特别是其在触发器中的应用。
从一个简单的继电器振荡器开始。用鼠标或手指打开开关,观察继电器的振荡。
继电器会经历以下过程
1.当开关闭合后,电路就连通了。
2.连通的电路使得电磁铁把金属簧片拉了下来。(电生磁的物理知识)
3.当金属簧片的位置变化时,电路不再连通,电磁铁不再具有磁性,金属簧片又弹回原位。
4.如此一来,电路又一次连通了。
开关一旦闭合,金属簧片就会上下跳动,电路也会随着跳动不断连通或断开
在此之前我们讲过的所有的电路,其状态的改变都依靠人为的干预
通常是通过改变开关状态来实现的
但是振荡器却在不需要人干涉的情况下,可以完全自发地工作
这是因为振荡器的继电器是反馈型的,也就是说,它的输出会影响到输入,从而影响到输出,如此循环往复
采用0和1的交替序列来表示振荡器的输出
水平坐标代表时间,垂直坐标用来表示输出是0还是1
随着时间的推移,振荡器的输出在0和1之间按照固有的规律交替变化
因此,振荡器又经常被称为时钟(clock),通过振荡进行计数也是一种计时方式。
第一个触发器使用两个NOR门连接,使每个门的输出成为另一个门的输入之一。
NOR或非门的逻辑图如下
或非门的特点是只有在两个输入端都没有电压时,输出端才产生电压。
下面是一个包含两个或非门、两个开关和一个灯泡的电路
注意:左边或非门的输出是右边或非门的输入,而右边或非门的输出是左边或非门的输入
这种连接方式我们称之为反馈(feedback)
初始状态下,电路中只有左边的或非门输出电流,这是因为其两个输入均为0。
闭合上面的开关,左边或非门将立刻输出0,右边或非门的输出也会随之变为1,这时灯泡将被点亮。
一旦打开上面的开关,灯炮依然闪闪发光。
这是因为由于左边或非门的输入中有一个为1,其输出依然是0,因而左边或非门的输出不变,所以灯泡仍然亮着
闭合下面的开关。右边或非门的输入中有一个立刻变为1,其输出就相应地变为0,灯泡随之熄灭。左边或非门的输出此刻变为1。
这时你再去断开下面的开关就会发现,灯泡一直处在熄灭状态。
只接通上面的开关,灯泡被点亮,断开此开关灯泡仍然亮着。
只接通下面的开关,灯泡被熄灭,断开此开关灯泡仍然不亮。
当两个开关都断开时,电路有两个稳定态,这类电路统称为触发器(Flip-Flop)
两个稳定态的触发条件和表现不同,电路就有了记忆
它可以记住最近一次是哪个开关先闭合。
如果你遇到这样一种触发器,如果它的灯泡是亮着的,你就可以推测出最后一次连通的是上面的开关;
而如果灯泡不亮则可推测出最后一次连通的是下面的开关。
跷跷板也有两个稳定状态,它不会长期停留在不稳定的中间位置。
通过观察跷跷板,我们很容易推测出哪边最后一次被压下来
触发器可以让电路“记住”之前发生了什么事情
上方这个较为简单的触发器称为R-S(Reset-Set,复位/置位)触发器
这是和上方相同的触发器,但重新排列以显示其对称性,并增加了一个额外输出。
用Q来表示用于点亮灯泡的输出的状态。另一个输出(读做Q反)是对Q的取反。Q是0,Q反就是1
输入端S(Set)用来置位,R(Reset)用来复位。
你可以把“置位”理解为把Q设为1,而“复位”是把Q设为0
当状态S为1时(对应于先前触发器中上面的开关闭合的情况),此时Q变为1而Q反变为0;
当R状态为1时(对应于前面图中闭合下面的开关的情况),此时Q变为0而Q反变为1。
当S和R均为0时,输出保持Q和Q反当前状态不变
表中最后一行表示S和R均为1的输入组合是不存在的
因为这样的输入组合会导致Q和Q反同时变为0或1,这是不可能的
在实际使用中,任何时候两个输入中只有一个为1。
因此,它们已被改为瞬时开关:仅在按下时开关才打开。
按下底部开关将Q输出设置为1。再次按下该按钮不会有任何效果。按下顶部开关将Q输出重置为0。同样,再次按下该按钮不会有任何效果。
R-S触发器可以简化为带有输入和输出标志的小框图
R-S触发器最突出的特点在于:它可以记住哪个输入端的最终状态为1
但有时需要一种记忆能力更加强大的电路
例如能记住在某个特定时间点上的一个信号是0还是1
在某个时刻牢牢记住,保持住,不会忘记
这就是接下来要讲的保持触发器
基于上面所讲的R-S触发器
保持触发器要做的
在某个时刻,无论输入如何变化,输出Q都不变
这才算是把值给保持住,给记住了
在这个变体中,Set和Reset信号工作方式类似,但仅在Hold输入设置为1时有效。Set输入本质上将Hold输入的值保存到Q输出。
该触发器可以轻松修改为创建下面所示的标准电平触发D型触发器。当Clock为1时,Data输入被传输到Q输出。
"电平触发"意味着当Clock为1时,Data输入的任何变化都会反映在Q输出中。
在下面的"边沿触发"触发器中,Q输出仅在Clock输入从0变为1时从Data输入设置。Data输入的任何进一步变化都不会影响Q输出。
在下面的电路中,八位加法器与边沿触发器结合创建了一个累加加法器。
要使用此加法器,在顶部的开关上输入一个二进制数。当您按下Add按钮时,该值存储在触发器中并显示在底部。但该值也会被路由回开关下方的加法器。您可以在顶部的开关上输入第二个数字并再次按下Add。现在结果是前两个数字的和。
您可以继续操作任意次数,但请注意只保留八位,最终的Carry位被丢弃。
边沿触发器可以级联并与振荡器结合创建计数器。振荡器位于左上角,周期约为1秒。这为最右侧的触发器提供Clock输入,然后为下一个更高有效位的触发器提供Clock输入。
底部的值显示经过的秒数,但它基于JavaScript动画功能,可能不精确。
Clear信号通常很方便将触发器的输出设置为0,而不管其他输入如何。
这是一个边沿触发器,配备了Clear和Preset输入。