大一小菜鸟还没学过模电数电,对电路的理解过于肤浅,对计算机存储特性的本质也是懵懵懂懂。看完B站上这期视频(哔哩哔哩计算机科学速成课06寄存器),感觉自己对计算机的存储原理又有了进一步的理解。
锁存器,门关时输出上次的结果,门开时输出=输入端。
但是究竟最开始发明这种神奇好用的元件时是怎么想的呢?
本文尝试以逻辑门一步步剖析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的变换。移步哔哩哔哩计算机科学速成课06寄存器
5:30之后的内容,实现了基于锁存器的更高一级抽象。