锁存器
复习
- 第八章:设计完成了半加器,可以完成两个一位二进制数的加法,但不能处理来自低位的进位
- 第九章:设计完成了加法器,可以处理三个输入(两个加数和一个进位),并可以串联构成多位加法器
- 第十章:掌握了原码、反码和补码的概念,理解了补码可以统一加减法运算
- 第十一章:设计完成了减法器、乘法器和除法器,它们都基于加法器和移位操作
- 第十二章:理解了算术逻辑单元(ALU)如何集成各种运算功能
TL;DR
- 触发器是计算机中最基本的记忆单元
- 触发器可以存储一位二进制数据(0 或 1)
- 触发器是实现时序逻辑电路的基础
- 触发器是构建寄存器和存储器的基本单元
正文
引言
到目前为止,我们已经了解了计算机如何进行运算:通过 ALU 执行各种算术和逻辑操作。计算机四大部件中的运算器勉勉强强算是完成了(忘记了?请返回第二章:计算机的构成,做个提醒,四大部件分别为输入设备、存储器、运算器和输出设备)。接下来让我们将目光瞄向存储中间结果的存储器。
需要存储的理由
想象一下,如果计算机只有 ALU 而没有存储功能:
- 不能保存中间结果
- 不能记住程序状态
- 不能存储用户数据
- 每次都要重新输入数据
- 一旦输入错误就完蛋了
所以,存储功能和运算功能一样重要。
锁存器:最简单的记忆电路
最基本的存储单元就是触发器(Flip-Flop)。但在介绍触发器之前,我们先来看一个更简单的电路:锁存器(Latch)。锁存器由一个非常奇妙的想法引发。
首尾相连?
既然有反相器这么好玩儿的东西,为什么没有人想到将它首尾相连呢?
SR 锁存器
最基本的锁存器是 SR 锁存器(Set-Reset Latch):
-
两个输入:
- S(Set):设置输出为 1
- R(Reset):设置输出为 0
-
两个输出:
- Q:存储的值
- Q̄(Q非):存储值的反转
-
真值表:
S | R | Q(下一状态) | 说明 |
---|---|---|---|
0 | 0 | Q(保持) | 保持当前状态 |
0 | 1 | 0 | 复位 |
1 | 0 | 1 | 置位 |
1 | 1 | 不确定 | 禁止状态 |
从锁存器到触发器
锁存器有一个问题:它对输入信号太敏感了。只要输入变化,输出就可能变化。这在复杂的电路中可能导致混乱。
触发器通过增加时钟信号解决了这个问题:
- 只在时钟信号的特定时刻(如上升沿)才响应输入
- 其他时候保持状态不变
- 这样就实现了同步操作
思考题 1
为什么计算机需要时钟信号?直接用锁存器不行吗?
思考题 2
触发器是如何实现掉电不丢失数据的?
小结
知识点
- 锁存器的基本原理
- 触发器的类型和特点
- 时钟信号的作用
- 触发器的应用场景
- 设计中的关键考虑
思考题答案(仅供参考)
思考题 1
时钟信号的重要性:
- 同步控制,避免数据竞争
- 提供稳定的时序参考
- 便于调试和故障排除
- 简化电路设计
- 提高系统可靠性
思考题 2
一般的触发器在掉电后会丢失数据。要实现掉电不丢失,需要:
- 使用非易失性存储技术(如FRAM)
- 添加备用电源(如超级电容)
- 在掉电前将数据保存到非易失性存储器
- 使用特殊的存储单元(如铁电存储器)
参考资料
- Wikipedia(zh):触发器:触发器的详细介绍
- Wikipedia(zh):时序逻辑:时序逻辑的基本概念
推荐
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