本章目录 23 节

← 返回课程首页

第 11 章 从反馈到存储:锁存器

1. 本章要解决的问题

前十章的电路都有一个共同特点:输入稳定后,输出由当前输入唯一决定。这样的电路能计算,却不能记住过去。

本章要回答五个问题:

  1. 一组逻辑门怎样保存一位信息?
  2. 反馈为什么能让电路具有两个稳定状态?
  3. SR 锁存器怎样执行置位、复位和保持?
  4. 为什么 SR 锁存器存在禁止输入组合?
  5. D 锁存器怎样用一个数据端避免正常使用中的禁止组合?

2. 与第 10 章的联系

第 10 章讨论组合逻辑的传播延迟:输入变化后,信号沿路径传播,输出经过暂态后稳定。锁存器也由有延迟的逻辑门构成,但它把输出送回输入,形成反馈环路。环路中的旧输出会继续影响新输出,于是“历史”进入了电路行为。

组合逻辑常写成

\[ Y=F(X), \]

其中 \(X\) 是当前输入。具有状态的时序逻辑需要写成

\[ Q^{+}=F(X,Q), \]

\(Q\) 是当前保存的状态,\(Q^{+}\) 是输入作用并稳定后的下一状态。即使当前输入相同,只要原来的 \(Q\) 不同,下一状态或输出就可能不同。

3. 前置知识快速检查

  1. 反相器输入为 0 或 1 时,稳定输出分别是什么?
  2. 组合逻辑输出为什么不会在输入变化的同一时刻完成变化?
  3. NOR 门和 NAND 门分别在什么输入条件下输出 1 和 0?
  4. “有效低”信号的命名和有效状态是什么?

参考答案:

  1. 输入 0 时输出 1,输入 1 时输出 0。
  2. 门具有传播延迟,节点还要给负载电容充放电。
  3. NOR 仅在全部输入为 0 时输出 1;NAND 仅在全部输入为 1 时输出 0。
  4. 本书使用后缀 _n 表示有效低;信号为 0 时执行命名动作。

若第 1、2 题不熟悉,先回看第 3 章第 4 章;若第 3、4 题不熟悉,回看第 5 章第 8 章

4. 学习目标

学完本章后,你应能:

5. 组合逻辑为什么记不住

设一个 2 选 1 MUX 当前输入为 \(D_0=0\)\(D_1=1\)\(S=0\)。无论一秒前发生过什么,它的稳定输出都由当前条件决定:\(Y=D_0=0\)。只要当前输入完全相同,稳定输出也完全相同。

存储元件不同。图 11-1 给出两段历史:当前外部控制输入都处于“保持”,但第一段历史曾把状态写成 1,第二段历史曾把状态写成 0,因此当前输出不同。

相同当前输入下状态由历史决定

图 11-1 组合逻辑由当前输入唯一决定;存储元件在保持条件下延续先前状态

状态(state)是电路对过去信息的内部保存。一个能保存 1 bit 的元件至少需要两个可区分的稳定状态,分别代表逻辑 0 和逻辑 1。

6. 反馈把输出重新变成输入

反馈(feedback)是把电路输出的一部分送回前级输入。对纯前向组合逻辑,沿信号方向走一遍会到达输出;加入反馈后,沿路径可能回到原节点,形成环路。

最基础的存储直觉来自两个交叉耦合反相器:第一个反相器的输出连接第二个反相器的输入,第二个反相器的输出又连接第一个反相器的输入。两个内部节点记作 \(Q\)\(\overline Q\)

观察图 11-2 的两个稳定状态。若 \(Q=1\),另一节点被反相为 0;这个 0 又支持 \(Q=1\)。若 \(Q=0\),同样的反馈关系支持另一组状态。每个状态都通过环路强化自己。

交叉耦合反相器的两个稳定状态

图 11-2 两个交叉耦合反相器形成双稳态,\(Q=1\)\(Q=0\) 都能自我维持

具有两个稳定状态的性质称为双稳态(bistability)。数字存储正是用两个稳定的电压状态代表 0 和 1。这里仍然遵守模拟电路规律:节点电压、器件增益、噪声和传播延迟决定电路怎样从中间状态走向某个稳定状态;门级模型只保留最终逻辑关系。

