← 返回 计组与微机控制

计组与微机控制

6.3 特殊引脚和工作模式

6.3 特殊引脚和工作模式

RESET、READY、TEST、MN/MX、电源

前面已经讲了 RD、CLK、NMI、INTR 等,继续讲几个输入引脚。

6.3 特殊引脚和工作模式 图 1

1. RESET:复位信号

RESET 是复位输入信号。8086/8088 要求 RESET 至少保持 4 个时钟周期的高电平 才有效。

也就是说:RESET = 高电平,并且持续足够长时间CPU 才认为真的要复位

复位时 CPU 会做什么?

复位有效后,CPU 会:结束当前操作清除标志寄存器 清空指令队列设置 CS = FFFFH当 RESET 变回低电平后,CPU 从:FFFF0H开始执行程序。

为什么是 FFFF0H?

8086 复位后:CS = FFFFH IP = 0000H

所以物理地址为:FFFFH × 10H + 0000H= FFFF0H

也就是说,CPU 复位后会到物理地址 FFFF0H 去取第一条指令。

这个地址通常放的是一条跳转指令,用来跳到 BIOS 或系统初始化程序的真正入口。

可以把 RESET 理解为:“CPU 回到出厂起跑线,从固定入口重新开始执行。”

2. READY:就绪信号

READY 是输入信号,用来告诉 CPU:

外部存储器或 I/O 设备准备好了吗?

为什么需要 READY?CPU 很快,但外部存储器、I/O 设备可能很慢。

比如 CPU 已经发出读请求了,但内存还没把数据准备好。

如果 CPU 不等,直接读,就会读错。所以外部设备通过 READY 告诉 CPU:

READY = 高电平:准备好了,可以继续READY = 低电平:还没准备好,请等一下

READY 和等待周期 Tw

CPU 在每个总线周期的 T3 状态开始检测 READY。

如果 READY 为高电平:CPU 继续进入 T4完成本次总线周期

如果 READY 为低电平:CPU 在 T3 后插入等待周期 Tw

如果一个 Tw 后 READY 还是低电平,就继续插入 Tw。

直到 READY 变成高电平,CPU 才进入 T4 完成传输。

所以可以这样记:

READY = 0 → 插入等待周期 TwREADY = 1 → 继续完成总线周期

前面总线定时的“半同步”联系起来

半同步定时:有统一时钟但慢设备可以用 Wait 信号让主设备等待

这里 READY 的作用就很像那个 Wait。CPU 仍然按时钟工作,但如果外设慢,就通过 READY 让 CPU 插入等待周期。

3. TEST:测试信号

TEST 是输入信号,常和 WAIT 指令配合使用。

WAIT 指令是干什么的?

当 CPU 执行 WAIT 指令时,会检查 TEST 引脚。

如果 TEST 处于有效状态,CPU 继续等待。

如果 TEST 变为无效,CPU 才继续执行后面的指令。

TEST 输入低电平有效时,等待状态结束,CPU 继续执行

更容易理解的说法是:WAIT 指令让 CPU 暂停,直到外部 TEST 信号满足条件。

TEST 常用于什么?典型用途是和协处理器配合。

比如 8087 数值协处理器正在进行浮点计算,8086 可以执行 WAIT 等待 8087 完成。

所以 TEST 可以理解成:外部部件通知 CPU:这边状态满足了,可以继续了

4. MN/MX:最小/最大模式选择

这个引脚非常重要。MN/MX 是模式选择输入信号。

MN/MX 接 +5V → 最小模式MN/MX 接地 → 最大模式

最大模式

最大模式下,系统中可能有多个处理器或协处理器,比如:

8086 + 8087 8086 + 8089

这时总线控制更复杂,CPU 不再直接产生全部总线控制信号,而是输出状态信号,再由外部总线控制器产生控制信号。

所以:最小模式:CPU 自己管总线最大模式:CPU 配合总线控制器管总线

8086/8088 构成的最大/最小系统

