某机器中,已知配有一个地址空间[1]为0000H~3FFFH的ROM区域。现在再用一个RAM芯片(8K×8)形成40K×16位的RAM区域,起始地址为6000H。假设RAM芯片有CS’和WE’信号控制端。CPU的地址总线[2]为A15~A0,数据总线[3]为D15~D0,控制信号为R/W(读/写),MREQ’(访存),要求:(1)画出地址译码方案。(2)将ROM和RAM同CPU连接。
某机器中,已知配有一个地址空间[1]为0000H~3FFFH的ROM区域。现在再用一个RAM芯片(8K×8)形成40K×16位的RAM区域,起始地址为6000H。假设RAM芯片有CS’和WE’信号控制端。CPU的地址总线[2]为A15~A0,数据总线[3]为D15~D0,控制信号为R/W(读/写),MREQ’(访存),要求:
(1)画出地址译码方案。
(2)将ROM和RAM同CPU连接。
题目解答
答案
解:RAM区域共需RAM芯片40K×16/8K×8=10片,可先用2片8K×8位的RAM芯片用于位扩展构成8K×16位存储器[4],然后再用5组8K×16位存储器用于字扩展构成40K×16位存储器,该存储器的组成逻辑框图可参照5、6题。

(A)为了将ROM和RAM同CPU连接,需先将十六进制地址转换为二进制地址码,并确定ROM容量,以及观察ROM和RAM地址码的特点。
A15~A12 | A11~A8 | A7~A4 | A3~A0 | 说明 |
0000 | ROM,16K×16 | |||
... | ... | ... | ... | |
1 | 1111 | |||
0000 | 空区域 | |||
... | ... | ... | ... | |
1 | 1111 | |||
0000 | RAM(0),8K×16 2片8K×8位扩展 | |||
... | ... | ... | ... | |
1 | 1111 | |||
1 | 0000 | RAM(1),8K×16 2片8K×8位扩展 | ||
... | ... | ... | ... | |
1 | 1111 | |||
1 | 0000 | RAM(2),8K×16 2片8K×8位扩展 | ||
... | ... | ... | ... | |
1 | 1111 | |||
11 | 000 | RAM(3),8K×16 2片8K×8位扩展 | ||
... | ... | ... | ... | |
11 | 111 | |||
111 | 00 | RAM(4),8K×16 2片8K×8位扩展 | ||
... | ... | ... | ... | |
1111 | 1111 | 1111 | 1111 |
(B)分配CPU地址线:将CPU的低13位地址A12~A0与ROM和2片8K×8位RAM的地址线相连。剩下的高位地址A13~A15与访存信号共同产生芯片的片选信号。
(C)片选信号的形成:观察上面的地址码发现,当访存信号MREQ’=0,而且高位地址A13~A15为000(或001)、011、100、101、110、111时,分别选择ROM、RAM(0)、RAM(1)、RAM(2)、RAM(3)和RAM(4)芯片,故,可采用一个3-8译码器来实现上述片选关系,最后得ROM和RAM与CPU的连接如下图所示。

解析
本题主要考查计算机组成原理中存储器的扩展以及与CPU的连接,包括位扩展、字扩展、地址译码和信号连接等知识点。解题思路如下:
- 计算所需芯片数量:
- 首先明确要构建的RAM区域为$40K\times16$位,而使用的RAM芯片规格为$8K\times8$位。
- 计算所需芯片数量,根据公式:所需芯片数$=\frac{目标存储器容量}{单个芯片容量}$。
- 目标存储器容量为$40K\times16$位,单个芯片容量为$8K\times8$位,则所需芯片数为$\frac{40K\times16}{8K\times8}=\frac{40\times1024\times16}{8\times1024\times8}=10$片。
- 确定存储器扩展方式:
- 先进行位扩展,用$2$片$8K\times8$位的RAM芯片可以构成$8K\times16$位的存储器。因为位扩展是增加数据位数,$2$个$8$位的数据通道可以合并成一个$16$位的数据通道,而存储单元数量不变,仍为$8K$。
- 再进行字扩展,用$5$组$8K\times16$位的存储器可以构成$40K\times16$位的存储器。字扩展是增加存储单元数量,$5$组$8K$的存储单元可以合并成$40K$的存储单元,数据位数保持$16$位不变。
- 地址转换与分析:
- 将十六进制地址转换为二进制地址码,确定ROM容量和地址范围。已知ROM地址空间为$0000H - 3FFFH$,转换为二进制为$0000 0000 0000 0000B - 0011 1111 1111 1111B$,其容量为$4096\times4 = 16K$(因为每个地址对应$4$位十六进制数,即$16$位二进制数),这里假设为$16K\times16$位。
- 分析ROM和RAM地址码的特点,为后续地址译码做准备。
- 分配CPU地址线:
- 由于$8K = 2^{13}$,所以$8K$容量的存储器需要$13$根地址线来寻址,将CPU的低$13$位地址$A_{12}-A_{0}$与ROM和$2$片$8K\times8$位RAM的地址线相连,用于选择存储单元。
- 剩下的高位地址$A_{13}-A_{15}$与访存信号$MREQ'$共同产生芯片的片选信号,用于选择不同的芯片组。
- 片选信号的形成:
- 观察地址码发现,当访存信号$MREQ' = 0$时,不同的高位地址组合对应不同的芯片。例如,高位地址$A_{13}-A_{15}$为$000$(或$001$)时选择ROM,为$011$时选择$RAM(0)$,为$100$时选择$RAM(1)$,为$101$时选择$RAM(2)$,为$110$时选择$RAM(3)$,为$111$时选择$RAM(4)$。
- 可采用一个$3 - 8$译码器来实现上述片选关系。$3 - 8$译码器有$3$个输入($A_{15}$、$A_{14}$、$A_{13}$)和$8$个输出($Y_{0}-Y_{7}$),根据输入的不同组合选择不同的输出。将$MREQ'$作为译码器的使能信号,当$MREQ' = 0$时译码器工作,根据$A_{15}$、$A_{14}$、$A_{13}$的组合产生相应的片选信号。
- 数据总线和控制信号连接:
- 数据总线方面,将CPU的数据总线$D_{15}-D_{0}$与ROM和RAM的数据总线相连,实现数据的读写。对于$8K\times16$位的存储器,$D_{15}-D_{0}$直接连接;对于$2$片$8K\times8$位扩展成的$8K\times16$位存储器,一片连接$D_{7}-D_{0}$,另一片连接$D_{15}-D_{8}$。
- 控制信号方面,将CPU的读/写控制信号$R/W$与RAM芯片的$WE'$信号相连,当$R/W = 1$时进行读操作,当$R/W = 0$时进行写操作;$MREQ'$作为访存信号,用于控制译码器的工作。