两个交叉耦合反相器能够保持状态,却缺少方便、受控的写入端。SR 锁存器在反馈环路上加入置位和复位输入,让外部信号能够选择稳定状态。

7. NOR 型 SR 锁存器:高有效置位与复位

SR 锁存器(set-reset latch)由两个交叉耦合逻辑门构成。先看由 NOR 门构成的高有效版本。输入 \(S\) 表示置位(set),输入 \(R\) 表示复位(reset):

采用图 11-3 的连接定义:

\[ Q=\overline{R+\overline Q}, \]

\[ \overline Q=\overline{S+Q}. \]

NOR型SR锁存器结构与状态表

图 11-3 高有效 NOR 型 SR 锁存器的交叉耦合结构、输入动作和稳定状态表

状态表如下。

\(S\) \(R\) \(Q^{+}\) 动作
0 0 \(Q\) 保持
1 0 1 置位
0 1 0 复位
1 1 禁止 两个输出同时被压为 0

表中的 \(Q\) 表示当前状态,\(Q^{+}\) 表示输入传播并稳定后的状态。前三行有效时,下一状态可以写成特征方程:

\[ Q^{+}=S+\overline{R}\,Q,\qquad SR=0. \]

条件 \(SR=0\) 表示 \(S\)\(R\) 不能同时为 1。这个方程的作用是压缩有效状态表:\(S=1\) 时直接置位;\(S=0,R=0\) 时保留 \(Q\)\(R=1\) 时清零。

立即检查

若当前 \(Q=0\),先施加 \(S=1,R=0\),再回到 \(S=R=0\),最终 \(Q\) 是多少?

答案是 1。置位阶段把 \(Q\) 写成 1,回到保持输入后,反馈继续维持这个状态。

8. 置位过程不是“查表瞬移”

以初始 \(Q=0,\overline Q=1\) 为例,施加 \(S=1,R=0\)

  1. 下方 NOR 门看到 \(S=1\),经过传播延迟后把 \(\overline Q\) 拉到 0;
  2. 上方 NOR 门看到 \(R=0\) 且反馈 \(\overline Q=0\),再经过传播延迟后把 \(Q\) 拉到 1;
  3. \(Q=1\) 又通过反馈确保 \(\overline Q=0\)
  4. 即使 \(S\) 回到 0,两个节点仍停留在 \(Q=1,\overline Q=0\)

因此,“锁存”不是抽象符号凭空保存数据,而是两个有增益、带延迟的门持续相互驱动。只要电源存在且反馈环路正常,状态就能维持。

9. 禁止输入为什么危险

NOR 型 SR 锁存器在 \(S=R=1\) 时,两个 NOR 输出都被强制为 0,因而 \(Q=\overline Q=0\)。这破坏了正常状态下两者互补的关系。

真正的风险出现在 \(S\)\(R\) 从 1 返回 0 时。如果两路控制并非严格同时释放,或者两个门的实际延迟略有差别,一侧会先取得优势,反馈随后把电路推向对应稳定状态。最终可能得到 \(Q=1\),也可能得到 \(Q=0\)

图 11-4 把“同时禁止”与“释放后的竞争”分开画出。门级数字图中的同时变化只是理想描述;实际电路总有微小失配和噪声。

SR锁存器禁止输入与释放竞争

图 11-4 NOR 型 SR 锁存器进入禁止状态后,释放次序和内部延迟决定最终落入哪个稳定状态

若两个内部节点在一段时间内都没有迅速落入合法高低电平,电路可能经历亚稳态的直观情形。第 15 章会正式讨论亚稳态、恢复过程和同步器。本章只需记住:禁止组合不能用来可靠地“随机选择”一个状态。

10. NAND 型 SR 锁存器:输入有效电平相反

把两个 NOR 门换成交叉耦合 NAND 门,可得到低有效 SR 锁存器。输入写作 \(S_n\)\(R_n\)

\(S_n\) \(R_n\) \(Q^{+}\) 动作
1 1 \(Q\) 保持
0 1 1 置位
1 0 0 复位
0 0 禁止 两个输出同时为 1

高有效 NOR 型与低有效 NAND 型不能只靠门的外形区分,还要看输入名、有效电平和状态表。看到下划线、上划线或 _n 后缀时,先翻译成一句动作语言,例如“\(R_n=0\) 才执行复位”。