先讲最小工作模式。当 MN/MX 接 +5V 时,8086/8088 处于最小工作模式。

此时第 24~31 脚的信号具有最小模式下的功能。

5. INTA:中断响应信号

INTA 是 Interrupt Acknowledge,中断响应信号。它是 CPU 输出给外设的信号。

INTA 和 INTR 的关系

前面学过:INTR:外设向 CPU 发出的可屏蔽中断请求INTA:CPU 对外设的中断响应

过程大概是:

外设通过 INTR 请求中断CPU 如果允许响应,就输出 INTA外设收到 INTA 后,把中断类型号送到数据总线CPU 根据类型号找到中断服务程序

所以 INTR 是“请求”,INTA 是“答应”。

为什么有两个 INTA 负脉冲?

INTA 实际上是连续周期中的两个负脉冲。一般理解:第一次 INTA:

通知外设:你的中断请求已经被 CPU 接受

第二次 INTA:外设把中断类型号放到数据总线上CPU 读取这个类型号

所以 INTA 不是普通的一个电平信号,而是在中断响应总线周期中产生的响应脉冲。

6. ALE:地址锁存允许信号

ALE 是 Address Latch Enable,地址锁存允许信号。

这是本节非常重要的信号。

为什么需要 ALE?

因为 8086/8088 的很多引脚是复用的。比如 8086 的:AD15 ~ AD0

在 T1 时输出地址,在 T2~T4 时传输数据。

问题是:外部存储器访问时,整个总线周期都需要稳定的地址。

但 AD 线过了 T1 就变成数据线了。

所以必须在 T1 的时候把地址“锁存”下来。

ALE 就是告诉外部地址锁存器:

现在 AD 线上是地址,请把它保存下来

ALE 在什么时候有效?

在任何总线周期的 T1 状态,ALE 输出高电平有效信号。也就是:

T1:CPU 输出地址ALE = 1:锁存器把地址锁住T2~T4:AD 线变成数据线,但外部地址总线仍由锁存器保持

最小系统中 ALE 不能悬空

特别强调,在构成最小系统时,ALE 端不能悬空。因为地址锁存是系统正常工作的基础。

如果 ALE 不接,地址锁存器不知道什么时候锁地址,外部存储器就可能收不到稳定地址。

DEN、DT/R、M/IO、WR、HOLD、HLDA

7. DEN:数据允许信号

DEN 是 Data Enable,数据允许信号。

它是 CPU 输出信号,低电平有效。

DEN 用来控制什么?

DEN 通常控制总线收发器,比如 8286/8287。

总线收发器的作用是增强数据总线驱动能力。

DEN 有效时:打开总线收发器允许数据在 CPU 和系统数据总线之间传输

DEN 无效时:关闭总线收发器数据总线隔离或高阻

为什么需要总线收发器?

如果系统里外设、内存芯片很多,CPU 引脚直接驱动整个数据总线可能不够。

就像一个人声音太小,不能让全班听见,需要扩音器。

总线收发器就是数据总线上的“扩音器”和“开关”。

8. DT/R:数据发送/接收控制信号

DT/R 是 Data Transmit/Receive。

它是 CPU 输出信号,用来控制数据传输方向。

DT/R 的含义:

DT/R = 高电平:CPU 发送数据DT/R = 低电平:CPU 接收数据

也就是:

写操作时,CPU 向外发数据 → DT/R = 1读操作时,CPU 从外接收数据 → DT/R = 0

DT/R 和 DEN 的配合

DEN 决定“是否打开总线收发器”。

DT/R 决定“数据往哪个方向走”。

所以:DEN:开不开门 DT/R:门开了以后,数据往外走还是往里走

例如:CPU 写内存:DEN 有效 DT/R = 1CPU → 数据总线 → 内存

CPU 读内存:DEN 有效 DT/R = 0内存 → 数据总线 → CPU

9. M/IO:存储器 / I/O 控制信号

