定义
MREQ̅(Memory Request,低电平有效)是 CPU 发出的一个控制信号,表示"当前总线周期是在访问内存"。
- 当 MREQ̅ = 0 → CPU 正在读/写内存
- 当 MREQ̅ = 1 → CPU 在做别的事(比如访问 I/O 设备、取指令等)
注意:横线表示低电平有效(这是数字电路标准记法)。
CPU 需要 MREQ̅ 信号
现代计算机有两类主要设备:
- 存储器(Memory):RAM、ROM
- I/O 设备(Input/Output):键盘、显示器、网卡
但它们都挂在同一套地址总线上 !
例如:
- 地址
0x0000~0xFFFF→ 内存 - 地址
0x10000~0x1FFFF→ 显卡寄存器(I/O)
→ CPU 怎么知道当前地址是访问内存还是 I/O?
✅ 答案:靠 MREQ̅ 和 IORQ̅ 两个信号区分!
| 信号 | 含义 | 有效电平 |
|---|---|---|
| MREQ̅ | Memory Request(内存请求) | 低有效(=0 表示访问内存) |
| IORQ̅ | I/O Request(I/O 请求) | 低有效(=0 表示访问 I/O) |
📌 这两个信号不会同时有效,由 CPU 内部逻辑自动产生。
MREQ̅ 在存储器扩展中怎么用?(结合 74LS138)
假设你的系统有:
- 8 片 1K×8 SRAM → 构成 8K 内存
- 若干 I/O 芯片(如串口、并口)
你希望:
- 当 CPU 访问 内存地址(如 0x0000~0x1FFF)→ 选中某一片 SRAM
- 当 CPU 访问 I/O 地址 (如 0x2000)→ 不选中任何 SRAM
✅ 解决方案:用 MREQ̅ 控制 74LS138 的使能端
具体接法:
text
74LS138 的:
G₁ → 接高电平(Vcc = 1)
G₂A → 接 MREQ̅
G₂B → 接 MREQ̅ (G₂A 和 G₂B 并联)
地址高位 A12,A11,A10 → 接 C,B,A
Y₀~Y₇ → 接 8 片 SRAM 的 CS̅(片选)
工作过程:
情况1:CPU 访问内存(比如读 0x0500)
- CPU 输出地址 = 0x0500(二进制 ...000 0101 0000 0000)
- CPU 拉低 MREQ̅ = 0(表示"我在访问内存")
- 此时:
- G₁ = 1
- G₂A = MREQ̅ = 0
- G₂B = MREQ̅ = 0
- ✅ 74LS138 被激活!
- 地址高位 A12A11A10 = 000 → Y₀ = 0 → 第0片 SRAM 被选中
- 数据正确读出
情况2:CPU 访问 I/O(比如读串口)
- CPU 输出地址 = 0x2000(I/O 地址)
- CPU 拉高 MREQ̅ = 1(因为不是访问内存)
- 此时:
- G₁ = 1
- G₂A = 1, G₂B = 1
- ❌ 74LS138 被禁用!所有 Y₀~Y₇ = 1
- 所有 SRAM 的 CS̅ = 1 → 全部芯片休眠
- I/O 设备用自己的译码器响应,互不干扰
74LS138 三个使能端的作用
就是为了灵活组合控制信号!
-
G₁(高有效) + G₂A/G₂B(低有效) 的结构,让你可以用 与逻辑 实现复杂条件:
Enable = G 1 ⋅ G 2 A ‾ ⋅ G 2 B ‾ \text{Enable} = G_1 \cdot \overline{G_{2A}} \cdot \overline{G_{2B}} Enable=G1⋅G2A⋅G2B -
目的是为了只有当 CPU 访问内存时,译码器才工作
💡 如果只有 1 个使能端,就无法实现这种"与多个系统信号联动"的功能。
对 408 考生的关键总结
| 概念 | 说明 |
|---|---|
| MREQ̅ 是什么? | CPU 发出的"内存访问请求"信号,低电平有效 |
| 作用? | 区分内存访问 vs I/O 访问 |
| 如何用于译码器? | 接到 G₂A/G₂B,确保只在访问内存时启用片选 |
| 考试会考吗? | ✅ 可能出现在"存储器与 CPU 连接"综合题中,要求画出控制信号连接 |
类比帮助记忆:
想象小区门禁:
- MREQ̅ = 0 → 保安喊:"业主回家!" → 住宅楼电梯启动(译码器工作)
- MREQ̅ = 1 → 保安喊:"快递去商铺!" → 住宅电梯锁死(译码器关闭),商铺电梯启动
总结
MREQ̅信号 可以这样理解:
CPU 发出一个"我正在访问内存"的信号,存储器系统要用它来防止误触发。