电子学/锁存器和触发器
触发器是一种电路,它存在于两种状态之一,因此可以存储信息。
一个简单的触发器可以用两个与非逻辑门来定义。触发器是非线性电路,这意味着一个门的输出被“反馈”回以与输入信号一起处理。由于触发器对混合了先前输出信号的输入信号进行操作,因此它们自己的输出取决于它们之前状态。
触发器(F/F)是一种由数字门组成的器件,它使用反馈来存储其输入的态(1 或 0)。触发器经常用来锁存输入数据。这意味着在一个电路中,它们被馈送一些二进制值,然后保持该值,直到锁存被关闭。所有触发器至少有一个标记为 Q 的输出。它们通常有一个补码,标记为 /Q。4 种基本的触发器是 SR、D、触发和 JK。
锁存器是双稳态多谐振荡器的一个例子,即一个具有恰好两个稳定状态的器件。这些状态是高输出和低输出。锁存器具有反馈路径,因此信息可以由器件保留。因此,锁存器可以作为存储器设备,并且可以只要器件通电就存储一个数据位。顾名思义,锁存器用于“锁存”信息并保持在适当位置。锁存器与触发器非常相似,但不是同步器件,并且不像触发器那样在时钟边沿操作。
SR 锁存器(置位/复位)是一个异步器件:它独立于控制信号工作,并且仅依赖于 S 和 R 输入的态。在图像中,我们可以看到,SR 触发器可以用两个具有交叉反馈回路的非门创建。SR 锁存器也可以由与非门制成,但输入被交换和取反。在这种情况下,它有时被称为SR 锁存器。
当对 SR 锁存器的置位线施加高电平时,Q 输出变为高电平(而 Q 则为低电平)。然而,反馈机制意味着即使S 输入再次变为低电平,Q 输出也将保持高电平。这就是锁存器作为存储器设备的方式。相反,复位线上的高输入将驱动Q 输出变为低电平(而 Q 则为高电平),有效地复位锁存器的“存储器”。当两个输入都为低电平时,锁存器“锁存” - 它保持在之前设置的或复位的状态。
然而,当两个输入同时为高电平时,会出现一个问题:它被告知同时产生高Q 和低Q。这会在电路中产生“竞争条件” - 哪个触发器首先成功改变将反馈到另一个并断言自己。理想情况下,两个门是相同的,这是“亚稳态的”,并且该器件将无限期地处于未定义状态。在现实生活中,由于制造方法,一个门总是会获胜,但无法从装配线上判断哪个门将获胜。因此,S = R = 1 的状态是“非法的”,永远不应该进入。
当器件通电时,会发生类似的情况,因为两个输出,Q 和 Q,都为低电平。同样,由于两个门之间的差异,该器件将迅速退出亚稳态,但无法预测Q 和 Q 中哪个将最终变为高电平。为了避免虚假动作,您应该始终在使用 SR 触发器之前将它们设置到已知的初始状态 - 您不能假设它们将初始化为低状态。
一般来说,RS 触发器有一个符号和一个真值表,如下所示
S R Q Q 0 0 锁存 0 1 0 1 1 0 1 0 1 1 亚稳态
在某些情况下,可能需要指示锁存器何时可以锁存和何时不能锁存。门控 SR 锁存器是 SR 锁存器的一个简单扩展,它提供了一个使能线,该线必须驱动为高电平才能锁存数据。即使现在需要一条控制线,SR 锁存器也不是同步的,因为输入可以即使在使能脉冲的中间也会改变输出。
当使能输入为低电平时,则与门的输出也必须为低电平,因此Q 和 Q 输出保持锁存到之前的数据。只有当使能输入为高电平时,锁存器的状态才能改变,如真值表所示。当使能线被断言时,门控 SR 锁存器与 SR 锁存器在操作上相同。
使能线有时是时钟信号,但通常是读或写脉冲。
使能 | S | R | Q | Q | |
---|---|---|---|---|---|
0 | 0 | 0 | 锁存 | ||
0 | 0 | 1 | 锁存 | ||
0 | 1 | 0 | 锁存 | ||
0 | 1 | 1 | 锁存 | ||
1 | 0 | 0 | 锁存 | ||
1 | 0 | 1 | 0 | 1 | |
1 | 1 | 0 | 1 | 0 | |
1 | 1 | 1 | 亚稳态 |
D 锁存器(D 代表“数据”)或透明锁存器是门控 SR 锁存器的一个简单扩展,它消除了无效输入状态的可能性。
由于门控 SR 锁存器允许我们锁存输出而无需使用S 或R 输入,因此我们可以通过使用互补驱动器驱动置位和复位两个输入来消除其中一个输入:我们消除一个输入并自动使其成为剩余输入的逆。
D 锁存器在使能线为高电平时输出D 输入,否则输出是D 输入在上一次使能输入为高电平时所处的状态。这就是为什么它也被称为透明锁存器 - 当使能被断言时,锁存器被称为“透明” - 信号直接通过它传播,就好像它不存在一样。
使能 | D | Q | Q | |
---|---|---|---|---|
0 | 0 | 锁存 | ||
0 | 1 | 锁存 | ||
1 | 0 | 0 | 1 | |
1 | 1 | 1 | 0 |
D 锁存器通常用于集成电路的 I/O 端口,并且可以作为分立器件使用,通常是多重封装的。一个例子是 74HC75,它是 7400 系列 IC 的一部分,包含四个独立的 D 锁存器。
最基本的锁存器是简单的SR 触发器,其中 S 和 R 分别代表置位和复位。它可以由一对交叉耦合的非逻辑门构成。存储的位出现在标记为 Q 的输出端。
通常,在存储模式下,S 和 R 输入都为低电平,并且反馈保持 Q 和 Q 输出处于恒定状态,Q 是 Q 的补码。如果 S(置位)在 R 保持为低电平的情况下脉冲为高电平,则 Q 输出被强制为高电平,并且即使 S 返回低电平,也保持为高电平;类似地,如果 R(复位)在 S 保持为低电平的情况下脉冲为高电平,则 Q 输出被强制为低电平,并且即使 R 返回低电平,也保持为低电平。
SR 触发器操作 [1] | |||||||
---|---|---|---|---|---|---|---|
状态转移表 | 激励表 | ||||||
S | R | 动作 | Q(t) | Q(t+1) | S | R | 动作 |
0 | 0 | 保持状态 | 0 | 0 | 0 | X | 无变化 |
0 | 1 | Q = 0 | 0 | 1 | 1 | 0 | 置位 |
1 | 0 | Q = 1 | 1 | 0 | 0 | 1 | 复位 |
1 | 1 | 不稳定组合, 参见竞争条件 |
1 | 1 | X | 0 | 无变化 |
('X' 表示不关心条件;意思是信号无关紧要)
在上升沿时钟边沿到达时,Q 输出始终采用 D 输入的状态。 (如果时钟输入为低电平有效,则为下降沿)[2] 因此它被称为D 触发器,因为输出采用D 输入或数据输入的值,并将其延迟一个时钟计数。D 触发器可以被解释为一个基本存储单元、零阶保持器或延迟线。
真值表
时钟 D Q Qprev 上升沿 0 0 X 上升沿 1 1 X 非上升沿 X Qprev
('X' 表示无关条件,这意味着信号无关紧要)
这些触发器非常有用,因为它们构成了移位寄存器的基础,而移位寄存器是许多电子设备中必不可少的部分。D 触发器相对于 D 型锁存器的优势在于它在时钟变为高电平的那一刻“捕获”信号,并且数据线的后续变化不会影响 Q,直到下一个上升沿时钟边沿。一个例外是,一些触发器有一个“复位”信号输入,它将复位 Q(为零),并且可以是异步的或同步的时钟。
上面的电路将寄存器的内容向右移动,每次时钟的有效跃迁移动一位。输入 X 被移入最左边的位位置。
如果 T 输入为高电平,则每次时钟输入被选通时,T 触发器都会改变状态(“触发”)。如果 T 输入为低电平,则触发器将保持前一个值。这种行为由特征方程描述
- (或者,在没有 XOR 运算符的情况下,等效的:)
并且可以在真值表中描述
T 触发器操作 [1] | ||||||||
---|---|---|---|---|---|---|---|---|
特性表 | 激励表 | |||||||
注释 | 注释 | |||||||
0 | 0 | 0 | 保持状态(无 clk) | 0 | 0 | 0 | 无变化 | |
0 | 1 | 1 | 保持状态(无 clk) | 1 | 1 | 0 | 无变化 | |
1 | 0 | 1 | 触发 | 0 | 1 | 1 | 补码 | |
1 | 1 | 0 | 触发 | 1 | 0 | 1 | 补码 |
当 T 保持为高电平时,触发触发器将时钟频率除以二;也就是说,如果时钟频率为 4 MHz,则从触发器获得的输出频率将为 2 MHz。这种“除以”特性在各种类型的数字计数器中都有应用。T 触发器也可以使用 JK 触发器(J & K 引脚连接在一起并充当 T)或 D 触发器(T 输入和 Qprevious 通过 XOR 门连接到 D 输入)构建。
JK 触发器增强了 SR 触发器的行为(J=置位,K=复位),通过将 S = R = 1 条件解释为“翻转”或触发命令。具体来说,组合 J = 1,K = 0 是一个置位触发器的命令;组合 J = 0,K = 1 是一个复位触发器的命令;组合 J = K = 1 是一个触发触发器的命令,即将其输出更改为其当前值的逻辑补码。设置 J = K = 0 不会导致 D 触发器,而是会保持当前状态。为了合成 D 触发器,只需将 K 设置为 J 的补码。因此,JK 触发器是一个通用触发器,因为它可以配置为工作为 SR 触发器、D 触发器或 T 触发器。注意:触发器是正边沿触发(时钟脉冲),如时序图所示。
JK 触发器的特征方程为
相应的真值表为
JK 触发器操作 [1] | ||||||||
---|---|---|---|---|---|---|---|---|
特性表 | 激励表 | |||||||
J | K | Qnext | 注释 | Q | Qnext | J | K | 注释 |
0 | 0 | 保持状态 | 0 | 0 | 0 | X | 无变化 | |
0 | 1 | 复位 | 0 | 1 | 1 | X | 置位 | |
1 | 0 | 置位 | 1 | 0 | X | 1 | 复位 | |
1 | 1 | 触发 | 1 | 1 | X | 0 | 无变化 |