总线技术概述

  • 微机系统的两种工作方式
    • 最小工作方式:本书重点介绍
    • 最大工作方式:加上总线控制器8288共同形成系统总线信号。
  • 三总线的构成最大组态比最小组态多了一个总线控制器
  • 三总线
    • 地址总线:CPU的地址总线都是输出的,输出给要寻址的从模块比如IO模块。
      • 受控模块都是输入。
    • 控制总线:有输入也有输出。
    • 数据总线:双向传输。在主从模块之间传送。
  • 总线分类
    • 信息传输方向分类:单向总线和双向总线。
    • 数据传输方式是分类:并行总线和串行总线。
    • 内总线和外总线:
      • 芯片总线,也叫做局部总线,也叫做处理器总线,是引脚信号。
      • 内总线,也叫全局总线,母总线,是微机中各个模块之间的连线。
      • 外总线,微机系统和其他外设的连线。
  • 总线的功能:实现数据传输。
  • 总线操作的四个阶段
    • 总线请求和仲裁(集中仲裁、分布仲裁)
    • 寻址
    • 数据传送
    • 结束
  • 两种同步方式
    • 同步时序:总线操作的各个过程中有公用的总线时钟信号控制。具有固定的时序,主从模块之间没有应答。
    • 异步时序:应答方式。
  • 三个周期
    • 时钟周期:一个T状态。
    • 总线周期:==CPU和IO或存储进行数据交换的过程。
    • 指令周期:一条指令经过取指、译码、读写操作到执行完成的过程。

例题

  • Q:push ax需不需要总线周期?
    • A:需要。因为堆栈在存储中。
  • Q:任何指令的取指阶段都需要存储器读总线周期,对吗?
    • A:正确。
  • Q:IBM PC中IOCHRDY的含义
    • A:表示IO通道准备好了。
  • Q:执行add [2000H],AX需要多少个总线周期?
    • A:3+2+2=7个。
      • 解释1:
        • 读取指令阶段:8088数据总线为8位,每次总线周期只能进行8位数据(即一个字节)读写。mov [2000h],ax的指令的代码是3个字节,所以进行指令读取(即取指)需要3个读取存储器的总线周期。执行该指令,首先从主存[2000h]单元读取一个16位字,故需要2个存储器读总线周期;然后读取的数据与AX内容相加,结果还要写回这个位置,这又需要2个存储器写总线周期

8088最小组态的40个引脚信号

引脚是输入还是输出的小总结:

  • 地址线:输出。
  • 数据线:双向
  • 状态:输出。
  • 地址使能ALE:输出。
  • IO/M、WR、RD:输出。
  • READY:输入

地址信号20个

8086和8088的最大区别
8088外部只有8根数据总线。
8086外部有16根地址总线。

  • AD0-AD7:地址/数据分时复用引脚(8086是AD0~AD15)
    • 功能:传输地址或者数据,具有三态能力。
    • 数据流向
      • 地址:单向输出
      • 数据:双向传送数据
  • A8-A15:8位地址引脚,具有三态能力,只能单向输出。
  • A16/S3 - A19/S6:地址/状态分时复用引脚
    • 功能
      • 访问存储器T1输出高四位地址
      • 访问外设:T1输出低电平,无效。
      • 其他时间:输出状态信号S6~S3,反映CPU的一些基本状态。
    • 数据流向
      • 状态:单向输出

重点:T1时刻输出A19~A16地址!

注意:软件编程时,使用逻辑地址(两个16位数)来表达存储单元;硬件编程时,使用 20 位物理地址;8088 内部有加法器可以完成逻辑地址向物理地址的转换;访问外设是,只会用到低 16 位访问 64KB 的空间

读写信号8个:没写输入就是输出

  • ALE地址锁存允许引脚。三态。输出。高电平有效。
    • 有效表示:分时复用引脚上正在输出地址信号
    • T1有效:数据传送的开始。
  • IO/M*:CPU即将访问I/O或者存储器。三态。输出。
    • 高电平:访问IO。此时低16位地址总线提供IO地址
    • 低电平:访问存储。20位地址线均输出物理地址
  • WR*:写控制引脚。(CPU正在写)三态。输出。
  • RD*:读控制引脚。(CPU正在读)三态。输出。
  • Ready:就绪引脚。输入。存储器或I/O就绪信号。
    • 有效表示:I/O外设或者存储器准备好了,可以进行数据读写。
    • T3时候会测试这个引脚,如果高有效,CPU可以进行数据传送。否则会插入Tw等待周期。
  • DEN*:数据使能线。有效的时候表示数据总线上正在传送数据。
  • DT/R*:数据传送还是接收。用来是说明数据的流向,即输入还是输出。
  • SS0:表示是系统级还是指令级调用。
    • 状态输出信号。
    • IO/M*DT/R*一起指示CPU在最小组态的工作状态。

中断请求和响应引脚3个

  • INTR可屏蔽中断请求引脚输入信号
    • CPU在指令周期的最后一个T状态采样这个引脚。
    • 中断设备向处理器申请可屏蔽中断。
  • INTA*可屏蔽中断响应信号输出信号
    • 中断响应周期是连续的两个总线周期。
    • 来自INTR的中断请求得到CPU的响应。
  • NMI:不可屏蔽中断请求引脚,输入,上升沿有效
    • 外设向CPU发送不可屏蔽中断。
    • 优先权高于可屏蔽中断请求,只能响应无法屏蔽。

总线请求和保持引脚2个

  • HOLD:总线请求引脚。输入信号。其他总线主控设备向处理器申请总线控制权。
  • HLDA:总线响应引脚。输出信号。表示CPU已释放总线。
    • 所有的总线都呈现高阻态,总线请求设备可以掌握总线。

其他7个

  • RESET:复位引脚。输入。迫使CPU回到初始状态,即CS=FFFFH,IP=0000H
  • CLK:时钟输入。
  • MN/MX*:输入引脚,组态选择。
    • 高电平:最小组态。反之最大组态。
    • 最小态:只带本身,没有外设。
    • 最大态:外接设备。
  • TEST*:是否为浮点数。输入。配置WAIT。
  • VCC:电源5V
  • GND:地线
  • BHE*/S7
    • BHE*:高8位总线允许,允许D15~D8上的数据有效。
    • S7:始终为逻辑1

最小组态的总线时序(重点背诵)

指令周期 > 总线周期 > 时钟周期

  • 指令周期:取指、译码、读写操作、执行的整个过程。
  • 总线周期:CPU通过总线与外部进行一次数据交换的过程。

存储器读周期

  • T1:
    • ALE输出正脉冲,表示复用地址引脚输出地址。
    • IO/M*低电平有效,表示对存储器进行操作。
  • T2:
    • RD*有效,开始通过D0-D7传递输入数据。
  • T3和Tw:
    • 下降沿检查数据是否传送完毕。
    • 如果READY是高电平就进入T4,否则插入N个Tw状态进行等待。
  • T4:
    • 完成数据传送。RD变成无效。数据在下一个总线开始前从数据总线上消失。

存储器写周期

  • T1:
    • ALE输出正脉冲,表示复用地址引脚输出地址。
    • IO/M*低电平有效,表示对存储器进行操作。
  • T2:
    • WR*有效,输出数据到D0-D7
  • T3和Tw:
    • 下降沿检测数据是否完成。
    • 如果是READY高电平就进入T4,否则插入N个Tw状态进行等待。
  • T4:
    • 完成数据传送。WR*无效,数据在下一个总线开始前从数据总线上消失。

I/O读

与存储器读相比,只是将IO/M*改成高电平。

I/O写

与存储器写相比,只是将IO/M*改成高电平。