microcomputer_principle_13_I/O技术
Carpe Tu Black Whistle

输入输出技术概述

  1. I/O端口的基本功能
  2. I/O端口及其编址方式
  3. I/O地址译码

I/O接口

接口要解决的问题

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

image

接口中的寄存器,就是端口

  1. 对于数据而言,有输入输出两方向,所有有两个端口
  • 数据输入寄存器(or 三态门
  • 数据输出寄存器(锁存器
  1. 状态寄存器
  • 保存外设当前状态,供CPU读取(输入寄存器)
  1. 命令寄存器
  • 存放控制命令(设定接口功能、参数和工作方式)
  • 用于锁存控制信号

I/O端口编址

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

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

image

  • 计算机系统中包含各种不同功能的接口电路
  • 每个接口中含1个或多个端口

image

  • 端口编址
    • 为确保CPU能够访问到每个不同的端口
  • 寻址端口的方法:
    • 先找到端口所在的接口电路芯片 –> 片选
    • 再再该芯片上找到具体访问的端口 –> 片内寻址
      • 若接口中仅有一个端口,则找到芯片即找到端口
      • 若接口中有多个端口,则找到芯片后需再找端口

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

  • 8086/8088寻址端口的能力:
    • 64K个端口
  • 端口的编址方式:
    • 与内存统一编址
    • 独立编址

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

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

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,由译码得到,而用来区分接口中的4个端口。试画该接口与系统的连接图。

  • 地址范围:

    • XXXX 0010111100 00
    • XXXX 0010111100 11

高4位可以为 任意状态,不参与译码电路连线(图中不接入
低2位,必须为片内地址

image

I/O端口译码电路的输入信号,不可能包含,因为,能寻址的端口最多16位地址
读写控制信号必须作为译码器的输入信号

简单接口芯片

简单–> 没有可能,通过软件的方式改变工作模式,不可能改变传输方向; 内部没有更多的辅助控制逻辑,只是简单的通道,没有独立端口;

接口的分类及特点

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

image

接口特点

  • 输入接口:
    • 要求对数据具有控制能力
    • 常用三态门实现
  • 输出接口:
    • 要求对数据具有锁存能力
    • 常用锁存器实现

image

对于三态门,也有C标记出没有圈圈的,高电平导通版本

三态门接口

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

image

两侧各有4个三态门,每个三态门的控制端都连着含有非门的低电平有效引脚(1和19)

锁存器接口

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

74LS273

  • 由8个D触发器组成

image

仅当CP端出现 上升沿 时Q端才会改变

基本I/O方法

  1. 无条件传送
  2. 查询式传送
  3. 中断方式传送
  4. 直接存储器存取(DMA)

有的教材/课程,将前两种方式,统一地称为 程序控制方式
DMA可以被认为是,通道技术(大型机)的雏形阶段

无条件传送

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

image

读取开关状态,闭合则亮,断开则一直重复

查询工作方式

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

image

  • 优点:

    • 软硬件比较简单
  • 缺点:

    • CPU效率低,数据传送的实时性差,速度较慢

中断控制方式

  • 特点:

    • 外设在需要时向CPU提出请求,CPU再去为它服务。服务结束后或在外设不需要时,CPU可执行自己的程序。
  • 优点:

    • CPU效率高,实时性好,速度快。
  • 缺点:

    • 程序编址相对较为复杂。

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

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

DMA 控制方式

image

DMA,直接存储器存取

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

image

DMA控制方式的工作过程

  1. 外设向DMA控制器发出“DMA传送请求”信号QRD;
  2. DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD;
  3. CPU在完成当前总线周期后会立即发出HLDA信号,对HOLD信号进行响应;
  4. DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK

DAM工作方式

  • 周期窃取:
    • 每个DMA周期只传送一个字节或一个字就立即释放总线。
  • 数据块传送:
    • DMAC在申请到总线后,将一块数据传送完后才释放总线,而不管中间DREQ是否有效。
  • 直接存取方式:
    • DMA的数据传送请求直接发到主存储器,在得到响应后,整个工作过程在DMA控制器中由硬件完成。

下面两种方式,硬件成本更高,会比较贵。
今天微机过程中,更多是 周期窃取

image

每申请到一次总线的控制权,只占用一次周期,完成一次传送
然后将总线换给cpu一个周期,cpu在此周期做其他的事情
结束后,再重新请求,总线控制权

总结

  • 无条件传送:
    • 简单,使用范围小,仅适用于“随时准备好”的低速外设
  • 查询工作方式
    • 简单,适用于具备“状态信息”的低速外设
    • CPU效率低,控制实时性差
  • 中断方式
    • 适用于中速外设
    • 相对于查询方式,CPU效率较高,控制实时性较好
  • DMA方式:
    • 数据传输由DMA硬件来控制,数据直接在内存和外设之间交换,可以达到很高的传输速率。
    • 控制复杂,硬件陈本相对较高

简单IO接口电路实例

例1 查询工作方式

外设状态端口地址位03FBH,第5位(bit5)为状态标志BUSY/#READY;
外设数据端口地址为03F8H,写入数据会使状态标志置1;外设把数据读走后又把它置0010111100

要求:

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

image

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

image

image

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

例2

image

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

  • 设输出接口的地址为F0H,输入接口地址为F1H
  • 当开关的状态分别为0000~1111时,在7段码数码管上对应显示‘0’~‘F’

题目分析:
输入设备:4个开关
输出设备:1个七段数码管
需要1个输入接口,1个输出接口

image

image

1
2
3
4
5
6
7
8
9
10
Seg7 DB 3FH, 06H, 5BH,...

LEA BX, Seg7
MOV AH, 0
GO: IN AL, 0F1H
AND AL, 0FH ; 读开关状态
MOV SI, AX ; 开关状态的编码
MOV AL, [BX+SI] ; 开关状态对应的七段码值的编码
OUT 0F0H, AL
JMP GO