锁存器

复习

  1. 第八章:设计完成了半加器,可以完成两个一位二进制数的加法,但不能处理来自低位的进位
  2. 第九章:设计完成了加法器,可以处理三个输入(两个加数和一个进位),并可以串联构成多位加法器
  3. 第十章:掌握了原码、反码和补码的概念,理解了补码可以统一加减法运算
  4. 第十一章:设计完成了减法器、乘法器和除法器,它们都基于加法器和移位操作
  5. 第十二章:理解了算术逻辑单元(ALU)如何集成各种运算功能

TL;DR

  • 触发器是计算机中最基本的记忆单元
  • 触发器可以存储一位二进制数据(0 或 1)
  • 触发器是实现时序逻辑电路的基础
  • 触发器是构建寄存器和存储器的基本单元

正文

引言

  到目前为止,我们已经了解了计算机如何进行运算:通过 ALU 执行各种算术和逻辑操作。计算机四大部件中的运算器勉勉强强算是完成了(忘记了?请返回第二章:计算机的构成,做个提醒,四大部件分别为输入设备、存储器、运算器和输出设备)。接下来让我们将目光瞄向存储中间结果的存储器。

需要存储的理由

  想象一下,如果计算机只有 ALU 而没有存储功能:

  1. 不能保存中间结果
  2. 不能记住程序状态
  3. 不能存储用户数据
  4. 每次都要重新输入数据
  5. 一旦输入错误就完蛋了

  所以,存储功能和运算功能一样重要。

锁存器:最简单的记忆电路

  最基本的存储单元就是触发器(Flip-Flop)。但在介绍触发器之前,我们先来看一个更简单的电路:锁存器(Latch)。锁存器由一个非常奇妙的想法引发。

首尾相连?

  既然有反相器这么好玩儿的东西,为什么没有人想到将它首尾相连呢?

SR 锁存器

  最基本的锁存器是 SR 锁存器(Set-Reset Latch):

  1. 两个输入:

    • S(Set):设置输出为 1
    • R(Reset):设置输出为 0
  2. 两个输出:

    • Q:存储的值
    • Q̄(Q非):存储值的反转
  3. 真值表:

SRQ(下一状态)说明
00Q(保持)保持当前状态
010复位
101置位
11不确定禁止状态

从锁存器到触发器

  锁存器有一个问题:它对输入信号太敏感了。只要输入变化,输出就可能变化。这在复杂的电路中可能导致混乱。

  触发器通过增加时钟信号解决了这个问题:

  1. 只在时钟信号的特定时刻(如上升沿)才响应输入
  2. 其他时候保持状态不变
  3. 这样就实现了同步操作

思考题 1

  为什么计算机需要时钟信号?直接用锁存器不行吗?

思考题 2

  触发器是如何实现掉电不丢失数据的?

小结

知识点

  • 锁存器的基本原理
  • 触发器的类型和特点
  • 时钟信号的作用
  • 触发器的应用场景
  • 设计中的关键考虑

思考题答案(仅供参考)

思考题 1

  时钟信号的重要性:

  1. 同步控制,避免数据竞争
  2. 提供稳定的时序参考
  3. 便于调试和故障排除
  4. 简化电路设计
  5. 提高系统可靠性

思考题 2

  一般的触发器在掉电后会丢失数据。要实现掉电不丢失,需要:

  1. 使用非易失性存储技术(如FRAM)
  2. 添加备用电源(如超级电容)
  3. 在掉电前将数据保存到非易失性存储器
  4. 使用特殊的存储单元(如铁电存储器)

参考资料

  1. Wikipedia(zh):触发器:触发器的详细介绍
  2. Wikipedia(zh):时序逻辑:时序逻辑的基本概念

推荐

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