在上一篇文章编码:隐匿在计算机软硬件背后的语言(6)--反馈与触发器中,我们知道一个反向器、两个与门和两个或非门可以构成一个D型电平触发器。它可以存储一位信息,为了表达地更清晰,我们把输入端和输出端重新命名,以与功能相符,如下图所示
当写入端为1时,数据输出端与数据输入端同步;当写入端为0时,数据输入端对输出没有影响,输出端存储的数据是输入端最后一次输入。我们也叫它1位锁存器。简化框图如下
如果我们想得到多位锁存器,可以像下面一样将8个1位锁存器连接起来
这样就得到了一个8位锁存器。还有另外一种方式将8个锁存器连接。即在输出端增加一个8-1选择器,同时增加三个选择输入端,这样每次我们就可以得到1位锁存输出。如下图所示
其中三个选择输入端的真值表和电路连接方式如下图所示
然后在输出端连接一个3-8译码器,通过输入来选择那个存储器被用到,其电路连接方式如下图所示
整个系统的电路连接方式如下所示
我们把3-8译码器和8-1选择器的三个输入端连在一起,8个锁存器的输入连在一起,组成上图所示的系统。
当写入端为1时,我们可以通过选择端来控制那个锁存器被写入和输出。上图中的3-8译码器和8-1选择器的三个输入端实际上就是所谓的地址端,地址端的输入决定了那个锁存器被引用。这种配置下的锁存器也叫做读/写存储器,更普遍的叫法是随机访问存储器(Random Access Memory)或者RAM,其简化结构如下
上述电路之所以被称为存储器是因为它既可以保存信息(写数据),又可以检查每个存储器保存了什么数据(读数据)。之所以被称为读/写存储器是因为读写操作都很自由,只需要改变地址和相关的输入就可以从8个锁存器中读出或者写入数据。上述的RAM阵列以8*1的方式组织起来。也就是阵列每次输出1位,可以存储8位(比特)。RAM阵列的组合形式有多种,比如
上图可以存储8个数据,每个数据有2位(比特)。是一个8*2的RAM存储器。还可以如下组织
上图又增加了一个1-2译码器和2-1选择器,相当于又增加了一位地址线;此时存储器变为16*1的RAM阵列。
从以上两图可以看出存储器的容量可以用下面的式子表示
RAM阵列的容量=2^地址输入端个数
那么如下图所示的RAM存储器
我们就可以知道它有10个地址位,因为1024=2的10次方。输出位数为8,也就是一个字节。存储容量为1024*8个比特。
下面说一下我们平时所说的存储器容量。
1024个字节=1KB,也就是上图所示的RAM存储器容量。(kilobyte,kilo表示“千”,与十进制的1000区分)
1024个KB=1MB(megabyte,mega在希腊文中意味着宏大)2^20字节
1024个MB=1GB(gigabyte,giga意思为巨大)2^30字节
1024个GB=1TB(terabyte,teras希腊语为巨人)2^40字节
1024个TB=1PB(petabyte)一批字节2^50字节
1024个PB=一安字节(exabyte)2^60字节
上图所示的RAM存储器容量为64KB,地址线为16条,也就是两个字节,数据位数是8位。