锁存器原理/门电路/寄存器

大一小菜鸟还没学过模电数电,对电路的理解过于肤浅,对计算机存储特性的本质也是懵懵懂懂。看完B站上这期视频(),感觉自己对计算机的存储原理又有了进一步的理解。 锁存器,门关时输出上次的结果,门开时输出=输入端。 但是究竟最开始发明这种神奇好用的元件时是怎么想的呢? 本文尝试以逻辑门一步步剖析RAM的创造原理。(纯理论无软件要求,本文验证结果使用的是Multisim 14.0)

最原始的电路仅仅是AND和OR两个逻辑门

AND门

A B C 0 0 0 0 1 0 1 0 0 1 1 1

当AC相连: 以下是两个重点: 1)不论之前两端是什么只要B一朝变为0则之后再改变B值out始终为零,B低电平触发使这个逻辑门输出结果始终为0,可以说,AND逻辑门“锁住”表格中粗体的三个状态。 2)静态分析:我们试着保持B=1,将目光放到输出。由AND逻辑门特性可以认为当B=1时的输出全靠之前的输出决定

OR门

A B C 0 0 0 0 1 1 1 0 1 1 1 1

同样的,当AC相连 1)OR逻辑门使得1被“锁住”当B端一朝为1,输出就一直为1 2)静态分析:我们试着保持B=0,将目光放到输出。又由OR电路特性可以认为B=0时,输出靠之前的输出决定

AND和OR合体

就成了AND-OR锁存器 这个“AND-OR锁存器”怎么实现锁存? A=0,B=0的情况下,B取反后过AND门为1。所以AND门后即是OR电路输出结果相同。 回顾之前OR门的静态分析。 也就是全靠上一次输出结果决定本次输出结果,实现了锁存 验证逻辑关系

A B C 0 0 保存上次输出结果 0 1 0(复位) 1 0 1 1 1 0

但是这些规则使用起来未免太不方便 我们想要一个输入In和一个门锁Door,使得Door=1时OUT=In,Door=0时保存上次输入的内容。 也就是说In Door经过一系列变换达到下表的结果. 我们看到上面的AND-OR锁存器有两个输出结果为0的情况:分别是A=0 B=1和A=1 B=1我们选择哪个进行转换呢?别急稍微分析一下就能得到最优解

In Door A B out - 0 0 0 上次输出结果 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0

只考虑前半部分转换,则In door看成输入,A、B看成两个输出 先分析没有争议的前两行: In Door 对A是不是很像AND门的输入与输出?如果我们使用第四行刚好能配合AND门的结果皆大欢喜,电路元件的使用能大大减少之后也更好维护和查错,故我们在In Door选择AND门连接再好不过。

In Door A B out - 0 0 0 上次输出结果 1 1 1 0 1 0 1 0 1 0

如下图: In Door 对B

In Door B 0 0 0 1 0 0 1 1 0 0 1 1

看B和AND门两输入的输出结果好像,把In取反刚好和两输入AND门电路一毛一样 所以是In先取反再与Door并。 如图: 使用Multisim验证 发生器和示波器演示 蓝色是门 可见蓝色为高时,out=In 蓝色为低out=最后的In 如图就构造了一个最最简单的可以锁存1bit的锁存器。 当然这么小的锁存器是远远不够我们使用的 我们将八个锁存器并排放到一起,用一根线控制Door线,就成了寄存器,寄存器能存储的数的位数叫做位宽。当寄存器位宽不大时可以采用这种并行连接的方法,当位宽变大,并行连接就显得过于浪费线了。 我们通过矩阵来实现。 之后的实现从锁存器到到RAM的变换。移步 5:30之后的内容,实现了基于锁存器的更高一级抽象。

经验分享 程序员 微信小程序 职场和发展