某计算机主存储器的电流如下图所示,试问:1)ROM和RAM芯片的规格是多少?(用?K*?位表示)2)ROM和RAM的容量各是多少?(用KB表示)3)ROM和RAM的地址范围是多少?))

1. 题目讲解

在这里插入图片描述

1.1 地址线

这道题目主要是看地址线,地址线从 A 0 A 14 A_0到A_{14} ,也就是说有15条地址线,不要把它想象得太复杂,地址线其实就是电线,它能通过电流的高低不同来表示0和1这两个状态(即高电平和低电平),当你有一条电线的时候,你可以表示2个状态(01),当你拥有两条电线的时候,你可以表示4个状态(00,01,10,11),以此类推

换成地址线的话,也就是一条地址线可以选择2个地址,2条地址线可以选择4个地址……当你有13条电线的时候,你可以选择 2 13 2^{13} 个地址,记住这个结论,后面需要用到

那么,我们再来看地址线 A 0 A 12 A_0到A_{12} ,他们同时连接到一个ROM、四个RAM,当 A 0 A 12 A_0到A_{12} 地址线工作的时候,(注意,这里的“工作”是说他们有电流流过的时候,ROM和四个RAM是能够同时接收到地址线的电流,但5个存储器要同时工作是很混乱的,这个时候我们就需要用到译码器

1.2 译码器

在这里插入图片描述

译码器见名会意,就是翻译解析的意思,上图这个74LS139译码器,连接两条地址线 A 13 A_{13} A 14 A_{14} ,我们知道2条地址线可以表示4个地址,那么它的四个输出端对应的就是4个不同的地址: Y 0 Y_0 00 Y 1 Y_1 01 Y 2 Y_2 10 Y 3 Y_3 11
假如此时 A 13 A 14 A_{13}A_{14} 00,选择输出端就是 Y 0 Y_0 ,那么 Y 0 Y_0 这条电线就有高电平输出到ROM,ROM的 C S \overline{CS} 片选信号引脚收到高电平后,它就能够使ROM工作了,而此时其他四个RAM是不工作的
在这里插入图片描述
两条地址线,一个译码器就能够使我们的各个存储器有序的工作了。

1.3 锁存器

接着,我们需要进入到ROM和RAM的内部了,前面通过 A 0 A 14 A_0到A_{14} 我们可以选择到某一存储器的某一地址,但我们还不太清楚选择的这个地址里面有什么东西,那就来说个结论,这个地址其实就是一个锁存器

再次强调下,ROM和RAM都是存储器,内部都是用锁存器来锁存数据的

你可以去仔细研究一下锁存器,但在这里我们只需要知道锁存器的功能就好了,锁存器是能够将数据锁存起来的,这么些个数据其实也就是0或者1,也就是说,锁存器能够保存01

说一下这个概念,1位就是说这一个位置可以存放0或者1,2位就是说着有两个位置可以存放01

一个锁存器,肯定不止锁存一个0或者1,也就是不止锁存1位,可以是4位、8位等等

1.4 总结

在这里插入图片描述
那么这整个电路的工作就是这样的,以读操作为例(即CPU的 R / W R/\overline{W} 引脚为高电平):
A 0 A 14 A_0到A_{14} 工作时,选择某一存储器的某一地址,告诉这个地址上的锁存器,“你要工作了,把你的锁存的数据,输出到数据总线上”

这里的数据总线就是图上的 D 0 D 7 D_0到D_7

2. 答案解析

2.1 第一小题

对于第一小题,?K是问这一存储器有多少个地址,?位是问这一存储器地址上的锁存器锁存的位数。
每个ROM/RAM存储器连接的都是13条地址线,13条地址线就是 2 13 = 2 13 2 10 = 2 3 K 2^{13}=\cfrac{2^{13}}{2^{10}}=2^3K

这里 1 K = 2 10 1K=2^{10}

ROM连接的数据总线是 D 0 D 7 D_0到D_7 ,说明它的锁存器是8位
一个RAM连接的数据总线是 D 0 D 3 D_0到D_3 或者 D 4 D 7 D_4到D_7 ,说明它的锁存器是4位
答案就呼之欲出了,ROM芯片的规格是 8 K × 8 8K\times8位 ,ROM芯片的规格是 8 K × 4 8K\times4位

2.2 第二小题

这里有一个坑,答案是要用KB表示,我们知道1B=8bit,也就1B等于8位,所以我们需要知道ROM或者RAM可以存储多少个8位的数据量
ROM比较简单,就一个ROM,且它的锁存器是8位的,从地址线就可以知道共有 2 13 2^{13} 个锁存器,也就是说ROM能够存储 2 13 2^{13} 个8位的数据量,转换成 K B KB 就是 8 K B 8KB
而RAM就稍微复杂点,它是由四个RAM两两间相互关联组成的,我们先来单看其中两个RAM

在这里插入图片描述
这两个RAM里的锁存器是4位的,右边的RAM存放低4位,左边RAM存放高4位,在输出的时候就能够合并输出一个8位的数据了
换个角度看,它本质上无非就是将一个8位的数据拆成两半分别存储,所以,我们就能够知道这两个RAM就相当于一个ROM,同样是 8 K B 8KB ,那还有另外2个RAM,总共就是 16 K B 16KB

至于为什么RAM不和ROM一样,非要将一个8位的数据拆成两半分别存储超出我的知识范围,留个坑,待研究

2.3 第三小题

第3小题就很简单了
共有15条地址线,地址范围也就是:
000    0000    0000    0000 111    1111    1111    1111 从000\; 0000\; 0000\; 0000 \\ 到111\; 1111\; 1111\; 1111
首先通过译码器,当 A 14 A 13 A_{14}A_{13} 为00时,通过 Y 0 Y_0 选择ROM,那么最高两位就是00,范围就是:
000    0000    0000    0000 001    1111    1111    1111 从000\; 0000\; 0000\; 0000 \\ 到001\; 1111\; 1111\; 1111
这么长的数据写起来挺费劲的,一般换算成16进制,也就是从0H1FFFH
剩余的RAM也好求了,最高两位是01到10,范围就是:
010    0000    0000    0000 101    1111    1111    1111 从010\; 0000\; 0000\; 0000 \\ 到101\; 1111\; 1111\; 1111
换算成16进制也就是2000H5FFFFH

猜你喜欢

转载自blog.csdn.net/Cap220590/article/details/108351214