计组与微机控制
6.4 8282、8284A、8286
6.4 8282、8284A、8286
本节讲8282 8284A 8286
为什么要地址锁存器 8282先看下面
1.地址为什么必须锁存?
前面讲 ALE 时已经接触过。8086 的 AD15~AD0 是地址/数据复用线。
在总线周期前半段:AD15~AD0 输出地址
后半段:AD15~AD0 传输数据
如果不锁存,地址会在后半段消失。
但内存和 I/O 在读写过程中还需要地址保持稳定。
所以必须用地址锁存器把 T1 时的地址保存下来。
2.BHE 也要锁存
书上特别说:除了地址信号外,BHE 信号也需要锁存。
为什么?因为 BHE/S7 也是复用引脚。
总线周期前半段,BHE 表示高字节允许信号。后半段,它可能变成状态信号 S7。
但外部系统需要在整个总线周期中知道高字节是否有效。所以 BHE 也要锁存。
3.为什么需要 3 片 8282?
8282 是 8 位锁存器。8086 需要锁存:
20 位地址 A19~A0 再加 BHE总共 21 个信号。
一片 8282 锁存 8 位。3 片 8282 = 24 位
足够锁存 20 位地址和 BHE。
所以书上说:8086/8088 系统用 20 位地址,加上 BHE 信号,因此需要 3 片 8282 作地址锁存器
8282 和 8086 的连接
图 2.22 画的是 8086 和 3 片 8282 的连接。

第一片 8282连接:
CPU 的 AD7~AD0
输出:系统地址总线低 8 位 A7~A0
因为 AD7~AD0 在 T1 是低 8 位地址,所以锁存后变成稳定的 A7~A0。
第二片 8282
连接:CPU 的 AD15~AD8
输出:系统地址总线 A15~A8
第三片 8282
连接:CPU 的 A19/S6 ~ A16/S3以及 BHE/S7
输出:系统地址总线 A19~A16以及锁存后的 BHE
这样系统就得到了稳定的地址总线。
4.STB 和 ALE 的关系
8282 的选通信号 STB 接 CPU 的 ALE。
当 ALE 有效时,8282 把输入端的地址锁存到输出端。
所以:ALE 是 CPU 发出的“锁存地址”命令8282 是执行锁存动作的芯片
OE 是输出允许 8282 的 OE 是输出允许信号,低电平有效。
当 OE 为低电平时:8282 输出端有效
当 OE 为高电平时:8282 输出端高阻
书上说,在带 DMA 控制器的单处理器系统中,可以把 OE 接地。
这样 8282 一直输出锁存地址。
5.总线收发器 8286
为什么需要 8286?
如果系统中外设接口较多,数据总线负载较重,CPU 直接驱动不够可靠。
所以需要总线收发器增加驱动能力。
书上说:发送器和接收器简称收发器,也称总线驱动器
Intel 系统常用 8286,也可以用双向驱动门 74LS245 替代。
8088 和 8086 需要的 8286 数量不同
因为:8088 外部数据总线 8 位 8086 外部数据总线 16 位
一片 8286 是 8 位收发器。
所以:8088 系统:1 片 8286 8086 系统:2 片 8286
这个很好理解。8086 有低 8 位和高 8 位数据线,所以要两片。
图 2.23:8286 和 8088 的连接
图 2.23 画的是 8088 和 8286。
8088 的数据总线是:AD7~AD0

