微机原理与接口技术(六)

输入输出技术概述

  • I/O接口的基本功能
  • I/O接口及其编址方式
  • I/O地址编码

1.I/O接口

  • 接口要解决的问题
    • 速度匹配→数据的缓冲与暂存
    • 信号的驱动能力→信号驱动
    • 信号形式和电平的匹配→信号类型转换
    • 信息格式→信号格式转换
    • 时序匹配(定时关系)
    • 总线隔离→三态门

接口的基本构成

见图104

104

2.I/O端口及其编址

  • 端口:接口电路中用于缓存数据及控制信息的部件

    • 数据端口、状态端口、控制端口

    见图105

    105

I/O端口编址

  • 计算机系统中包含各类不同功能的接口电路

  • 每个接口中含1个或多个端口

    见图106

    106

  • 端口编址

    • 为确保CPU能够访问到每个不同的端口
  • 寻址端口的方法

    • 先找到端口的接口电路芯片→片选

    • 再在该芯片上找具体访问的端口→片内寻址

      • 若接口中仅有一个端口,则找到芯片即找到端口

      • 若接口中由多个端口,则找到芯片后再找端口

        每个端口地址=片选地址(高位地址)+片内地址

  • 8086/8088寻址端口的能力

    • 64K个端口
  • 端口的编址方式

    • 与内存统一编址
    • 独立编址
      • 内存地址资源充分利用,能够应用于端口的指令较少

见图107

107

8088/8086的I/O端口编址

  • 采用I/O独立编址方式,与内存共用地址总线,用IO/#M信号状态区分
  • 访问端口时仅使用地址总线的:A15~A0
  • 可寻址的I/O端口为64K(65536)个,I/O地址范围:0~FFFFH
  • IBMPC只使用了1024个I/O地址(0~3FFH)

3.I/O地址译码

  • 目的:

    • 确定端口的地址
  • 参加译码的信号

    • #IOR,#IOW,高位地址信号
  • 对端口读/写信号的产生条件

    • IO/#M=1
    • #RD=0→#IOR=0
    • #WR=0→#IOW=0

    OUT指令将使总线的#IOW信号有效

    IN指令将使总线的#IOR信号有效

  • 当接口只有一个端口时

    • 无片内地址,全部地址信号均为高位地址(可全部参与译码),译码输出直接选择该端口
  • 当接口具有多个端口时

    • 则16位地址线的高位参与译码(决定接口的基地址),而低位则用于确定要访问哪一个端口
  • 由于端口资源丰富,端口地址译码常采用部分地址译码

I/O地址译码例

  • 某外设接口有4个端口,地址为2F0H——2F3H,由A15~A2译码得到,而A1,A0用来区分接口中的4个端口。试画该接口与系统的连接图

  • 地址范围

    见图108

    108

  • 译码电路图

    见图109

    109

简单接口电路

1.接口的分类及特点

  • 按传输信息的方向分类:
    • 输入接口
    • 输出接口
  • 按传输信息的类型分类:
    • 数字接口
    • 模拟接口
  • 按传输信息的方式分类:
    • 并行接口
    • 串行接口

见图110

110

接口特点

  • 输入接口

    • 要求对数据具有控制能力

    • 常用三态门实现

      见图111

      111

  • 输出接口

    • 要求对数据具有锁存能力

    • 常用锁存器实现

      见图112

      112

2.三态门接口

  • 特点:
    • 具有对数据的控制能力,但不具备对数据的控制能力
  • 74LS244
    • 含8个三态门的集成电路芯片
    • 在外设具有数据保持能力时用来输入接口

见图113

113

三态门接口应用例

  • 编写程序

    • 判断图中的开关状态。若所有开关都闭合,则程序转向标号NEXT1,否则转向标号为NEXT2的程序执行。

      见图114

      114

    • 采用看部分地址译码,地址线A1和A0未参加译码

    • 接口芯片的地址范围:

      83FCH~83FFH

    • 当地址总线上A15~A0出现此4个地址之一时,#E1#E2端有效,三态门导通。

  • 题目分析

    • 当开关断开时,三态门输入端I呈现高电位
    • 当开关闭合时,三态门输入端I呈现低电位
1
2
3
4
5
6
7
8
       MOV DX, 83FCH
IN AL, DX
AND AL, 0FFH
JZ NEXT1
JMP NEXT2
...
NEXT1: ...
NEXT2: ...

3.锁存器接口

  • 特点
    • 具有对数据的锁存能力
  • 8D锁存器
    • 74LS273:8D触发器,不具备数据的控制能力
    • 74LS373:含三态的8D触发器,具有对数据的控制能力
      • 既可以做输入接口,也可做输出接口

74LS273

  • 由8个D触发器组成

    见图115

    115

