跳转至

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:包含数据
  • 最小模式引脚 \(\text{ALE}\)

    • 地址锁存使能(address latch enable) 显示 8086/8088 包含地址的地址 / 数据总线
      • 可以是内存地址或 I/O 端口号
      • ALE 信号在保持确认期间不会浮动
  • 最小模式引脚 \(\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)(一个上脉冲和一个下脉冲)

评论区

如果大家有什么问题或想法,欢迎在下方留言~