经过 8286 后,连接到系统数据总线。
5. 8286 是双向的
8286 有两侧:A7~A0 B7~B0
一侧接 CPU,一侧接系统数据总线。
数据可以:CPU → 系统数据总线 系统数据总线 → CPU
方向由 T 引脚控制。
T 引脚控制方向
T = 1:A → B T = 0:B → A在系统中,T 通常和 CPU 的 DT/R 相连。
DT/R 高电平表示 CPU 发数据,低电平表示 CPU 收数据。
所以:
CPU 写数据:DT/R = 1,8286 方向 CPU → 总线CPU 读数据:DT/R = 0,8286 方向 总线 → CPU
OE 控制是否允许通过 8286 的 OE 是输出允许信号,低电平有效。
书上说,在 8086/8088 系统中,OE 和 CPU 的 DEN 相连。
DEN 有效时,允许数据通过 8286。
DEN 无效时,8286 输出高阻,隔离总线。
所以:DEN 控制开关 DT/R 控制方向
6.DMA 时为什么 8286 输出要高阻?
当系统中 CPU 以外的总线主控部件请求总线,并得到 CPU 允许时,CPU 的 DEN 和 DT/R 端呈现高阻状态,从而使 8286 各输出端也成为高阻状态。
这句话对应前面 HOLD/HLDA。当 DMA 获得总线控制权后:
CPU 不应该再驱动数据总线 8286 也应该退出总线
否则 CPU 和 DMA 可能同时驱动总线,造成冲突。
所以 DEN/DT/R 变成高阻,8286 也让出数据总线。
7.8287 和 8283 是什么?
书上说,有时希望提供给各部件的数据相位和 CPU 原始数据相反。
这时 Intel 提供了 8287。8287 功能类似 8286,但输出相位相反。
同理,地址信号如果也需要反相,可以不用 8282,而用 8283。
简单记:
8282:地址锁存器,普通输出8283:地址锁存器,反相输出8286:数据收发器,普通输出8287:数据收发器,反相输出
一般考试不太会深挖,知道替代关系即可。
8 .表 2.7:8086 最小模式数据传输方式
说明最小模式下:
M/IO、RD、WR 三者组合决定当前数据传输方式。
注意 RD 和 WR 上面有横线,所以都是低电平有效。
表中关系是:
数据传输方式 | M/IO | RD | WR
I/O 读 | 0 | 0 | 1
I/O 写 | 0 | 1 | 0
存储器读 | 1 | 0 | 1
存储器写 | 1 | 1 | 0先看 M/IO:M/IO = 1:Memory,访问存储器 M/IO = 0:I/O,访问端口
再看 RD/WR:RD = 0:读 WR = 0:写
所以:
M/IO = 1 且 RD = 0 → 存储器读M/IO = 1 且 WR = 0 → 存储器写M/IO = 0 且 RD = 0 → I/O 读M/IO = 0 且 WR = 0 → I/O 写
9.8284A:时钟发生器
最后讲 8284A。8086 最小系统除了 8282、8286,还需要 8284A。
8284A 的功能有三个:
产生稳定时钟信号 同步 READY 信号 同步 RESET 信号
为什么需要 8284A 产生时钟?CPU 需要时钟 CLK 才能工作。
8086/8088 不能随便接一个不规范的时钟信号,需要满足一定频率和占空比要求。
8284A 可以提供符合 CPU 要求的时钟。
8284A 的振荡源一般采用晶体振荡器,也可以用外接脉冲发生器。
如果用外接脉冲发生器,F/C 端接高电平。重点是:
8284A 输出给 CPU 的时钟频率是振荡源频率的 1/3
也就是说,如果你想让 CPU 得到 5MHz 时钟,那么振荡源通常要是 15MHz。
READY 和 RESET 为什么要同步?外部 READY、RESET 信号可能在任意时刻变化。
但 CPU 内部按时钟节拍工作。
如果这些异步信号直接送入 CPU,可能会造成时序不稳定。
8284A 可以把它们同步到时钟边沿后,再输出给 CPU。
所以:外部 RDY → 8284A 同步 → READY 给 CPU外部 RES → 8284A 同步 → RESET 给 CPU
这可以提高系统可靠性。
最小模式整体怎么理解?
看到图 2.21,可以这样读:

CPU 8086 在中间。8284A 给 CPU 提供 CLK、READY、RESET。8282 把 CPU 在 T1 输出的地址锁存成稳定地址总线。8286 连接 CPU 和系统数据总线,增强驱动能力并控制方向。CPU 输出 M/IO、RD、WR 等控制信号,形成控制总线。存储器和 I/O 接口接在地址总线、数据总线、控制总线上。
所以最小系统的核心结构是:
8086 ├─ 8284A:时钟/复位/READY 同步 ├─ 8282:地址锁存 ├─ 8286:数据收发 └─ 存储器、I/O 接口
总结:
1. RESET
RESET 高电平至少 4 个时钟周期有效复位后 CS = FFFFH,IP = 0000HCPU 从 FFFF0H 开始执行
2. READY
READY = 0:插入等待周期 TwREADY = 1:设备准备好,继续完成总线周期
3. MN/MX
MN/MX = 1:最小模式 MN/MX = 0:最大模式
4. 最小模式主要控制信号
INTA:中断响应 ALE:地址锁存允许DEN:数据允许 DT/R:数据方向M/IO:内存或 I/O WR:写信号HOLD:外部请求总线HLDA:CPU 同意让出总线
5. M/IO、RD、WR 组合
M/IO = 1:存储器 M/IO = 0:I/ORD = 0:读 WR = 0:写
所以:
存储器读:M/IO=1,RD=0 存储器写:M/IO=1,WR=0I/O读:M/IO=0,RD=0 I/O写:M/IO=0,WR=0
6. 最小系统常见芯片
8284A:时钟发生器,同时同步 READY 和 RESET8282/8283:地址锁存器8286/8287:数据总线收发器
需要理解的是:
为什么需要 8282?因为地址/数据复用,地址必须锁存。为什么需要 8286?因为数据总线要增强驱动并控制方向。为什么需要 8284A?因为 CPU 需要稳定时钟,还要同步 READY 和 RESET。