锁存器接口例

  • 应用74LS273作为输出接口,实现对8个发光二极管的控制

    见图116

    116

  • 题目分析:

    • 由图得,要使接到Q端得发光二极管亮,其对应得Q端须输出“1”状态,反之输出“0”状态。
  • 由图得出锁存器74LS273得端口地址:FFFFH

  • 程序段

    1
    2
    3
    MOV DX, 0FFFFH        ;数字得第一个数符是字符型时其前要加0
    MOV AL, 01000001B
    OUT DX, AL

    基本输入/输出方法

  • 无条件传送 (程序控制方式)

  • 查询式传送 (程序控制方式)

  • 中断方式传送

  • 直接存储器存取(DMA)

1.无条件传送

  • 要求外设总是处于准备好状态
  • 优点
    • 软件及接口硬件简单
  • 缺点
    • 只适于简单外设,适应范围较窄

无条件传送例

见图117

117

2.查询工作方式

  • 仅当条件满足时才能进行数据传送
  • 每满足一次条件只能进行一次数据传送
  • 适用场合
    • 外设并不总是准备好
    • 对传送速率和效率要求不高
  • 工作条件
    • 外设应提供设备状态信息
    • 接口应具备状态端口

查询工作方式流程图

见图118

118

  • 优点
    • 软硬件比较简单
  • 缺点
    • CPU效率低,数据传送得实时性差,速度较慢

见图119

119

3.中断控制方式

  • 特点:
    • 外设在需要时向CPU提出请求,CPU再去为它服务。服务结束后或在外设不需要时,CPU可执行自己的程序
  • 优点
    • CPU效率高,实时性好,速度快
  • 缺点
    • 程序编制相对较为复杂

以上三种I/O方式的共性

  • 信息传送均需通过CPU
  • 软件:
    • 外设与内存之间的数据传送是通过CPU执行程序来完成的(PIO方式)
  • 硬件:
    • I/O接口和存储器的读写控制信号、地址信号都是由CPU发出的
  • 缺点:
    • 程序的执行速度限定了传送的最大速度

见图120

120

4.DMA控制方式

  • 特点:
    • 外设直接与存储器进行数据交换 ,CPU不再担当数据传输的中介者
    • 总线由DMA控制器 (DMAC) 进行控制 (CPU要放弃总线控制权) ,内存/外设的地址和读写控制信号均由DMAC提供。

见图121

121

DMA控制方式的工作流程

① 外设向DMA控制器发出“DMA传送请求”信号DRQ

② DMA控制器收到请求后,向CPU发出“总线请求”信号 HOLD;

③ CPU在完成当前总线周期后会立即发出HLDA信号,对 HOLD信号进行响应;

④ DMA控制器收到HLDA信号后,就开始控制总线,并向外设 发出DMA响应信号DACK。

DMA工作方式

  • 周期窃取:

    • 每个DMA周期只传送一个字节或一个字就立即释放总线。
  • 数据块传送:

    • DMAC在申请到总线后,将一块数据传送完后才释放总 线,而不管中间DREQ是否有效。
  • 直接存取方式:

    • DMA的数据传送请求直接发到主存储器,在得到响应后, 整个工作过程在DMA控制器中由硬件完成。

周期窃取的DMA方式

见图122

122

4种基本I/O控制方式总结

  • 无条件传送:

    • 简单,适用范围小,仅适用于“随时准备好”的低速外设
  • 查询工作方式

    • 简单,适用于具备“状态信息”的低速外设
    • CPU效率低,控制实时性差
  • 中断方式

    • 适用于中速外设
    • 相对于查询方式,CPU效率较高,控制实时性较好
  • DMA方式

    • 数据传输由DMA硬件来控制,数据直接在内存和外设之间交换,可以达到很高的传输速率。
    • 控制复杂,硬件成本相对较高。

简单I/O控制系统设计

例1

  • 外设状态端口地址为03FBH,第5位(bit5)为状态标志(=1忙,=0准备好);外设数据端口地址为03F8H,写入数据会使状态标志置1;外设把数据读走后又把它置0。

  • 要求:

    • 画出该控制系统电路图
    • 利用查询工作方式,将DATA下100B数据输出。

见图123

123

  • 题目分析

    • 外设有1位状态位,需要通过输入接口将状态信息输入系统;
      • 可选择一个三态门或74LS244接口
    • 数据需由系统输出,需要通过输出接口
      • 可选择74LS273接口
    • 输入接口地址= 03FBH,bit5=1表示“忙”
    • 输出接口地址=03F8H
    • 待输出数据在内存中的首地址=DATA;
    • 待输出数据块大小=100B
  • 状态端口地址:0000 0011 1111 1011

    数据端口地址:0000 0011 1111 1000

见图124

124

  • 控制程序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
           LEA SI, DATA
    MOV CX, 100
    AGAIN: MOCDX, 03FBH
    WAITT: IN AL,DX
    TEST AL, 20H
    JNZ WAITT
    MOV DX, 03F8H
    MOV AL, [SI]
    OUT DX, AL
    INC SI
    LOOP AGAIN
    HLT

    见图125

