以下电路中包含两个或非门、两个开关和一个灯泡。
这个电路用了特殊的连线方式:左边或非门的输出是右边或非门的输入,而右边或非门的输出是左边或非门的输入。这种连接方式我们称之为反馈(feedback)
。
在初始状态下,电路中只有左边的或非门输出电流,这是因为其两个输入均为 0。
下面先闭合上面的开关,左边或非门将立刻输出 0,右边或非门的输出也会随之变为 1,这时灯泡将被点亮。
接着,再关闭上面的开关,灯泡依然亮着。这是因为左边或非门的输入中有一个为 1,其输出依然是 0;因此右边的或非门两个输入都为 0,输出为 1。
可以发现,现在如果一直切换左边或非门的开关,灯泡都会保持亮着。
然后,现在试试闭合下面的开关。右边或非门的一个输入变为 1,则输出为 0,灯泡熄灭。同时,左边的或非门的输出此刻变为 1。
最后,再断开下面的开关。灯光依然处于熄灭状态。这是因为,右边或非门的输出为 0;则左边或非门的输入为 0,输出为 1。也就是说右边或非门有一个输入始终为 1,所以现在无论怎么切换下面的开关,灯光都不为点亮。
将以上情况总结如下:
- 接通上面的开关,灯泡被点亮,断开此开关灯泡仍然亮着。
- 接通下面的开关,灯泡被熄灭,断开此开关灯泡仍然不亮。
电路的奇怪之处是:同样是在两个开关都断开的状态下,灯泡有时亮着,有时却不亮。当两个开关都断开时,电路有两个稳定态,这类电路统称为触发器(Flip-Flop)
。
触发器电路可以保持信息,它可以”记住”某些信息。例如,在上文中,它可以记住最近一次是哪个开关先闭合。如果遇到一种触发器,它的灯泡是亮着的,就可以推测出最后一次连通的是上面的开关;而如果灯泡不亮则可推测出最后一次连通的是下面的开关。
触发器种类繁多,以上讲述的是最简单的一种 R-S(Reset-Set,复位/置位)触发器。我们通常把两个或非门绘制成另一种形式,加上标识符就得到了下图。
我们通常用 Q 来表示用于点亮灯泡的输出的状态。另一个输出 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 原来的状态不变。可以用下表来表示。
输入 | 输出 |
---|---|
S R | Q Q |
1 0 | 1 0 |
0 1 | 0 1 |
0 0 | Q Q |
1 1 | 禁止 |
表中最后一行表示 S 和 R 均为 1 的输入组合是被禁止或者不合法的,因为这些 Q 和 Q 均会为零,这和 Q 与 Q 互反的假设关系相矛盾。所以当使用 R-S 触发器进行电路设计时,R、S 输入同时为 1 的情况一定要避免。
R-S 触发器可以简化为带有输入和输出标志的小框图,如下图。
R-S 触发器最突出的特点在于,它可以记住哪个输入端的最终状态为 1。