存储器容量扩充是《计算机组成原理》课程的重要知识点。讲解一个例题,以说明进行存储器容量扩充设计的方法。
题目:在32位计算机系统中,用8K×16位的SRAM芯片组成一个64KB的存储器,已知起始地址为:6000 0000H。已知:SRAM芯片有两个控制端nCS和nWE:当nCS=0时SRAM被选中。当nWE=0时,进行写操作:当nWE=1时,进行读操作。CPU的读写控制信号为R/nW(R/nW=1时,进行读操作;R/nW=0时,进行写操作),访存控制信号为nMREQ(nMREQ=0时访存)。要求:设计此存储器,画出它与CPU连接框图。
解:
第1步:确定存储器扩展方案
分析题意可知,本题是要利用8K×16位SRAM设计16K×32位的存储器,因此需要用4块SRAM芯片进行字位扩展,具体方案是:由2个芯片为一组进行位扩展,需要2组进行字扩展(需要2个片选信号)。确定了位扩展方案后,可以画出下图。要注意,位扩展芯片输出的数据线跟系统数据总线的接法。例如:组1-H输出的数据线接系统数据总线的D31-D16位,而组1-l输出的数据线接系统数据总线的D15-D0位。
第2步:设计地址译码电路,译码电路的输出接到每个SRAM芯片的nCS引脚,提供片选信号。这一步可以细化:
① 为了便于分析地址,把地址变换成二进制形式
60000000H=0110 0000 0000 0000 0000 0000 0000 0000 B
② 画出地址空间分配表
③ 为每个参与字扩展的存储小组,指定地址译码输出值
在上面的地址空间分配表基础上,设定地址译码输出值。由于本题需要对2组存储器模块进行字扩展,因此需要2个地址译码输出信号。加下表中,填充为红色的列。
④将上表转换成真值表画法,以便进行译码电路设计。转换后的真值表如下:
由于本题中SRAM需要的片选信号nCS的有效状态是低电平,而上表中cs0和cs1的有效状态是高电平,因此,增加nCS0和nCS1,用这两个信号作为SRAM芯片nCS引脚的驱动信号。完善后的真值表,如下:
⑤ 写出输出信号的逻辑表达式
⑥画出译码输出信号的逻辑电路图
⑦考虑系统访存信号nMREQ的控制作用,完整的地址译码电路如下:
至此,地址译码电路设计完成。
第3步:将地址译码电路与存储器芯片连接,得到完整的CPU与存储器连接的逻辑电路图
方法二:利用译码器来实现地址译码电路
接下来介绍一种利用译码器来实现地址译码电路的方法。以利用3:8译码器来实现地址译码电路为例,进行说明。
已知译码器有3个编码输入端和1个低电平有效的使能端#EN。为了能够利用译码器的编码输入端,把地址总线的A31~A13位,划分成两部分,见下表:
按此表的设计,可以把A15~A13接入译码器的编码输入端,见下图
分析上表中A31~A16的取值可知,本题中,A31~A16的取值固定不变,因此可以与访存信号nMREQ一起考虑,设计组合逻辑电路,以驱动译码器的使能端#EN。先写出A31~A16的地址译码逻辑表达式:
地址译码逻辑电路如下:
考虑访存信号nMREQ后,画出下图所示的完整地址译码逻辑电路:
将该地址译码电路与存储器芯片连接,得到完整的CPU与存储器连接的逻辑电路,如下图所示: