📄 一句话概括
RD 和 WR 两根线管读写方向,配上 REQ 线凑齐四种总线操作;再加复位等零散引脚,CPU 的手脚全部接完。
📝 本节和前面几节的关系
去向的开关(MREQ/IORQ)接好了,这一节接方向开关(RD/WR)和其余零散控制线。
一、四种总线操作
RD(读)有效:把对方格子的内容搬上数据总线; WR(写)有效:把数据总线上的内容塞进对方格子; 与 MREQ/IORQ 组合,得到四种标准操作:读内存、写内存、读 I/O、写 I/O。 两根同时有效是非法态——电路打架,设计上必须避免。
二、其余零散引脚
RESET(复位):拉一下,CPU 从固定地址(Z80 是 0x0000)开始取指令——开机即复位; WAIT(等待):内存太慢时拉住 CPU 等一等——快慢设备之间的礼让线; 还有总线请求等引脚,本章用不到,知道有这号人物即可。
三、接线收工的全景
到这里,CPU 的引脚全部有了归宿:数据 8 根、地址 16 根、电源 2 根、时钟 1 根、MREQ/IORQ/RD/WR 等控制线若干。 机器【硬件层面】完工——但它还是白纸一台:内存里没有程序。怎么把程序装进去?下一节 DMA 登场。
四、动手 Demo:读写四板斧组合表
把 RD/WR 与四种操作列成组合表,非法态单独点名。
# RD/WR 组合的四种操作
ops = {(0,1): "读", (1,0): "写", (1,1): "空闲", (0,0): "非法"}
for k, v in sorted(ops.items()):
print("RD=%d WR=%d -> %s" % (k[0], k[1], v))
实跑输出:
--------------------------------------------------------------------
接剩余控制引脚——读写四板斧
--------------------------------------------------------------------
剩下的控制引脚管读写方向。Z80 的 RD(读) 和 WR(写) 两根线一组合,
四种总线操作就齐了:
RD WR 操作 白话
------------------------------------------------------------
0 1 读 把对方格子的内容搬上数据总线
1 0 写 把数据总线上的内容塞进对方格子
0 0 非法 两根线同时有效——电路打架,设计上禁止
1 1 空闲 这趟总线没安排读写
配上 2.6 节的 MREQ/IORQ,一次访问的完整表态是四个信号:
去哪(内存/I/O) + 干什么(读/写) —— 问路加动作,一次到位。
硬件非法态靠【不可能同时发生】的电路设计排除——软件里它对应【不该发生的情况】,两种世界的防御思路相同。 RESET 后从 0x0000 启动这条约定,解释了为什么测试程序必须从 0x0000 开始放。
30 秒实验
- 按一次电脑的重启键——你亲手拉了一次 RESET 线。
- 把四种操作和 2.6 的去向开关拼成 8 行大表(4 操作 x 2 去向)——拼得出,总线就通了你脑子里了。
常见误区
- 以为 RD/WR 是对 CPU 说的——它们是 CPU 对外说的话:我要读/我要写。
- 以为复位清空硬盘——复位只影响 CPU(程序计数器归零),存储的数据一动不动。
自测三问(点开对答案)
1. 四种总线操作是哪四种? —— 读内存、写内存、读 I/O、写 I/O——由 RD/WR 与 MREQ/IORQ 组合而成。 2. RESET 之后 CPU 做什么? —— 从固定地址(Z80 为 0x0000)开始取第一条指令。 3. WAIT 线什么时候用? —— 内存等慢设备跟不上 CPU 时,拉住 CPU 等一等。- ☐ 下一节(2.8 连接外部设备,通过 DMA 输入程序)
相关笔记
- 对计算机来说什么都是数字 — 总线上跑的全是数字
- 🖥️ 服务器工作原理 · 索引 — 服务器主板上的控制线是这套的豪华版
- 💻 计算机是怎样跑起来的 · 索引