在讲存储器之前最好理解一下这两张图,这个构成存储器的核心:
R-S触发器(构成锁存器的核心):
D型锁存器(构成存储器的核心)
上一篇讲到过触发器具备保存信息的能力,但是只能保存1位信息。后来讲到了锁存器,可以根据时钟改变保存的状态,其电路图如下:
如上图。我们简写如下:
把多个一位锁存器组织在一起成为多位锁存器,需要把写端信号连接到系统中。这样就构成了一个8位锁存器,可以保存8位信息。
电学符号:
现在这个8位锁存器只能一次性存储8个二进制数。但是我们想能否只存储8个单独的比特。
假如现在还有一个灯泡,用一个灯泡来表示8位锁存器中每一位是什么状态。总的来说,一个有8位,则需要3个开关。先把图给了
之前讲到过2-1选择器,这里是8-1选择器,也就是一次只选择一条线路的电流输出。目前可以通过三个开关来控制输出8位锁存器具体哪一位了。
具体输出对应到下表:
其实8-1选择器实现非常简单,也就是利用了与门的特性,只能全为1才输出1。这样就能确定是哪个的输入。
暂时解决了输出端,还有输入端。输入端也要满足一次可以针对八位锁存器某一位进行输入。可以通过译码器实现,之前讲过译码器就是一次只有一个线路输出1,在任何时刻,译码器只会有一个锁存器的输出为1其余为0。同样通过三个开关控制。
3-8译码器原理图和8-1选择器类似,8-1译码器最后输出连到同一个开关,3-8译码器是各个输出分开。
下面是8个锁存器完整电路图如下:
三个开关对译码器的输出影响
译码器和选择器具有相同的信号,都是通过地址线连接的(也就是开关),合在一起叫做地址端口。长度为3位的地址决定了8位锁存器哪一个锁存器被引用。
像这种锁存器、译码器、选择器合在一起的器件叫做读写存储器,依旧是随机访问存储器(RAM)。电学符号如下:
上面的电路可以保存信息,并且可以检查每个锁存器里面保持的什么数据(读),也可以像每个锁存器里面存入数据(写),只需要改变地址及相关的输入就可以了。
RAM阵列的组合形式很多,可以通过共享地址的方式把两个8x1的RAM连接起来,如下
则每次输入输出可以有两个了。可以存储二进制依然是8个,但是每个数的位宽为2。简称8-2RAM阵列。2代表位宽,8代表锁存器保存的位数,也就是2的地址线数量次方。
另一种连接方式如下:
选择端之所以连接到译码器和选择器,作用是在两个RAM阵列中选择一个,本质上起到了第四根地址线的作用。实质上是16x1的RAM阵列。
RAM阵列存储的容量和地址输入端的数量有直接关系,通过上面发现时成2的幂次方变化。特别注意上面两个8位锁存器不同连接方式代表的意思不同之处。
根据上面的规律可以扩展到下图
一共10根地址线,共10个输入端口,和8个(8x1的存储器)组成。每8个比特位一组,一共1024(2的十次方)组。此外包含了8位的输入端和8位的输出端。这个RAM阵列容量为1024字节(一个字节8比特)
注意一下:地址线的个数决定了容量的大小范围,多少个存储器决定了保存数据的大小范围比如上面这个1024x8的存储器表示,能够保存1024个数据,每个数据最多8位也就是0到255。
再把存储的容量扩大:
这个是能存储65536个字节的存储器。为什么用64KB的RAM阵列,因为65536是2的16次方,具备16位的寻址端。也就是地址恰好可以用2个字节表示,地址转为为16进制的访问就是0000h到FFFFh
下面用更加形象的控制面板来说明
- 控制端:用于控制是外部的电路控制存储器还是控制面板控制
- 写操作端:控制保存
简化的电路图(只关心输入输出):
到此为止已经把存储器介绍完。从上面可以看出,存储器依赖于锁存器,锁存器依赖于触发器,触发器又依赖于继电器。最终都会化简到继电器这个器件。