📄 一句话概括
先给全机通电,再把 8 根数据线和 16 根地址线从 CPU 铺到内存和 I/O——三条走廊通了,机器才有一台机器的样子。
📝 本节和前面几节的关系
看图课结束,从这一节起正式接线:电源先行,然后铺数据、地址两条大动脉。
一、电源先接
Vcc 接 5V、GND 接 0V,每个 IC 都要喂到——漏喂一个,那块芯片就装死。 【⚠️ 2026 现状】当年标准电压 5V,如今的芯片普遍 3.3V 甚至 1V 出头,电压越低功耗越小,但【每个元件都要喂电】这条没变。
二、数据总线:8 根线一条心
D0~D7 从 CPU 铺出来,内存和 I/O 各接一头——注意是【并联】,所有元件共用这 8 根线。 共用就要守规矩:同一时刻只许一个元件往外放数据,谁放数据由控制线说了算(2.6、2.7 节的事)。这条规矩叫【总线仲裁】的雏形。
三、地址总线:16 根线点 64K 个名
A0~A15 从 CPU 出发,单向(CPU 点名、元件应答),同样并联到内存和 I/O。 16 位能表示 65536 个编号,内存的每个字节格子都领一个号。I/O 的门牌是另一套体系(下一节)。
四、动手 Demo:两条总线的能力账
把 8 位与 16 位的能力当场算出来——数据线管一次搬多重,地址线管能点多少名。
# 数据总线 vs 地址总线
print("数据总线 8 位 -> 一次表示:", 0, "~", 2**8 - 1)
print("地址总线 16 位 -> 可寻址:", 2**16, "个格子")
print("64KB =", 2**16 // 1024, "KB —— Z80 的全部内存世界")
实跑输出:
--------------------------------------------------------------------
接通电源和总线——8 位与 16 位能干多大活
--------------------------------------------------------------------
数据总线 8 根:一次搬一个字节(0~255);
地址总线 16 根:能点名 65536 个格子(64KB)。当场验证:
[数据总线] 8 位能表示的数值范围:
最小 = 00000000 = 0
最大 = 11111111 = 255
8 位只能表示 0~255 共 256 种 —— 这就是【字节】的由来
[地址总线] 16 位能点名多少格子:
最小地址 = 0x0000 = 0
最大地址 = 0xFFFF = 65535
共 65536 = 64K 个格子(64KB)
总线 位数 能力 不够用时怎么办
-----------------------------------------------------------------
数据总线 8 一次传 0~255 的一个数 拆成多次传(分批)
地址总线 16 点名 0~65535 号格子 换更多位的 CPU
电源线也在此节接好:Vcc(5V) 和 GND(0V),没有它们全盘黑灯。
数据总线的 256 种取值和地址总线的 65536 个编号,是同一个数学:2 的位数次方。 想要更大的世界?加线——现代 CPU 64 位数据、48 位地址,道理没变,只是线多了。
30 秒实验
- 在纸上画三个方框(CPU、内存、I/O),用两组平行线把它们连起来——就是本节的全部接线。
- 算一算 32 位地址总线能寻址多少 GB(答案:4GB——老 32 位系统的内存上限)。
常见误区
- 以为每对元件之间单独拉线——总线就是【共用走廊】,单独拉线的是【专线】,成本根本不允许。
- 以为数据总线和地址总线可以混用——一条管货、一条管门牌,物理上就分开。
自测三问(点开对答案)
1. 数据总线和地址总线的分工是什么? —— 数据总线搬内容(单向 8 位),地址总线点门牌(CPU 发出、16 位)。 2. 为什么元件必须分时使用数据总线? —— 总线是共用的,同一时刻两个元件都放数据就会冲突。 3. 漏接电源会发生什么? —— 那块 IC 完全不工作——全机缺一个都不行。- ☐ 下一节(2.4 连接 I/O)
相关笔记
- 23 课 2.1.1 协议栈的内部结构 — 网卡收发同样要跟内存搬数据
- 输入、运算、输出是硬件的基础 — 三件套的骨架总纲
- 💻 计算机是怎样跑起来的 · 索引