11. 从 SR 到 D:让两个控制请求不再冲突

SR 锁存器给了外部两个动作输入,但普通数据存储更希望只有一个数据端:写 1 时置位,写 0 时复位。D 锁存器(data latch)使用数据 \(D\) 和使能 \(EN\),内部生成互斥的置位与复位请求:

\[ S=EN\cdot D, \]

\[ R=EN\cdot\overline D. \]

因为 \(D\)\(\overline D\) 不会在稳定条件下同时为 1,所以 \(S\)\(R\) 不会同时为 1。图 11-5 展示了高电平有效 D 锁存器的逻辑关系。

高电平有效D锁存器结构

图 11-5 使能与数据生成互斥的置位/复位请求,使 NOR 型 SR 锁存器成为 D 锁存器

它的状态表很短:

\(EN\) \(D\) \(Q^{+}\) 动作
0 0 或 1 \(Q\) 保持
1 0 0 写入 0
1 1 1 写入 1

对应的特征方程为

\[ Q^{+}=EN\cdot D+\overline{EN}\cdot Q. \]

这个方程与 2 选 1 MUX 完全同形:\(EN=1\) 时选择新数据 \(D\)\(EN=0\) 时选择反馈回来的旧状态 \(Q\)。因此 D 锁存器也可以理解为“输入数据与反馈状态之间的受控选择”。

12. 透明期与保持期

对高电平有效 D 锁存器:

“透明”不等于零延迟。只要 \(EN=1\)\(Q\) 会跟随 \(D\),但每次变化都要穿过实际门或传输结构。图 11-6 中,阴影区表示透明期,白色区表示保持期。

D锁存器透明期和保持期波形

图 11-6 高电平有效 D 锁存器在 \(EN=1\) 时跟随 \(D\),在 \(EN=0\) 时保持关闭前写入的状态

锁存器关闭前,\(D\) 需要提前稳定一小段时间;关闭后也需要继续稳定一小段时间,才能可靠保存预期值。这两段要求分别对应建立时间和保持时间,第 14 章会给出正式定义和时序检查方法。

13. 锁存器不是边沿触发器

高电平有效 D 锁存器在整个 \(EN=1\) 区间都允许数据穿过,属于电平敏感(level-sensitive)存储元件。边沿触发器只在特定时钟边沿附近采样数据,第 12 章会详细讨论。

一个常见误读是:看到 \(EN\) 上升沿,就认为锁存器只在那个瞬间读取一次 \(D\)。实际情况是,只要 \(EN\) 继续保持 1,后续 \(D\) 变化仍会传播到 \(Q\)。直到 \(EN\) 变为 0,状态才被关在反馈环路中。

如果多个同相有效的锁存器串联,并且它们同时处于透明期,数据可能连续穿过多级,这称为穿透或竞赛式传播风险。基础同步系统常通过不重叠相位、主从结构或边沿触发器控制这种行为。

14. 门级模型与晶体管实现之间的连接

本章主要使用门级模型,因为当前任务是理解状态和控制关系。落到 CMOS 电路时,锁存器仍由晶体管、内部节点电容和反馈增益构成。

常见 D 锁存器可以使用传输门和交叉耦合反相器实现:

这与第 2 章传输门和第 3 章反相器形成直接连接。实际单元还要检查内部竞争、短路电流、时钟负载、数据建立/保持窗口和 PVT 条件。

15. 完整例题

例题 1:证明当前输入相同仍可得到不同输出

有两个相同的 NOR 型 SR 锁存器,当前都满足 \(S=R=0\)。锁存器甲此前执行过置位,锁存器乙此前执行过复位。求当前输出。

分析: \(S=R=0\) 是保持条件,不指定新值。

两个电路当前外部输入相同,输出却不同,这正是内部状态的含义。

变式: 若这是两个组合 NOR 门且当前输入相同,它们的稳定输出不会保留这种历史差异。

例题 2:逐步分析 NOR 型 SR 输入序列

初始 \(Q=0\),依次施加:

阶段 \(S\) \(R\)
1 0 0
2 1 0
3 0 0
4 0 1
5 0 0

逐行判断:

  1. 保持初值,\(Q=0\)
  2. 置位,\(Q=1\)
  3. 保持刚写入的 1,\(Q=1\)
  4. 复位,\(Q=0\)
  5. 保持 0,\(Q=0\)

