8086/8088 Hardware Specifications⚓︎
约 1247 个字 预计阅读时间 6 分钟
Pin-Outs and Pin Functions⚓︎
本节将介绍每个微处理器引脚的功能,并讨论 I/O 的基本特点,为接下来理解 I/O 接口打下基础。
Pin-Outs⚓︎
下面展示了 8086 & 8088 的引脚图(pin-out):
两者均封装在 40 个引脚的双列直插式封装(dual in-line packages, DIPs) 中
8086 是一款具有 16 位数据总线的 16 位微处理器,而 8088 则拥有 8 位数据总线。
- 8086 的引脚连接为 AD0–AD15
- 8088 的引脚连接为 AD0–AD7
数据总线宽度是唯一的主要区别。因此,8086 更有效地传输 16 位数据。
808 6 可以工作在以下两种模式中的一种:
-
最小模式(minimum mode):
- 最简单且成本最低的模式
- 内存与 I/O 操作的所有控制信号都由处理器生成
-
最大模式(maximum mode):
- 允许系统使用外部协处理器,例如 8087(浮点协处理器)
- 一些控制信号必须由外部生成(需要外部总线控制器 8288)
在这两种模式下的 8086 引脚排布:
- \(\text{VCC}\)(+5V 电源)
- \(\text{GND}\)(接地)
- \(\text{MX}\) / \(\overline{\text{MX}}\)(最小 / 最大
) :- 表示处理器将运行的模式
- 最小模式:HIGH
- 最大模式:LOW
8086 的配置(均提供全部控制信号
-
最小模式:
- 8282 锁存器
- 8286 3 状态缓冲区
- 74138 解码器
-
最大模式:
- 8282 锁存器
- 8286 3 状态缓冲区
- 8288 总线控制器
-
引脚连接 \(\text{AD}_{15} - \text{AD}_0\)
- 8086 地址 / 数据总线线路是时间复用(time multiplexd) 的地址和数据总线线路:
- ALE 活动(active)(逻辑 1
) :包含 16 位内存地址或 I/O 端口号 - ALE 不活动(inactive)(逻辑 0
) :包含数据
- ALE 活动(active)(逻辑 1
- 8086 地址 / 数据总线线路是时间复用(time multiplexd) 的地址和数据总线线路:
-
最小模式引脚 \(\text{ALE}\)
- 地址锁存使能(address latch enable) 显示 8086/8088 包含地址的地址 / 数据总线
- 可以是内存地址或 I/O 端口号
- ALE 信号在保持确认期间不会浮动
- 地址锁存使能(address latch enable) 显示 8086/8088 包含地址的地址 / 数据总线
-
最小模式引脚 \(\text{IO}/\overline{\text{M}}\) (8088)或 \(\text{M}/\overline{\text{IO}}\)(8086)选择内存或 I/O
- 表示包含一个内存地址或 I/O 端口地址的地址总线
- 保持确认期间处于高阻抗 (high-impedance) 状态
-
\(\text{BHE}\):在 8086 中,总线高使能(bus high enable) 引脚用于在读或写操作期间启用最高有效数据总线位(\(\text{D}_{15}–\text{D}_8\))
-
引脚连接 \(\overline{\text{RD}}\)
- 当读信号是逻辑 0 时,数据总线能够接收来自内存或 I/O 设备的数据
- 引脚在保持确认期间处于高阻抗状态
-
最小模式引脚 \(\overline{\text{WR}}\)
- 写线路(write line) 指示 8086/8088 正在向内存或 I/O 设备输出数据
- 在 \(\text{WR}\) 为逻辑 0 的时间内,数据总线包含用于内存或 I/O 的有效数据
- 引脚在保持确认期间处于高阻抗状态
-
引脚连接 \(\text{INTR}\)
- 中断请求(interrupt request) 用于请求硬件中断
- 如果当
IF = 1时 \(\text{INTR}\) 保持高电平,8086/8088 在当前指令执行完成后进入中断确认周期
-
\(\text{NMI}\)
- 非屏蔽中断输入(non-maskable input) 和 \(\text{INTR}\) 类似
- 不检查
IF标志位是否为逻辑 1 - 若被激活,使用 2 号中断向量
-
最小模式引脚 \(\overline{INTA}\)
- 中断确认(interrupt acknowledge) 信号是对 \(\text{INTR}\) 输入引脚的响应
- 通常用于在响应中断时将中断向量号门控到数据总线上
-
最小模式引脚 \(\overline{LOCK}\)
- 锁输出用于锁定系统的外围设备
- 此引脚通过在任何指令前使用
LOCK:前缀来激活
Memory Banks⚓︎
DRAM 组织:
x86 使用内存库(memory banks) 来支持单字节传输(one byte transfer) 或未对齐的内存访问(unaligned memory access)。一个「库(bank)」指代的是一个 8 位宽的内存,比如:
- 8088 有 8 位的数据总线,且内存地址空间实现为单个 1MB 的内存库
- 8086 有 16 位的数据总线,且内存地址空间实现为两个独立的 512 KB 内存库
单内存库 vs 双内存库:
内存库的选择:
-
库高使能 (bank high enable)(\(\overline{\text{BHE}}\))和库低使能 (bank low enable)(\(\overline{\text{BLE}}/\text{A0}\))用作库选择信号:
- \(\overline{\text{BHE}} = 0\) 启用高位 / 奇数位的内存库
- \(\overline{\text{BLE}}/\text{A0} = 0\) 启用低位 / 偶数位的内存库
-
地址位 \(\text{A1-A19}\) 选择位置
未对齐的内存访问需要两个总线周期:
- 第一个周期:使用 \(\text{D8-D15}\) 进行数据传输
- 第二个周期:使用 \(\text{D0-D7}\) 进行数据传输
- 保持内存访问对齐在 x86 机器上也很重要
- x86 的内存和 I/O 空间按库排列;库选择信号(\(\overline{\text{BHE}}\) 和 \(\overline{\text{BLE}}/\text{A0}\))用于引用字节数据
- 我们通常需要为内存和 I/O 写操作分别使用单独的写脉冲信号(write strobes)(一个上脉冲和一个下脉冲)
评论区