125

例2

根据开关状态在7段数码管上显示数字或符号

  • 设输出接口的地址为F0H,输入接口地址为F1H(仅给出8位地址,为部分地址译码)
  • 当开关的状态分别为0000~1111时,在7段数码管上对应显示’0’~’F’
  • 外部设备,需要通过I/O接口与系统连接
  • 题目分析
    • 输入设备:4个开关
    • 输出设备:1个七段数码管
    • 需要1个输入接口,1个输出接口

见图126

126

见图127

127

见图128

128

  • 程序段

见图129

129

中断技术

  • 中断的基本概念
  • 中断相应的一般过程
  • 中断向量表
  • 8088/8086中断系统

1.中断的基本概念

  • 中断:
    • CPU执行程序时,由于发生了某种随机的事件(外部或内部), 引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务 程序,以处理该事件,该事件处理完后又返回被中断的程序 继续执行,这一过程称为中断。
      • 事件为中断源
      • 一段特殊的服务程序是中断服务(处理)子程序

引入中断的原因

  • 提高对外设的相应实时性
  • 提高了CPU的利用率
    • 避免了CPU不断检测外设状态的过程

中断类型

  • 根据中断请求的来源分为:
    • 内部中断
      • 异常中断——异常事件引起
      • 软件中断——中断指令引起
    • 外部中断
      • 可屏蔽中断——INTR中断
      • 非屏蔽中断——NMI中断

2.外部可屏蔽中断相应的一般过程

  • 中断请求
  • 中断源识别及中断判优
  • 中断响应
  • 中断处理(服务)
  • 中断返回

1)中断请求

外部可屏蔽中断请求信号:INTR

  • 中断请求信号应保持到中断被处理为止;
  • CPU响应中断后,中断请求信号应及时撤销。

2)中断源识别

  • 软件查询法
  • 中断矢量法 → 由中断源提供中断类型号,CPU根据类型确定中断源
中断判优

中断源识别及判优由硬件系统完成

  • 优先级法则

    • 低优先级的中断程序允许被高优先 级的中断源所中断
  • 排队法则

    • 先来先响应
  • 中断控制器判优:根据中断向量码(中断类型码)确定中断源

见图130

130

3)中断响应

外部可屏蔽中断响应信号:#INTA

  • 向中断源发出#INTA中断响应信号;
  • 关中断 → 不允许响应其它中断
  • 保护硬件现场 → 将FLAGS压入堆栈
  • 获得中断服务程序入口地址
  • 以上由硬件系统完成

4)中断处理

  • 执行中断服务子程序
  • 中断服务子程序的特点:
    • 为“远过程”
    • 用IRET指令返回
中断服务子程序完成的工作
  • 关中断,保护现场,保护断点,找入口地址
  • 保护软件现场(参数)
  • 开中断(STI)
  • 中断处理
  • 关中断(CLI)
  • 恢复现场
  • 中断返回

5)中断返回

  • 执行IRET指令,使IP、CS和FLAGS从堆栈弹出
  • 恢复断点和硬件现场

中断处理过程

见图131

131

3.中断向量表

  • 存放各类中断的中断服务程序的 入口地址;
  • 位于内存的00000H~003FFH。

见图132

132

  • 每个入口占用4 Bytes,低字为段内偏移,高字 为段基址;
  • 中断向量表大小为1KB,共256个入口。

见图133

133

4.8088/8086中断系统

见图134

134

8088内部中断与NMI中断

  • 特点:
    • 无#INTA周期
    • 中断类型码固定或指令给出

8088/8086 中断响应和处理流程

见图135

135

输入输出与中断技术小结

应理解:

  • I/O接口的基本概念和功能
    • 什么是/O端口?
  • I/O端口的编址方式
    • 4种基本I/O方法的特点及适用场合
  • 什么是中断?什么是中断向量表?
    • 中断响应的一般过程

应掌握:

  • I/O接口译码电路设计方法
  • 利用无条件传送或查询方式实现对简单外设的控制
  • 利用三态门接口和锁存器接口芯片实现对简单外设的控制

注意点与常见问题

  • 4种基本输入输出方法各自的应用场合

    • 无条件传送方式:
      • 外设随时处于“准备好”状态,且不能提供状态信息
    • 查询方式:
      • 外设必须要能够提供状态信息
    • 中断方式:
      • 外设必须具备发出高电平中断请求信号的能力
      • 常用于实时性要求较高的中速外设控制
    • DMA方式
      • 整个输入输出由硬件系统完成,适用于高速外设。
  • 简单接口电路设计

    • 译码电路设计
    • 总线信号
  • 接口系统的译码电路常采用部分地址译码

  • 中断技术

    • 中断响应的一般过程
    • 中断向量表
      • 每个表项的含义