【输入输出接口概念】外设接口功能及其一般结构,I/O端口编址方式,输入/输出数据传送方式,端口译码技术
【输入/输出接口】
外部设备及其信号
外部设备 = 输入设备 + 输出设备 + 复合输入/输出设备
外部设备的信号 = 数据信号(数字量、模拟量、开关量、脉冲量) + 状态信号(如Ready、Busy等,总是从外部设备发往CPU) + 控制信号(CPU发往外部设备)
外部设备的信号以数据形式,通过总线在CPU和外部设备之间传输
I/O接口及功能
接口的重要性:微机和I/O设备的信息类型和格式大多不一样,信号传输处理速度大多不匹配
接口功能:设备选择、信息传输、数据格式转换、联络、中断管理、复位、可编程、错误检测
接口的组成
接口处理的信号:CPU(或总线)与I/O设备之间的接口信息,通常分为数据信号、状态信号、控制信号
接口组成:接口硬件 + 接口软件(驱动程序)
端口:接口内的寄存器,暂存CPU和外设之间传输的数据、状态和命令
端口地址:每个端口有一个独立的地址
外部设备地址:设备接口内各端口的地址
端口种类:数据端口、命令(控制)端口、状态端口
接口软件 —— 初始化程序段、传送方式处理程序段、主控程序段、程序终止与退出程序段、辅助程序段
IBM PC的外设接口:单总线结构 + 通用的集成I/O芯片
现代PC机的外设接口:南北桥结构 或 中心结构
I/O端口的编址方法
- I/O端口与内存统一编址(存储器映射编址方式):1个8位端口占用一个内存单元地址
- I/O端口与内存独立编址(I/O端口编址方式):访问I/O端口需要专门的I/O指令
简单I/O接口的组成和译码
地址总线上传送的地址码对接口中的不同寄存器或电路进行区分
访问设备,实际是访问接口卡上的端口
I/O端口地址空间(ISA总线):实际只用A9-A0,连续2个8位端口等价1个16位端口,连续4个8位端口等价1个32位端口
I/O操作所需总线信号:地址信号AB、IO读写-IOW或-IOR、地址允许AEN
I/O端口地址寻址方式:I/O直接寻址(8位地址,1字节立即数寻址)和间接寻址(16位地址,DX寄存器给出)
I/O端口地址选用原则:系统配置占用的,或申明保留的地址,不能使用
端口选择(译码)技术:门电路、芯片、可编程逻辑器件(ABEL语言)
I/O端口地址译码电路设计
1:固定式端口地址译码
将端口地址转二进制,所有地址线、IOR和AEN经过与门为1
2:地址译码电路(74LS138,3-8译码器,G2A=G2B=0,G1=1)
高位地址用于译码芯片使能,低位地址用于选择接口内不同的端口
配置多段地址——使用jumper跳线器改变端口地址
由于读、写操作不会同时进行,输入端口和输出端口可使用同一个地址编码
数据锁存器与缓冲器(端口的设计&实现)
锁存器:由CLK上升沿或下降沿触发,输出不随输入变化
缓冲器:输出和输入随时保持一定关系,目的是加大负载
简单I/O接口:组合地址译码、数据锁存与缓冲、状态寄存器、命令寄存器各个电路
示意图:
【输入输出数据传输的控制方式】
1:程序方式
程序控制信息传送,CPU享有“主动权”
·无条件传送:输入信号不用锁存,输出信号用锁存
·条件传送(查询/异步):有存储和传送状态的端口;输入过程READY先1后0,输出过程BUSY先1后0
2:中断方式
CPU和外设“并行工作”,外设享有“主动权”
每传送一次数据,CPU必须执行一次中断服务程序
高速外设容易产生覆盖错误,传送速度低且CPU时间消耗大
3:直接存储器存取方式(DMA)
Direct Memory Access
由DMA控制器(DMAC)来实现内存与外设,或外设与外设之间的直接快速传送,CPU不参加数据的传送工作
DMA方式使信息传送从以CPU为中心变为以内存为中心
一次DMA传送只需要执行一个DMA周期(相当于一个总线读/写周期)
·DMA传送的工作过程:
1)I/O设备向DMAC发出DMA请求;
2)DMAC向CPU发出总线请求(HOLD);
3)CPU在执行完当前指令的当前的总线周期后,向DMAC发出总线响应信号(HLDA);
4)CPU脱离对系统总线的控制,由DMAC接管对系统总线的控制;
5)DMAC向I/O设备发出DMA应答信号;
6)DMAC进行一个字节的传送;
7)完成设定的字节数据传送,CPU恢复对系统总线的控制;
【开关量输入输出接口】
1:开关量输入接口
1)基本的开关量输入接口
形态:单刀单掷、单刀双掷、按钮
开关量通过三态缓冲器(输入输出同相 或 输入输出反相)与系统数据总线连接
一条输入指令可以同时读入8位或16位开关量
2)矩阵式开关量输入接口
行线(R0~R7):数据输出端口
列线(C0~C7):数据输入端口
电路特点:
·没有键按下时,列线全为1;
·行线全为1时,无论有无键按下,列线仍全为1
·某行线为0时,若该行有键按下,则输出7个1和1个0,0的位置与键对应
键盘扫码与编码:
·编码是二字节码(高8位行码 + 低8位列码),例如(R3,C2)是(11110111,11111011)=F7FB H
·扫描码是一字节码(数字码),例如(R3,C2)=32 H =(0011,0010)
键盘扫码程序:
·没有键按下,返回-1
·有键按下,产生抖动,返回二字节码(行列码)
·PRORT和CPORT定义行、列端口的地址
2:开关量输出接口
1)基本的开关量输出接口
LED发光二极管,输出0发光,输出1熄灭
2)LED七段数码显示管接口
位选择:选择某个数码管
段选择:选择某竖或某横的灯管(如abcdefg)
类型 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
共阳极 | 0C0H | 0F9H | 0A4H | 0B0H | 99H | 92H | 82H | 0F8H | 80H | 90H |
共阴极 | 3FH | 06H | 5BH | 4FH | 66H | 6DH | 7DH | 07H | 7FH | 6FH |