M/IO 是 Memory/Input and Output 控制信号。

M/IO = 高电平:CPU 与存储器之间进行数据传输M/IO = 低电平:CPU 与 I/O 设备之间进行数据传输

所以:

M/IO = 1 → 访问内存M/IO = 0 → 访问 I/O 端口

M/IO 只表示访问对象M/IO 只告诉外部:

这次访问的是内存还是 I/O,但它不告诉是读还是写。

读写要结合 RD、WR。所以在最小模式下:M/IO + RD + WR

共同决定总线操作类型。

10. WR:写信号

WR 是 Write,写信号,低电平有效。

当 CPU 要向内存或 I/O 端口写数据时,WR 会变为低电平。

WR = 0:写操作有效,WR = 1:没有写操作

WR 也要和 M/IO 配合。

比如:

M/IO = 1,WR = 0 → 写内存M/IO = 0,WR = 0 → 写 I/O 端口

WR 在总线周期中什么时候有效?

在写操作总线周期中,WR 在:T2、T3、Tw状态为低电平。

这和前面 RD 类似。T1 给地址,T2 以后发出写控制信号并传输数据。

11. HOLD:总线保持请求信号

HOLD 是输入信号。它表示:别的主控部件请求占用系统总线

最典型的例子是 DMA 控制器。

为什么需要 HOLD?

有时不是 CPU 访问内存,而是 DMA 控制器要直接访问内存。

DMA 想自己使用地址总线、数据总线、控制总线。但总线平时由 CPU 控制。

所以 DMA 会向 CPU 发出 HOLD 请求:请把总线让给我

CPU 收到 HOLD 后怎么做?当 CPU 检测到 HOLD 后,会在当前总线周期完成后,通过 HLDA 回应。

同时 CPU 会让自己的总线相关引脚进入高阻态。

高阻态可以理解成:CPU 不再驱动这些总线,把总线让出来

这样 DMA 控制器就可以控制系统总线。

12. HLDA:总线保持响应信号

HLDA 是 Hold Acknowledge。

它是 CPU 输出信号,和 HOLD 配合。

HLDA 的含义当 HLDA 有效时,表示:

CPU 已经响应 HOLD 请求,CPU 已经让出总线其他主控部件可以使用总线

所以 HOLD 和 HLDA 的关系是:

HOLD:外部请求总线HLDA:CPU 同意并交出总线

HOLD/HLDA 过程总结

完整过程:

1. DMA 等外部主控部件发 HOLD = 12. CPU 完成当前总线周期3. CPU 输出 HLDA = 14. CPU 相关总线引脚进入高阻态5. 外部主控部件使用总线6. 外部主控部件用完后撤销 HOLD7. CPU 撤销 HLDA,重新获得总线控制权

也就是前面学的“总线请求、仲裁、释放”是对应的。

8088 最小模式下第 34 脚的特殊情况

最小模式下,8088 的第 34 脚不再是 BHE,而是 SS0。

因为 8088 外部数据总线只有 8 位,不需要 BHE 控制高 8 位数据总线。

8088 用:M/IO DT/R SS0

组合起来表示当前总线周期的操作。

6.3 特殊引脚和工作模式 图 2

表 2.6 给出了组合关系。

8086 用 BHE + A0 区分高低字节8088 没有 16 位数据总线,所以没有 BHE 的同样用途

最小模式系统配置

里面主要有:

8284A:时钟发生器8282 或 74LS373:地址锁存器8286/8287:总线收发器

为什么最小系统还需要这些芯片?

8086 虽然是 CPU,但它不能单独直接构成完整系统。

原因有几个:

第一,CPU 需要稳定时钟,所以要时钟发生器。第二,地址/数据线复用,所以要地址锁存器。第三,系统总线负载较大,CPU 驱动能力有限,所以要总线收发器。

所以一个最小系统通常不是只有 CPU,而是:

CPU + 时钟电路 + 地址锁存 + 数据收发 + 存储器/I/O