输出序列为 0, 1, 1, 0, 0

变式: 若阶段 2 的 \(S=1\) 脉冲短于锁存器的最小有效脉冲宽度,实际电路不一定完成可靠置位。

例题 3:翻译低有效 NAND 型 SR 输入

初始 \(Q=0\),输入从 \((S_n,R_n)=(1,1)\) 变为 \((0,1)\),随后回到 \((1,1)\)

先按有效电平翻译:\(S_n=0\) 表示执行置位。因此第二阶段得到 \(Q=1\);回到 \((1,1)\) 后进入保持,最终仍为 1。

变式: \((S_n,R_n)=(1,0)\) 执行复位;\((0,0)\) 不是“同时置位和复位后取平均”,而是禁止组合。

例题 4:从状态表推导 D 锁存器方程

高电平有效 D 锁存器有两种工作模式:

\(EN\) 当作 2 选 1 MUX 的选择信号:

\[ Q^{+}=EN\cdot D+\overline{EN}\cdot Q. \]

第一项只在透明期把 \(D\) 送入,第二项只在保持期选择旧状态。

变式: 若设计为低电平透明,只需交换选择条件:\(Q^{+}=\overline{EN}D+EN\cdot Q\)

例题 5:带传播延迟判断 D 锁存器输出

一个高电平有效 D 锁存器初始 \(Q=0\),数据到输出传播延迟按 20 ps 计算:

在透明期内,50 ps 的数据变化经过 20 ps 后到达 \(Q\),所以 \(Q\) 在约 70 ps 变为 1。90 ps 时锁存器关闭并保存 1。110 ps 的数据变化发生在保持期,不传播到 \(Q\),因此 \(Q\) 继续为 1。

变式:\(EN\) 一直保持 1,110 ps 的变化会在约 130 ps 使 \(Q\) 变为 0。

16. 常见误区与反例

误区 1:\(Q\)\(\overline Q\) 在任何输入下都必然互补

在合法稳定状态下它们互补。NOR 型 \(S=R=1\) 时两者都为 0;NAND 型 \(S_n=R_n=0\) 时两者都为 1。

误区 2:保持等于输出固定为 0

保持的含义是延续原状态。原来是 1 就继续为 1,原来是 0 就继续为 0。

误区 3:低有效输入为 1 时执行动作

低有效意味着 0 才有效。\(R_n=0\) 执行复位,\(R_n=1\) 表示复位请求未激活。

误区 4:D 锁存器在使能上升沿采样一次

高电平有效 D 锁存器在整个 \(EN=1\) 区间透明,不只响应上升沿。

误区 5:D 锁存器内部绝不会出现任何瞬态

\(D\)\(\overline D\) 由实际反相器产生,内部路径具有延迟。正确门级或晶体管级设计利用结构和时序条件保证外部功能,不能把理想互补关系误解为物理上的同时翻转。

误区 6:禁止输入释放后一定回到原状态

释放时两条反馈路径竞争,最终状态取决于微小延迟、失配和噪声,不能依赖它恢复到指定值。

17. 工程中的实际意义

锁存器是理解时序电路的第一块基石。它说明数字系统中的“记忆”来自受控反馈,而不是来自抽象变量本身。

在实际数字 IC 中,锁存结构用于:

不同用途会选择不同晶体管结构,但都要回答同一组问题:何时允许新数据进入,何时关闭输入并保持,禁止或违例条件怎样处理,输出何时稳定。

18. 本章知识链

组合逻辑只看当前输入
        ↓ 加入反馈
输出参与决定下一状态
        ↓ 交叉耦合
形成两个可自我维持的稳定状态
        ↓ 加入 S/R 控制
可以置位、复位和保持
        ↓ 用 D 与 EN 生成互斥请求
D 锁存器:透明期跟随,保持期记忆
        ↓
下一章:边沿触发器与寄存器

