580 likes | 691 Views
输入输出接口. 第 6 章. 第 6 章 输入输出接口. 教学重点 I/O 接口电路的典型结构 无条件传送 查询传送 中断传送. 6.1 I/O 接口概述. 为什么需要 I/O 接口(电路) ? 微机的外部设备多种多样 工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大 它们不能与 CPU 直接相连 必须经过中间电路再与系统相连 这部分电路被称为 I/O 接口电路. 多种外设. CPU. 接口 电路. I/O 设备. 6.1 I/O 接口概述 (续 1 ). 什么是 I/O 接口(电路)?
E N D
输入输出接口 第6章
第6章 输入输出接口 教学重点 I/O接口电路的典型结构 无条件传送 查询传送 中断传送
6.1 I/O接口概述 为什么需要I/O接口(电路)? • 微机的外部设备多种多样 • 工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大 • 它们不能与CPU直接相连 • 必须经过中间电路再与系统相连 • 这部分电路被称为I/O接口电路 多种外设
CPU 接口 电路 I/O 设备 6.1 I/O接口概述(续1) 什么是I/O接口(电路)? • I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路 • PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路
6.1 I/O接口概述(续2) 什么是微机接口技术? • 处理微机系统与外设间联系的技术 • 注意其软硬结合的特点 • 根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备
数据寄存器 I/O接口电路 数据总线DB CPU 外设 数据 地址总线AB 状态 控制总线CB 控制 状态寄存器 控制寄存器 6.1.1 I/O接口的典型结构 1. 内部结构 2. 外部特性 3. 基本功能 4. 软件编程
1. 内部结构 • CPU与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部: ⑴ 数据寄存器 • 输入数据寄存器:保存外设给CPU的数据 • 输出数据寄存器:保存CPU给外设的数据 ⑵ 状态寄存器 • 保存外设或接口电路的状态 ⑶ 控制寄存器 • 保存CPU给外设或接口电路的命令
2. 外部特性 • 主要体现在引脚上,分成两侧信号 面向CPU一侧的信号: • 用于与CPU连接 • 主要是数据、地址和控制信号 面向外设一侧的信号: • 用于与外设连接 • 提供的信号五花八门 • 功能定义、时序及有效电平等差异较大
3. 基本功能 • 数据缓冲 • 匹配快速的处理器与相对慢速的外设的数据交换 • 缓冲:实现接口双方数据传输的速度匹配 • 信号变换 • 把信号相互转换为适合对方的形式 • 计算机直接处理的信号 • 数字量(0和1组成的信号编码) • 开关量(只有两种状态的信号) • 脉冲量(低脉冲信号,高脉冲信号)
4. 软件编程 • 接口具有可编程性(Programmable) • 命令字(控制字) • 写入接口芯片、选择工作方式、控制数据传输 • 初始化程序 • 选择I/O接口工作方式、设置原始工作状态等 • 驱动程序 • 操纵I/O接口完成具体工作 硬件接口电路需要软件编程配合工作
端口? 6.1.2 I/O端口的编址 • I/O端口=I/O地址,对应I/O接口的寄存器 • 一个接口电路可以具有多个I/O端口,每个端口用来保存和交换不同的信息 • 数据寄存器、状态寄存器和控制寄存器占有的I/O地址常依次被称为数据端口、状态端口和控制端口 • 输入、输出端口可以是同一个I/O地址 如何编排存储器地址和I/O地址?
FFFFF 主存 空间 FFFF I/O 空间 0 1. I/O端口与存储器地址独立编址 • 优点: • I/O端口的地址空间独立 • 控制和地址译码电路相对简单 • 专门的I/O指令使程序清晰易读 • 缺点: • I/O指令没有存储器指令丰富 80x86支持I/O端口独立编址
FFFFF 主存 部分 存储器空间 I/O 部分 00000 2. I/O端口与存储器地址统一编址 • 优点: • 不需要专门的I/O指令 • I/O数据存取与存储器数据存取一样灵活 • 缺点: • I/O端口要占去部分存储器地址空间 • 程序不易阅读(不易分辨访问存储器和访问外设)
3. I/O地址译码 • 与存储器地址译码在原理和方法上完全相同 • I/O地址不太强调连续,多采用部分译码
6.1.3 输入输出指令 • 输入指令(IN:将外设数据传送给CPU内的AL/AX) IN AL,i8 ;字节输入 IN AL,DX ;字节输入 IN AX,i8 ;字输入 IN AX,DX ;字输入 • 输出指令(OUT:将CPU内的AL/AX数据传送给外设) OUT i8,AL ;字节输出 OUT DX,AL ;字节输出 OUT i8,AX ;字输出 OUT DX,AX ;字输出 演示
8088/8086的I/O端口 • 8088只能通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port),即I/O地址 • 8086用于寻址外设端口的地址线为16条,端口最多为216=65536(64K)个,端口号为0000H ~ FFFFH • 每个端口用于传送一个字节的外设数据
1. I/O寻址方式 • 8088/8086的端口有64K个,无需分段,设计有两种寻址方式 • 直接寻址:只用于寻址00H ~ FFH前256个端口,操作数i8表示端口号 • 间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号 • 对大于FFH的端口只能采用间接寻址方式
2. I/O数据传输量 • 如果输入输出一个字节,利用AL寄存器 • 如果输入输出一个字,利用AX寄存器 • 输入一个字,实际上是从连续两个端口输入两个字节,分别送AL(对应低地址端口)和AH(对应高地址端口) • 输出一个字,实际上是将AL(对应低地址端口)和AH(对应高地址端口)两个字节的内容输出给连续两个端口
IN指令实例(从20H端口输入一个字) ;方法1:直接寻址,字量输入 in ax,20h ;方法2:间接寻址,字量输入 mov dx,20h in ax,dx ;方法3:直接寻址,字节量输入 in al,21h mov ah,al in al,20h ;方法4:间接寻址,字节量输入 mov dx,21h in al,dx mov ah,al dec dx in al,dx
OUT指令实例(向300H端口输出一个字节) ;唯一的方法:间接寻址,字节量输出 mov al,bvar ;bvar是字节变量 mov dx,300h out dx,al
例6.1 读取CMOS RAM数据程序 ; 数据段 date db '2000-01-01','$' ; 代码段 mov bx,offset date+2 mov cl,4 mov al,9 ;准备从9号单元获取年代数据 out 70h,al;选择CMOS RAM的9号单元 in al,71h;获取9号单元的内容
例6.1 读取CMOS RAM数据程序(续1) mov ah,al ; 转存AH shr ah,cl ; 处理年代高位 add ah,30h ; 转换为ASCII码 mov [bx],ah ; 存入数据区 add bx,1 ; 指向下位 and al,0fh ; 处理年代低位 add al,30h ; 转换为ASCII码 mov [bx],al ; 存入数据区 add bx,2 ; 指向下位
例6.1 读取CMOS RAM数据程序(续2) mov al,8 ; 从8号单元获取月份数据 out 70h,al in al,71h … mov al,7 ;从7号单元获取日期数据 … mov dx,offset date mov ah,9 int 21h ; 显示日期 2014-11-11 显示结果
6.1.4 数据传送方式 无条件传送 查询传送 中断传送 软件程序控制 直接存储器存取(DMA传送) I/O处理器控制传送 附加硬件控制
6.2 无条件传送 • 在CPU与慢速变化的设备交换数据时,可以认为它们总是处于“准备好”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送 • 适合于简单设备,如LED数码管、按键或按纽等 • 无条件传送的接口和操作均十分简单 • 这种传送有前提:外设必须随时就绪
三态 锁存 三态门和D触发器 • 三态门和以D触发器形成的锁存器是微机接口电路中最常使用的两类逻辑电路 • 三态门的作用:功率放大、导通开关 • 器件共用总线时,一般使用三态电路: • 需要使用总线的时候打开三态门; • 不使用的时候关闭三态门,使之处于高阻 • D触发器的作用:信号保持,导通开关
A F A F A F A F 表示反相或低电平有效 T T T T 1. 三态缓冲器(三态门) 三态门具有单向导通和三态的特性 T为低电平时: 输出为高阻抗(三态) T为高点平时: 输出为输入的反相 输入缓冲
常用集成电路芯片 74LS244 双4位单向缓冲器 • 分成4位的两组 • 每组的控制端连接在一起 • 控制端低电平有效 • 输出与输入同相 每一位都是一个三态门, 每4个三态门的控制端连接在一起
A B T OE* 双向三态缓冲器 双向三态门具有双向导通和三态的特性 OE*=0,导通 T=1 A→B T=0 A←B OE*=1,不导通
Intel 8286 8位双向缓冲器 • 控制端连接在一起,低电平有效 • 可以双向导通 • 输出与输入同相 OE*=0,导通 T=1 A→B T=0 A←B OE*=1,不导通 每一位都是一个双向三态门, 8位具有共同的控制端
常用集成电路芯片 74LS245 8位双向缓冲器 • 控制端连接在一起,低电平有效 • 可以双向导通 • 输出与输入同相 E*=0,导通 DIR=1 A→B DIR=0 A←B E*=1,不导通 74LS245与Intel 8286功能一样
D Q C Q 电平锁存 D Q C Q S 上升沿锁存 D Q C Q 负脉冲的上升沿 带有异步置位清零的 电平控制的锁存器 R 2. 锁存器(D触发器) 电平锁存: 高电平通过,低电平锁存 上升沿锁存: 通常用负脉冲触发锁存 输出锁存
常用集成电路芯片 74LS273 具有异步清零的 TTL上升沿锁存器 每一位都是一个D触发器, 8个D触发器的控制端连接在一起
锁存环节 缓冲环节 三态缓冲锁存器(三态锁存器) A B D Q C T 输入锁存缓冲 输出锁存缓冲
Intel 8282 具有三态输出的 TTL电平锁存器 STB 电平锁存引脚 OE* 输出允许引脚 每一位都是一个三态锁存器, 8个三态锁存器的控制端连在一起
常用集成电路芯片 74LS373 具有三态输出的 TTL电平锁存器 LE 电平锁存引脚 OE* 输出允许引脚 74LS373与Intel 8282功能一样
无条件传送:输入示例 MOV DX, 160H IN AL, DX
10K x 8 +5V 数据总线 74LS244 G1 G2 CS RD 无条件传送:输入实例 MOV DX, 160H IN AL, DX
无条件传送:输出示例 MOV DX, 160H MOV AL, [BX] OUT DX, AL
+5V 300x 8 数据总线 74LS373 LE OE CS WR 无条件传送:输出实例 MOV DX, 160H MOV AL, [BX] OUT DX, AL
译码 A0~A15 +5V 6000H K0 K1 IOR 8位 三态 缓冲器 … IOW K7 +5V LED0 CLK G 8位 反相 驱动器 8位 锁存器 … D0~D7 LED7 无条件传送:输入输出接口 mov dx,6000h ;DX指向数据端口 in al,dx ;从输入端口读开关状态 not al ;反相 out dx,al ;送输出端口显示 call delay ;调子程序延时
6.3 查询传送 • CPU需要先了解(查询)外设的工作状态,然后在外设可以交换信息的情况下(准备好)实现数据输入或输出 • 对多个外设的情况,则CPU按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换 • 查询传送的特点是:工作可靠,适用面宽,但传送效率低 准备好?
输入状态 准备好? Y 数据交换 查询传送的两个环节 ⑴ 查询环节 • 寻址状态口 • 读取状态寄存器的标志位 • 若不就绪就继续查询,直至准备好 ⑵ 传送环节 • 寻址数据口 • 是输入,通过输入指令从数据端口读入数据 • 是输出,通过输出指令向数据端口输出数据 N 超时
8位 三态 缓冲器 8位 锁存器 D0~D7 +5V 5000H 1位 三态 缓冲器 R D0 译码 D Q A0~A15 输入 设备 5001H STB IOR IOR 2. 查询输入接口 mov dx,5001h;DX指向状态端口 status:in al,dx;读状态端口 test al,01h;测试标志位D0 jz status;D0=0,未准备好,继续查询 dec dx ;D0=1,准备好,DX指向数据端口 in al,dx;从数据端口输入数据
8位 锁存器 D0~D7 +5V Q D R 5002H 1位 三态 缓冲器 IOR ACK IOW D7 译码 A0~A15 输出 设备 5001H 3. 查询输出接口 mov dx,5001h;DX指向状态端口 status:in al,dx;读取状态端口的状态数据 test al,80h;测试标志位D7 jnz status;D7=1,未就绪,继续查询 inc dx ;D7=0,就绪,DX指向数据端口 mov al,buf;变量buf送AL out dx,al;将数据输出给数据端口
主程序 中断服务程序 中断请求 对外设 进行处理 断点 继续执行 返回断点 6.4 中断传送 • 外设主动提出请求 • 处理器响应请求 • 执行中断服务程序, 完成一次数据传送 • 中断处理结束, 继续执行原来程序
数据交换的实质性环节 6.4.1 中断工作过程 中断请求 中断响应 中断关闭 断点保护 中断源识别 现场保护 中断服务 恢复现场 中断开放 中断返回 中断流程 中断接口
1. 中断请求和响应 中断流程 • 中断请求 • 外设以硬件信号的形式、向处理器发送有效信号,应保持有效到被响应 • 中断传送过程由外设的中断请求启动,获得处理器认可,才真正进入中断传送过程 • 处理器需要满足一定条件,才能响应中断请求: (1)指令执行结束后才能响应外设的中断请求 (2)处理器处于开放中断的状态 (3)中断请求的同时,没有更高级别的其他请求
2. 中断关闭和开放 中断流程 • 中断开放 • 允许可屏蔽中断被响应 • 中断允许、开中断 • 中断关闭 • 不允许可屏蔽中断被响应 • 中断被屏蔽了、被禁止了,关中断 • 2级(多级)中断响应控制 • 处理器的中断屏蔽位:控制所有可屏蔽中断 • 外设接口电路的中断屏蔽位:灵活控制某个外设 中断屏蔽位用于实现中断的灵活控制
3. 断点保护和中断返回 中断流程 • 断点是指被中断执行的指令位置 • 断点保护 • 保护断点指令所在的存储器地址 • 断点保护一般由处理器自动完成 • 有的处理器还可能自动保护程序状态 • 中断返回 • 处理器返回断点继续执行原来的程序 • 中断服务程序最后的一条中断返回指令实现