锁存器
在之前, 为保持按钮开关输入的值, 已经初步地讨论了电路存储的原理, 也即是利用了反馈的机制.
而在上一章, 则深入分析了各种门电路进行反馈连接后具有的一些特性, 特别地, 我们已经接触由两个 或非门 交叉连接构成的互相反馈的电路.
在这个电路里, 已经可以实现诸如 置位, 复位 等操作, 而且这些状态也可以保持, 也即是我们可以把一位(one bit)的电路状态锁住并保存于电路中, 这样的电路也即是 内存(memory) 的雏形.
存储的用途
在最开始, 我们只是为保存按钮开关按下的值, 当然内存的作用远不止于此. 举个简单的例子, 前面已经实现了多位数的加法器, 但只是对两个数进行相加.
如果想对多个多位数进行相加呢? 有两种方案:
- 使用多个多位加法器 但这样做显然是很不经济的, 当要加非常多的和时也不现实.
- 反复使用一个多位加法器 一种比较笨的方法, 先把两个数相加, 然后把和作为第一个加数输入, 另一个加数放第三个数, 然后又得到一个新的和...
对于方案二, 反复这样操作, 就可以把多个多位数加和了, 而且只需要用到一个多位数加法器.
自然, 这样的方案依然有它的弊端, 首要的一点就是很繁琐, 此外从输出又再次手动转到输入的过程也很容易出错.
如果有一个装置能够把临时的加和存储起来, 然后通过一个简易的控制手段又可以把结果转到输入端继续参与下一轮的加和, 事情就会方便很多.
而能够实现状态存储的这个装置, 称为 锁存器(latch). 我们将从最简单的 直接置位-复位锁存器(Set-Reset Latch) 开始, 然后是所谓的 D 锁存器 (也即是数据锁存器, D 指 Data), 最后, 按照简易的组合原则, 从一位的锁存器扩展到多位的锁存器, 这样就可以保存一个多位加法器的和了.
锁存器与触发器的区别
在一些不严格的情形下, 两个概念可能会被互换使用, 这也产生了一定的混乱.
在此处我们约定, 锁存器是电平触发的, 而后续要介绍的触发器则是边缘触发的.