19. 本章小结

  1. 时序逻辑的下一状态取决于当前输入和当前状态。
  2. 反馈把输出送回输入,使过去状态能够继续影响电路。
  3. 两个交叉耦合反相器具有两个稳定状态,可以保存 1 bit。
  4. NOR 型 SR 锁存器使用高有效 \(S\)\(R\)00 保持,10 置位,01 复位,11 禁止。
  5. NAND 型 SR 锁存器使用低有效 \(S_n\)\(R_n\)11 保持,01 置位,10 复位,00 禁止。
  6. 禁止组合破坏正常互补输出,释放时会发生反馈竞争。
  7. D 锁存器用 \(D\)\(\overline D\) 生成互斥的置位和复位请求。
  8. 高电平有效 D 锁存器在 \(EN=1\) 时透明,在 \(EN=0\) 时保持。
  9. 锁存器是电平敏感元件,不等同于边沿触发器。
  10. 实际锁存器的可靠写入仍受传播延迟、脉冲宽度、建立时间和保持时间影响。

20. 练习

基础题

  1. 用一句话区分组合逻辑和具有状态的时序逻辑。
  2. 什么是反馈?为什么两个交叉耦合反相器可以形成两个稳定状态?
  3. 写出 NOR 型 SR 锁存器的四行状态表。
  4. 写出 NAND 型低有效 SR 锁存器的四行状态表。
  5. NOR 型 SR 锁存器的禁止输入是什么?此时 \(Q\)\(\overline Q\) 分别是什么?
  6. NAND 型 SR 锁存器的禁止输入是什么?此时 \(Q\)\(\overline Q\) 分别是什么?
  7. 对高电平有效 D 锁存器,分别说明 \(EN=1\)\(EN=0\) 时的行为。

分析与计算题

  1. NOR 型 SR 锁存器初始 \(Q=0\),依次输入 00→10→00→01→00。写出每一步稳定后的 \(Q\)
  2. NOR 型 SR 锁存器初始 \(Q=1\),输入一直保持 00。外部输入不变时,为什么 \(Q\) 不会自动回到 0?
  3. NAND 型 SR 锁存器初始 \(Q=1\),依次输入 11→10→11→01→11。写出每一步动作和 \(Q\)
  4. 对 NOR 型 SR 锁存器,将 \(S=R=1\) 后同时返回 0。为什么不能根据理想状态表指定最终 \(Q\)
  5. \(S=EN\cdot D\)\(R=EN\cdot\overline D\) 证明稳定输入下不会出现 \(S=R=1\)
  6. 使用 2 选 1 MUX 形式解释 \(Q^{+}=EN\cdot D+\overline{EN}\cdot Q\)
  7. 高电平有效 D 锁存器初始 \(Q=0\)\(EN=1\)\(D\) 依次为 0→1→0,随后 \(EN\) 变为 0,最后 \(D\) 变为 1。忽略延迟,写出 \(Q\) 的变化。
  8. 某高电平有效 D 锁存器数据传播延迟为 25 ps。\(EN\) 在 0~120 ps 为 1,\(D\) 在 40 ps 从 0 变 1,在 150 ps 从 1 变 0。初始 \(Q=0\)。求 \(Q\) 的主要变化时刻和最终值。

综合题

  1. 某设计者把两个高电平有效 D 锁存器串联,并让它们使用同一个 \(EN\)。说明 \(EN=1\) 时可能发生什么,为什么不能把这组结构直接当作两个独立的边沿采样级。
  2. 一个控制信号名为 reset_n。有人把它接到 NAND 型 SR 锁存器的 \(R_n\),却在 reset_n=1 时期待复位。指出错误并写出正确动作。
  3. 比较 NOR 型 SR、NAND 型 SR 和高电平有效 D 锁存器的输入有效电平、保持条件、禁止条件与主要用途。

21. 练习答案

展开第 11 章练习答案

题 1

组合逻辑的稳定输出由当前输入唯一决定;时序逻辑的行为还取决于内部保存的当前状态,因此同一当前输入可以对应不同输出。

题 2

反馈把输出信号送回前级输入。两个反相器交叉耦合后,\(Q=1,\overline Q=0\) 会互相支持,\(Q=0,\overline Q=1\) 也会互相支持,因此形成两个稳定状态。

题 3

\(S\) \(R\) \(Q^{+}\) 动作
0 0 \(Q\) 保持
1 0 1 置位
0 1 0 复位
1 1 禁止 \(Q=\overline Q=0\)

题 4

