← 返回 计组与微机控制

计组与微机控制

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 的连接。

6.4 8282、8284A、8286 图 1

第一片 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

6.4 8282、8284A、8286 图 2

经过 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,可以这样读:

6.4 8282、8284A、8286 图 3

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。