计算机组成原理——CPU与存储器连接例题
设CPU共有16根地址线和8根数据线,并用(MREQ) ̅作为访存控制信号(低电平有效),(WR) ̅作为读/写命令信号(高电平读,低电平写)。现有下列存储芯片:1K4位RAM,4K8位RAM,2K*8位ROM,以及74138译码器和各种门电路,如下图所示。画出CPU和存储芯片的连接图。要求
(1) 主存地址空间分配:A000H ~ A7FFH为系统程序区;A800H ~ AFFFH为用户程序区
(2) 合理选用上述存储芯片,说明各选几片
(3) 详细画出存储芯片的片选逻辑
题目分析
1. CPU 和控制信号
- CPU:
- 16 根地址线 (A0~A15),寻址范围 0000H~FFFFH(64KB)。
- 8 根数据线 (D0~D7)。
- 控制信号:
- (MREQ)̅:访存控制信号,低电平有效。
- (WR)̅:读/写控制信号,高电平为读,低电平为写。
2. 存储芯片
- 可选芯片:
- 1K×4 位 RAM(1024×4 位)。
- 4K×8 位 RAM(4096×8 位)。
- 2K×8 位 ROM(2048×8 位)。
- 工具:74138 译码器和各种门电路。
3. 地址空间分配
- 系统程序区:A000H~A7FFH(2KB)。
- 用户程序区:A800H~AFFFH(2KB)。
4. 要求
- 合理选择存储芯片,说明选用几片。
- 写出每片存储芯片的二进制地址范围。
- 详细画出片选逻辑。
存储芯片选择与地址范围
1. 地址空间分析
- 系统程序区 (A000H~A7FFH):
- A000H = 1010 0000 0000 0000。
- A7FFH = 1010 0111 1111 1111。
- 容量:A7FFH - A000H + 1 = 2KB(2048 字节)。
- A15~A11 = 10100,A10~A0 变化。
- 用户程序区 (A800H~AFFFH):
- A800H = 1010 1000 0000 0000。
- AFFFH = 1010 1111 1111 1111。
- 容量:AFFFH - A800H + 1 = 2KB(2048 字节)。
- A15~A11 = 10101,A10~A0 变化。
2. 存储芯片选择
- 系统程序区 (2KB,ROM):
- 需要 2K×8 位 ROM,正好匹配。
- 选用 1 片 2K×8 位 ROM。
- 地址线:2K = 2048 = 2^11,需 A0~A10。
- 用户程序区 (2KB,RAM):
- 需要 2KB,但没有直接的 2K×8 位 RAM。
- 可选:
- 1K×4 位 RAM × 4 片,组合成 2K×8 位。
- 两个 1K×4 位 RAM 组成 1K×8 位,两个 1K×8 位再组成 2K×8 位。
- 4K×8 位 RAM × 1 片,仅用 2KB。
- 但浪费 2KB 容量,不够经济。
- 1K×4 位 RAM × 4 片,组合成 2K×8 位。
- 选用 4 片 1K×4 位 RAM,组合成 2K×8 位。
- 地址线:1K = 1024 = 2^10,单个 1K×4 位 RAM 需 A0~A9;两组 1K×8 位共用 A10 区分。
3. 存储芯片数量
- 1 片 2K×8 位 ROM。
- 4 片 1K×4 位 RAM。
4. 存储芯片地址范围
- 2K×8 位 ROM:
- A000H~A7FFH。
- 二进制:1010 0000 0000 0000 ~ 1010 0111 1111 1111。
- 1K×4 位 RAM × 4(组合成 2K×8 位):
- A800H~AFFFH。
- 分为两组 1K×8 位:
- RAM1 和 RAM2 (A10 = 0):A800H~ABFFH。
- 二进制:1010 1000 0000 0000 ~ 1010 1011 1111 1111。
- RAM3 和 RAM4 (A10 = 1):AC00H~AFFFH。
- 二进制:1010 1100 0000 0000 ~ 1010 1111 1111 1111。
- RAM1 和 RAM2 (A10 = 0):A800H~ABFFH。
片选逻辑设计
1. 片选信号需求
- ROM:
- 地址范围:A15~A11 = 10100。
- 片选条件:A15 = 1, A14 = 0, A13 = 1, A12 = 0, A11 = 0。
- RAM:
- 地址范围:A15~A11 = 10101。
- 片选条件:A15 = 1, A14 = 0, A13 = 1, A12 = 0, A11 = 1。
- 细分:
- RAM1 和 RAM2:A10 = 0。
- RAM3 和 RAM4:A10 = 1。
2. 74138 译码器连接
- 输入:
- A = A11。
- B = A12。
- C = A13。
- 使能:
- G1 = A15(高电平有效)。
- G2A = (A14)̅(低电平有效,需反相器)。
- G2B = (MREQ)̅(低电平有效)。
- 输出:
- Y4 (A13 A12 A11 = 100):A000H~A7FFH,接 ROM 的 CS̅。
- Y5 (A13 A12 A11 = 101):A800H~AFFFH,接 RAM 的片选控制。
3. RAM 片选细分
- Y5 控制 A800H~AFFFH,需用 A10 进一步区分:
- RAM1 和 RAM2 的 CS̅:Y5 AND (A10)̅。
- RAM3 和 RAM4 的 CS̅:Y5 AND A10。
4. RAM 读写控制
- RAM 写使能 (WE)̅:(MREQ)̅ AND (WR)̅(需与门)。
- 读操作:(WR)̅ = 1 时,RAM 输出数据。
CPU 与存储器连接图设计
1. 地址线连接
- ROM:
- A0~A10 接 ROM 的地址引脚。
- RAM:
- RAM1RAM4:A0A9 接地址引脚。
- A10 用于片选区分。
2. 数据线连接
- ROM:
- D0~D7 接 ROM 的数据引脚。
- RAM:
- RAM1 和 RAM3:D0~D3。
- RAM2 和 RAM4:D4~D7。
3. 片选逻辑
- 74138 译码器:
- 输入:A = A11, B = A12, C = A13。
- 使能:G1 = A15, G2A = (A14)̅, G2B = (MREQ)̅。
- 输出:Y4 接 ROM CS̅,Y5 接 RAM 片选。
- RAM 片选:
- RAM1 和 RAM2:Y5 AND (A10)̅。
- RAM3 和 RAM4:Y5 AND A10。
4. 控制信号
- RAM (WE)̅:(MREQ)̅ AND (WR)̅。
连接图描述
作图如下:
以下是连接图的文字描述:
-
CPU:
- A0~A15:地址线。
- D0~D7:数据线。
- (MREQ)̅ 和 (WR)̅:控制信号。
-
2K×8 位 ROM:
- 地址:A0~A10。
- 数据:D0~D7。
- CS̅:接 74138 的 Y4。
-
1K×4 位 RAM × 4:
- RAM1 和 RAM2(组成 1K×8 位):
- 地址:A0~A9。
- 数据:RAM1 (D0~D3),RAM2 (D4~D7)。
- CS̅:Y5 AND (A10)̅。
- RAM3 和 RAM4(组成 1K×8 位):
- 地址:A0~A9。
- 数据:RAM3 (D0~D3),RAM4 (D4~D7)。
- CS̅:Y5 AND A10。
- WE̅:(MREQ)̅ AND (WR)̅。
- RAM1 和 RAM2(组成 1K×8 位):
-
74138 译码器:
- A = A11, B = A12, C = A13。
- G1 = A15, G2A = (A14)̅(加反相器),G2B = (MREQ)̅。
- Y4 接 ROM CS̅。
- Y5 接两个与门:
- 与门 1:Y5 AND (A10)̅ → RAM1 和 RAM2 的 CS̅。
- 与门 2:Y5 AND A10 → RAM3 和 RAM4 的 CS̅。
-
与门(RAM 写控制):
- 输入:(MREQ)̅ 和 (WR)̅。
- 输出:接 RAM1~RAM4 的 WE̅。
回答总结
-
存储芯片选择:
- 1 片 2K×8 位 ROM。
- 4 片 1K×4 位 RAM。
-
二进制地址范围:
- ROM:1010 0000 0000 0000 ~ 1010 0111 1111 1111 (A000H~A7FFH)。
- RAM1 和 RAM2:1010 1000 0000 0000 ~ 1010 1011 1111 1111 (A800H~ABFFH)。
- RAM3 和 RAM4:1010 1100 0000 0000 ~ 1010 1111 1111 1111 (AC00H~AFFFH)。
-
片选逻辑:
- 74138 译码器:
- 输入:A11, A12, A13。
- 使能:A15, (A14)̅, (MREQ)̅。
- Y4 控制 ROM。
- Y5 结合 A10 控制 RAM:
- Y5 AND (A10)̅ → RAM1 和 RAM2。
- Y5 AND A10 → RAM3 和 RAM4。
- 74138 译码器:
拓展知识:片选原理
什么是片选?
片选(Chip Select, 简称 CS)是存储器系统中用来选择某个存储芯片的控制信号。CPU 通常会连接多个存储芯片(如 ROM 和 RAM),但在某一时刻,CPU 只会与一个存储芯片进行通信(读或写数据)。片选信号的作用就是“激活”某个存储芯片,让它与 CPU 通信,而其他芯片保持“未选中”状态。
- 片选信号:通常用 CS 或 CE(Chip Enable)表示,低电平有效时(CS̅ = 0),芯片被选中;高电平(CS̅ = 1)时,芯片未被选中。
- 片选的本质:通过地址线和控制信号,判断当前 CPU 访问的地址属于哪个存储芯片的范围,从而激活对应的芯片。
片选的原理
1. 为什么需要片选?
- CPU 有 16 根地址线,可以寻址 64KB 的地址空间(0000H~FFFFH)。
- 但存储器系统由多个芯片组成,每个芯片只占用一部分地址空间。例如:
- ROM:A000H~A7FFH(2KB)。
- RAM:A800H~AFFFH(2KB)。
- 当 CPU 访问某个地址时(比如 A500H),需要判断这个地址属于哪个芯片的范围:
- A500H 属于 ROM(A000H~A7FFH),所以选中 ROM。
- 如果访问 AC00H,属于 RAM(A800H~AFFFH),则选中 RAM。
- 片选信号通过地址线的高位部分来判断地址范围,并生成对应的控制信号。
2. 片选信号如何生成?
- 地址解码:通过地址线的高位部分,判断当前地址属于哪个芯片的范围。
- 例如,A000H~A7FFH 的高位 A15~A11 = 10100,A800H~AFFFH 的高位 A15~A11 = 10101。
- 译码器:使用译码器(如 74138)将高位地址解码,生成片选信号。
- 控制信号:结合 CPU 的控制信号(如 (MREQ)̅),确保只有在访存时才激活片选。
3. 片选的实现
- 硬件实现:通过译码器(如 74138)和逻辑门(如与门、或门)生成片选信号。
- 逻辑条件:
- 某个芯片被选中时,其 CS̅ = 0。
- 条件:当前地址在该芯片的范围内,且 CPU 正在访问存储器((MREQ)̅ = 0)。
结合题目解释片选原理
1. 存储芯片和地址范围
- ROM:2K×8 位,A000H~A7FFH。
- 2KB = 2048 字节,地址线 A0~A10(2^11 = 2048)。
- 高位:A15~A11 = 10100。
- RAM:4 片 1K×4 位 RAM,组合成 2K×8 位,A800H~AFFFH。
- 2KB,地址线 A0~A10。
- 高位:A15~A11 = 10101。
- 细分:
- RAM1 和 RAM2(1K×8 位):A800H~ABFFH,A10 = 0。
- RAM3 和 RAM4(1K×8 位):AC00H~AFFFH,A10 = 1。
2. 片选信号的生成
(1) 判断地址范围
- ROM:
- A15~A11 = 10100。
- 条件:A15 = 1, A14 = 0, A13 = 1, A12 = 0, A11 = 0。
- RAM:
- A15~A11 = 10101。
- 条件:A15 = 1, A14 = 0, A13 = 1, A12 = 0, A11 = 1。
- 细分:
- RAM1 和 RAM2:A10 = 0。
- RAM3 和 RAM4:A10 = 1。
(2) 使用 74138 译码器
- 74138 是一个 3-8 译码器:
- 输入:A, B, C(3 位输入)。
- 输出:Y0~Y7(8 个输出,低电平有效)。
- 使能:G1(高电平有效),G2A 和 G2B(低电平有效)。
- 连接方式:
- 输入:A = A11, B = A12, C = A13。
- 使能:
- G1 = A15(A15 = 1 时,地址在 8000H~FFFFH)。
- G2A = (A14)̅(A14 = 0 时,地址在 8000H~BFFFH)。
- G2B = (MREQ)̅(访存时有效)。
- 输出:
- 当 A15 = 1, A14 = 0, (MREQ)̅ = 0 时,74138 工作。
- Y4 (A13 A12 A11 = 100):对应 A000H~A7FFH,接 ROM 的 CS̅。
- Y5 (A13 A12 A11 = 101):对应 A800H~AFFFH,接 RAM 的片选控制。
(3) RAM 的片选细分
- Y5 控制整个 A800H~AFFFH(2KB),但 RAM 分为两组(每组 1K×8 位),需要用 A10 进一步区分:
- RAM1 和 RAM2(A800H~ABFFH):A10 = 0。
- CS̅ = Y5 AND (A10)̅。
- RAM3 和 RAM4(AC00H~AFFFH):A10 = 1。
- CS̅ = Y5 AND A10。
- RAM1 和 RAM2(A800H~ABFFH):A10 = 0。
- 这里需要两个与门:
- 与门 1:输入 Y5 和 (A10)̅,输出接 RAM1 和 RAM2 的 CS̅。
- 与门 2:输入 Y5 和 A10,输出接 RAM3 和 RAM4 的 CS̅。
3. 片选的工作过程
-
例子 1:CPU 访问地址 A500H:
- A500H = 1010 0101 0000 0000。
- A15~A11 = 10100,符合 ROM 范围。
- 74138:
- A15 = 1, A14 = 0, (MREQ)̅ = 0,译码器使能。
- A13 A12 A11 = 100,Y4 = 0。
- ROM 的 CS̅ = 0,ROM 被选中。
- Y5 = 1,RAM 未选中。
- CPU 通过 A0~A10(0101 0000 0000)访问 ROM 内的具体地址。
-
例子 2:CPU 访问地址 A900H:
- A900H = 1010 1001 0000 0000。
- A15~A11 = 10101,符合 RAM 范围。
- 74138:
- A15 = 1, A14 = 0, (MREQ)̅ = 0,译码器使能。
- A13 A12 A11 = 101,Y5 = 0。
- Y4 = 1,ROM 未选中。
- Y5 = 0:
- A10 = 0,Y5 AND (A10)̅ = 0,RAM1 和 RAM2 的 CS̅ = 0,被选中。
- A10 = 0,Y5 AND A10 = 1,RAM3 和 RAM4 未选中。
- CPU 通过 A0~A9(001 0000 0000)访问 RAM1 和 RAM2 内的具体地址。
片选的硬件实现
1. 74138 译码器
- 作用:将高位地址(A13~A11)解码,生成 ROM 和 RAM 的片选信号。
- 连接:
- A = A11, B = A12, C = A13。
- G1 = A15, G2A = (A14)̅, G2B = (MREQ)̅。
- Y4 接 ROM 的 CS̅。
- Y5 用于 RAM 的片选。
2. 逻辑门
- RAM 的片选需要细分:
- 用两个与门结合 Y5 和 A10:
- Y5 AND (A10)̅ → RAM1 和 RAM2。
- Y5 AND A10 → RAM3 和 RAM4。
- 用两个与门结合 Y5 和 A10:
- (A10)̅ 需要一个反相器生成。
3. 读写控制
- RAM 还需要读写控制:
- 写使能 (WE)̅:(MREQ)̅ AND (WR)̅(用一个与门生成)。
- 读操作:(WR)̅ = 1 时,RAM 输出数据。
总结:片选的要点
- 片选的核心:通过地址解码,判断当前地址属于哪个芯片的范围,生成对应的 CS̅ 信号。
- 地址解码:用高位地址(A15~A11)区分 ROM 和 RAM,A10 进一步细分 RAM。
- 译码器作用:74138 译码器将高位地址解码为片选信号。
- 控制信号:结合 (MREQ)̅ 确保只有访存时才激活片选。
题目中的片选逻辑(详细说明)
1. ROM 片选
- 条件:A15 = 1, A14 = 0, A13 = 1, A12 = 0, A11 = 0, (MREQ)̅ = 0。
- 74138 输出:Y4 = 0 时,ROM 被选中。
2. RAM 片选
- 条件:A15 = 1, A14 = 0, A13 = 1, A12 = 0, A11 = 1, (MREQ)̅ = 0。
- 74138 输出:Y5 = 0。
- 细分:
- RAM1 和 RAM2:Y5 AND (A10)̅ = 0 时选中。
- RAM3 和 RAM4:Y5 AND A10 = 0 时选中。
3. 连接图中的片选部分
- 74138 译码器:
- 输入:A11, A12, A13。
- 使能:A15, (A14)̅, (MREQ)̅。
- 输出:Y4 → ROM,Y5 → RAM。
- 与门:
- Y5 AND (A10)̅ → RAM1 和 RAM2。
- Y5 AND A10 → RAM3 和 RAM4。
再次结合题目总结
- 片选逻辑:
- ROM:Y4 直接控制。
- RAM:Y5 结合 A10 控制,分为两组。
- A10 的作用:A10 用于区分 RAM 的两个 1K×8 位块(A800H~ABFFH 和 AC00H~AFFFH)。
- 74138 的作用:将 A15~A11 解码,生成 ROM 和 RAM 的片选信号。