\(S_n\) \(R_n\) \(Q^{+}\) 动作
1 1 \(Q\) 保持
0 1 1 置位
1 0 0 复位
0 0 禁止 \(Q=\overline Q=1\)

题 5

禁止输入为 \(S=R=1\)。两个 NOR 门都因至少一个输入为 1 而输出 0,所以 \(Q=\overline Q=0\)

题 6

禁止输入为 \(S_n=R_n=0\)。两个 NAND 门都因至少一个输入为 0 而输出 1,所以 \(Q=\overline Q=1\)

题 7

\(EN=1\) 时锁存器透明,\(Q\) 在传播延迟后跟随 \(D\)\(EN=0\) 时输入写入通路关闭,反馈保持原来的 \(Q\)

题 8

从初值开始逐步得到:

输入 \(SR\) 动作 \(Q\)
00 保持 0
10 置位 1
00 保持 1
01 复位 0
00 保持 0

因此序列为 0,1,1,0,0

题 9

00 没有强制置位或复位。当前 \(Q=1,\overline Q=0\) 通过交叉耦合反馈互相支持,只要电源和反馈环路存在,状态就继续保持。

题 10

输入 \(S_nR_n\) 动作 \(Q\)
11 保持 1
10 复位 0
11 保持 0
01 置位 1
11 保持 1

题 11

\(S=R=1\) 时两个输出都为 0。返回 00 后,两侧都试图通过反馈把对方推向相反状态。实际门延迟、器件失配、释放次序和噪声决定哪一侧先占优势,理想状态表没有包含这些模拟细节,因此不能指定最终 \(Q\)

题 12

\[ SR=(EN\cdot D)(EN\cdot\overline D)=EN\cdot D\cdot\overline D=0. \]

稳定布尔输入下 \(D\cdot\overline D=0\),所以 \(S\)\(R\) 不会同时为 1。

题 13

\(EN\) 当作 MUX 选择端:\(EN=1\) 时第一项有效,选择新数据 \(D\)\(EN=0\) 时第二项有效,选择反馈状态 \(Q\)。因此同一个方程同时表达透明和保持。

题 14

\(EN=1\) 时,\(Q\) 跟随 \(D\),因此依次为 0→1→0。随后 \(EN=0\),锁存器保存 0;最后 \(D\) 变为 1 也不会改变 \(Q\)。最终 \(Q=0\)

题 15

\(D\) 在 40 ps 变为 1 时锁存器透明,经过 25 ps 后,\(Q\) 在约 65 ps 变为 1。120 ps 时 \(EN\) 关闭,保存 1。150 ps 的 \(D\) 下降发生在保持期,不传播到输出。最终 \(Q=1\)

题 16

两个锁存器在 \(EN=1\) 时同时透明。第一级的输入变化可以经过第一级传播到其中间输出,再继续穿过第二级,使数据在一个透明窗口内跨越两级。这种穿透行为不同于两个独立边沿各采样一次,不能仅靠串联框图假定形成两级离散状态。

题 17

错误在于忽略了 _n 的低有效含义。reset_n=0 才表示复位请求有效,应使 \(R_n=0\),把 \(Q\) 复位为 0;`reset_n=1$ 表示释放复位。

题 18

类型 有效输入 保持条件 禁止条件 主要用途
NOR 型 SR \(S,R\) 高有效 00 11 直接置位/复位控制和基础反馈分析
NAND 型 SR \(S_n,R_n\) 低有效 11 00 低有效控制接口和基础反馈分析
高电平有效 D \(EN=1\) 时接收 \(D\) \(EN=0\) 正常稳定使用下无 SR 禁止组合 受使能控制地保存一位数据

22. 自测清单

若第 3~7 项不稳定,重新画图 11-3 和图 11-4,并对每种输入先判断哪个门被外部信号强制,再沿反馈路径判断另一侧。若第 8~11 项不稳定,遮住图 11-6 的 \(Q\) 波形,只根据 \(EN\) 的透明区间重新绘制。

23. 下一章衔接

D 锁存器解决了“在某个电平区间允许写入、其余时间保持”的问题。下一章《触发器与寄存器》会进一步把采样集中到时钟边沿,并把多个一位存储元件并联成多 bit 寄存器。届时将正式比较锁存器、边沿触发器、使能寄存器以及同步/异步复位的时序行为。