1.11k likes | 1.22k Views
计算机硬件技术基础. hardwarebasic@163.com. 输入输出接口概述. 接口概念: 输入 / 输出 (I/O) 接口是主机与外部设备(简称外设)之间所设置的逻辑控制部件,通过它实现主机与 I/O 设备之间的信息交换。. 思考问题: 微型计算机和外设之间为什么需要接口 ?. 输入输出接口概述. 微型计算机和外设之间为什么需要接口 ?. 一般情况下,存储器可以与总线直接相连,而外部设备却需要通过接口与 CPU 的总线相连,原因是由存储器和外设的特点决定: 存储器: 功能单一 传输方式单一(一次一个字或一个字节) 操作方式单一(读和写)
E N D
计算机硬件技术基础 hardwarebasic@163.com
输入输出接口概述 • 接口概念: • 输入/输出(I/O)接口是主机与外部设备(简称外设)之间所设置的逻辑控制部件,通过它实现主机与I/O设备之间的信息交换。 思考问题: 微型计算机和外设之间为什么需要接口?
输入输出接口概述 微型计算机和外设之间为什么需要接口? • 一般情况下,存储器可以与总线直接相连,而外部设备却需要通过接口与CPU的总线相连,原因是由存储器和外设的特点决定: • 存储器: • 功能单一 • 传输方式单一(一次一个字或一个字节) • 操作方式单一(读和写) • 制造工艺与CPU相似,速度与CPU相匹配
输入输出接口概述 微型计算机和外设之间为什么需要接口? • 外设: • 种类繁多 (机械、机电、电子) • 信号种类不一 (A,D,开关量) • 信号格式不同 (串行,并行) • 同一个时刻CPU通常只和一个外设交换信息 • 工作速度不同,且范围宽。如硬盘和打印机 • 工作时序不匹配,无法和CPU时序取得统一 接口:解决以上差异,协调、匹配外设与主机正常工作的逻辑部件及相应控制软件。
输入输出接口概述 • 接口电路的任务: • 对数据提供缓冲(时间和电气性能上):设置数据的寄存、缓冲逻辑; • 信息格式相容性变换:如串并行的转换;电平转换、数/模或模/数转换等; • 协调时序差异:提供“准备好”“空”“满”等状态信号 • 提供地址译码或设备选择信号: • 提供中断和DMA控制逻辑及管理:
输入输出接口概述 I/O端口的寻址方式 CPU要操作接口,首先要能识别这个接口。 解决方法:通过地址识别。 (1)存储器映像寻址方式 若把系统中的每一个I/O端口都看作一个存储单元,并与存储单元一样统一编址,这样访问存储器的所有指令均可用来访问I/O端口,不用设置专门的I/O指令。 优点:简化了指令集, 对I/O设备的访问更加灵活方便,I/O地址空间可大可小 缺点:占用内存空间,访问速度慢。
输入输出接口概述 I/O端口的寻址方式 (2)I/O单独编址方式 对系统中的输入输出端口地址单独编址,构成一个I/O空间,他们不占用存储空间,而是用专门的IN和OUT指令来访问这种具有独立地址空间的端口。 优点:将输入输出指令和访问存储器的指令明显区分开,使程序清晰,可读性好;I/O指令长度短,执行速度快,不占用内存空间;I/O地址译码电路简单。 缺点:指令系统中需专门的指令,且这些指令的功能没有访问存储器指令强;CPU需提供区分存储器读/写和I/O读写的控制信号。
输入输出接口概述 CPU和I/O设备之间的接口信息 1、数据信息 数字量信息:离散的二进制形式数据,最小单位为“位(b)”,8位为一个字节(B)。 模拟量信息:用模拟电压或模拟电流幅值大小表示的物理量。 开关量:只有两个状态,“开”和“关”,用一位二进制数即可表示。
输入输出接口概述 CPU和I/O设备之间的接口信息 2、状态信息 反映当前外设所处的工作状态,实际中通过状态端口信息表现。例如:输入时:“准备好”(Ready) 输出时:“空”(Empty)、“忙”(Busy) 3、控制信息 由CPU发出的用来控制外设工作的信号。例如:控制输入/输出装置的启动或停止、读或写 问题提出:数据信息、状态信息、控制信息是不同性质的信息,被分别传送,如何实现?
输入输出接口概述 CPU和I/O设备之间的接口信息 • 问题解决:数据信息、状态信息、控制信息使用不同的端口地址。 • 问题结论:都通过数据总线传送,但放在接口的不同寄存器 (I/O端口)中,其中: • 输入输出的数据信息放在数据缓冲器 • 输入的状态信息放在状态寄存器 • 输出的控制信息放在控制寄存器
接口 数据输入寄存器 数据输出寄存器 控制输出寄存器 状态输入寄存器 输入输出接口概述 CPU和I/O设备之间的接口信息 外设通过接口与CPU之间的连接 CPU 外 部 输 入 或 输 出 设 备 DB DB 数据 控制 AB AB 状态 CB CB
输入输出接口概述 CPU和I/O设备之间的接口信息 • 访问接口的过程描述: • CPU先将地址信息发送到地址总线,将确定的控制信息发送到控制总线(打开相应端口); • CPU传输数据信息到数据总线上等待相应端口接收,或者CPU等待接口把指定端口的内容送到数据总线上(收发数据)。 • 注意:地址是端口(寄存器)的地址,而不是接口部件的地址,一个接口部件包含多个端口,即多个地址。
输入输出接口概述 CPU和I/O设备之间的接口信息 • 几点说明: • I/O端口即I/O接口的寄存器,接口中的每个寄存器都有一个端口地址,每个I/O接口都有一组寄存器。 • CPU与外设的信息交流就是CPU与接口寄存器(端口)的交流。 • 数据输入和数据输出寄存器可以使用同一地址;控制输出和状态输入寄存器可以使用同一地址。
CPU和外设之间的数据传送方式 • 程序方式 • 无条件传送方式 • 查询传送方式 • 中断传送方式 • 直接存储器存取(DMA) 控制方式
CPU和外设之间的数据传送方式 无条件传送方式 定义: 在数据传送过程中,输入或输出数据一方不查询、判断对方的状态,进行无条件的数据传送。 CPU能够确信外设准备就绪,就不用查询外设的状态而可以直接进行数据传输。 驱动指示灯、继电器、启动电机等 例如:CPU要输出一个数据到显示器显示,由于显示器是可以根据输入数据而随时改变显示内容的设备,因而CPU就可以直接向其发送数据,而无需查询。
CPU和外设之间的数据传送方式 无条件传送方式 CPU 数据总线 输 入 设 备 三态 缓冲器 数据 地址总线 地址译码器 来自外设 IO/M & RD 无条件传送的输入方式
CPU和外设之间的数据传送方式 无条件传送方式 CPU 数据总线 输 出 设 备 锁存器 数据 地址总线 地址译码器 到外设 CE IO/M & WR 无条件传送的输出方式
CPU和外设之间的数据传送方式 查询传送方式 定义: CPU执行程序不断读取并测试外设的状态,如果外设处于准备好(输入)或空闲(输出)状态,则执行输入或输出指令,进行数据交换,否则等待。
CPU和外设之间的数据传送方式 查询传送方式 完成一次数据传送的过程: 1) CPU从状态端口读取外设的状态字; 2) CPU检测状态字对应位是否满足“就绪”条件; 3) 如不满足,则重复执行1)2)过程,直到条件 满足; 4) 如果条件满足,表明外设就绪,则传送数据, 同时I/O的状态复位。
从状态端口读入状态信息 N 外设准备好否? Y 从数据端口传送一个数据 CPU和外设之间的数据传送方式 实现流程: 在与外设进行传送数据前,CPU先查询外设状态,当外设准备好后,才执行I/O指令,实现数据传送 特点: 1. CPU通过不断查询外设状态,实现与外设的速度匹配 2. CPU的工作效率低
CPU和外设之间的数据传送方式 查询传送方式 两种查询传送方式: 1. 查询式输入 2. 查询式输出 查询式输入方式描述 查询式输入是程序控制下的查询式输入方式,在传送前,CPU必须去查询一下外设的状态,当外设准备好了才传送;若未准备好,CPU则等待。
CPU和外设之间的数据传送方式 RD & CPU DB 数据 锁存器 锁存器 三态缓冲器 (8位) 三态缓冲器 (8位) 输 入 设 备 Di READY(状态信息) 地 址 译 码 器 AB R 三态缓冲器 (1位) 三态缓冲器 (1位) 选通信号 D Q 准备就绪触发器 & +5V IO/M 查询式输入接口电路
CPU和外设之间的数据传送方式 RD & CPU DB 数据 锁存器 锁存器 三态缓冲器 (8位) 三态缓冲器 (8位) 输 入 设 备 Di READY(状态信息) 地 址 译 码 器 AB R 三态缓冲器 (1位) 选通信号 D Q 准备就绪触发器 & +5V IO/M 查询式输入接口电路
CPU和外设之间的数据传送方式 查询式输入的过程: 1. 输入设备准备好后,发选通信号; 2. 数据进入锁存器锁存,并使D触发器置1,从而使三态缓冲器输出状态信号; 3. CPU从状态端口读入状态字; 4. CPU检测状态位,如果条件满足; 5. CPU从数据端口读入数据; 6. 清状态字。
D7 D0 CPU和外设之间的数据传送方式 查询式输入时的数据和状态信息: 数据信息 数据端口(8位) (输入) 8位 状态信息 状态端口(1位) (输入) D7 “READY”(1位)
CPU和外设之间的数据传送方式 查询式输入的查询程序: LOOP1: IN AL,STATUS_PORT ;读入状态值 TEST AL,80H ;READY=1? JZ LOOP1 ;未准备好?循环 IN AL,DATA_PORT ;是,输入数据 讨论:分析查询程序,熟悉汇编语言在接口电路中的应用。
例1查询方式输入 假设 外设的状态端口为21C H, 其中D4=1时,表示外设数据准备好 外设的数据端口为218 H。 实现从外设读入50H个字节到内存缓冲区buffer中。 地址线 C P U 输入 外 备 地址 译码 21CH端口 状态端口 数据线 数据 缓冲 218H端口 数据端口 控制线 控制 电路 CPU和外设之间的数据传送方式
编程从外设读入50H个字节到内存缓冲区buffer中 从21CH状态端口 读入外设状态信息 N Y Y D4=1, 外设准备好否? 从218H数据端口 读入一个字节数据 N 50H个数据传送结束? CPU和外设之间的数据传送方式
查询方式输入程序段: • 、、、 • MOV AX, SEG buffer ;取缓冲区首地址 • MOV DS, AX • LEA DI, buffer • MOV CX, 50H ;传送个数 • next: MOV DX, 21CH • ask:IN AL, DX ;从状态端口读入状态信息 • TEST AL, 0001 0000B ;检测D4位 • JZ ask ;D4=0,继续查询 • MOV DX, 218H • IN AL, DX ;从数据端口读入数据 • MOV [DI], AL ;送缓冲区 • INC DI ;修改缓冲区指针 • LOOP next ;传送下一个 • 、、、 CPU和外设之间的数据传送方式
数据 锁存器 CPU和外设之间的数据传送方式 查询式输出接口电路 DB CPU 数据 输 出 设 备 WR 选通信号 & 地 址 译 码 器 ACK AB R & +5V Q D IO/M 忙触发器 RD 状态缓冲器 (1位) BUSY 状态忙置1
CPU和外设之间的数据传送方式 查询式输出的过程: 1. 通过M/IO,WR信号将数据写入锁存器,并同时将状态触发器置1,进而使状态位BUSY置1,防止CPU再次传送数据; 2. 外设读取数据; 3. 外设向接口发ACK信号,将状态位BUSY清零。
D7 D0 CPU和外设之间的数据传送方式 查询式输出时的数据和状态信息: 数据信息 数据端口(8位) (输出) 8位 状态信息 状态端口(1位) (输出) D7 “READY”(1位)
CPU和外设之间的数据传送方式 查询式输出的查询程序: LOOP2: IN AL,STATUS_PORT ;读状态信息 TEST AL,80H ;检查BUSY位 JNZ LOOP2 ;BUSY=0? MOV AL,STORE ;为零,取数据 OUT DATA_PORT,AL ;数据端口输出 问题:结合汇编语言,分析程序是如何实现查询输出功能的?
例2查询方式输出 假设 外设的状态端口为21C H, 其中D0 = 0时,表示外设准备好 外设的数据端口为219 H。 编程将缓冲区buffer的80H个字节输出到外设。 地址线 C P U 输出 外 设 地址 译码 21CH端口 状态端口 数据线 数据 缓冲 219H端口 数据端口 控制线 控制 电路 CPU和外设之间的数据传送方式
编程将缓冲区buffer的80H个字节输出到外设 从21CH状态端口 读入外设状态信息 N Y Y D0=0, 外设准备好否? 将一字节数据送至 219H数据端口 N 80H个数据传送结束? CPU和外设之间的数据传送方式
查询方式输出程序段: • 、、、 • MOV AX, SEG buffer ;取缓冲区首地址 • MOV DS, AX • LEA SI, buffer • MOV CX, 80H ;传送个数 • next: MOV DX, 21CH • ask:IN AL, DX;从状态端口读入状态信息 • TEST AL, 0000 0001B ;检测D0位 • JNZ ask;D0≠0,继续查询 • MOV AL, [SI] ;从缓冲区取数 • MOV DX, 219H • OUT DX, AL ;从数据端口输出数据 • INC SI ;修改缓冲区指针 • LOOP next ;输出下一个 • 、、、 CPU和外设之间的数据传送方式
CPU和外设之间的数据传送方式 中断方式 工作原理: 当外设准备好数据或可以接收数据时,就通过接口向CPU发出中断请求信号,CPU在执行完当前的一条指令后,检测是否有中断信号,如果有中断信号,则CPU转向执行中断服务程序,执行完毕后CPU返回原来的程序继续执行。
CPU和外设之间的数据传送方式 中断传送方式输入接口电路 CPU 数据 锁存器 数据 锁存器 DB 数据 三态 缓冲器 三态 缓冲器 输 入 设 备 RD & & IO/M AB 地址 译码器 中断请求 触发器 RDY 状态信号 D 1 1 Q INT +5V
CPU和外设之间的数据传送方式 中断方式 中断传送方式的过程: 1. 输入设备准备就绪,发出就绪状态信号,数据暂存在锁存器中,同时中断请求触发器置“1”,向CPU发出中断请求信号; 2. CPU响应中断,执行中断服务程序,从数据端口输入数据,同时将中断请求触发器置“0”,撤销中断请求; 3. CPU返回被中断的程序。
中断方式下 CPU执行程序流程 外 设 发申请 中断服务程序 发申请 中断服务程序 CPU和外设之间的数据传送方式
CPU和外设之间的数据传送方式 • 中断传送方式的特点: • CPU和外设大部分时间处在并行工作状态, • 只在CPU响应外设的中断申请后,进入数据传送的过程 • 2. 中断传送方式提高了CPU的效率
CPU和外设之间的数据传送方式 三、查询传送方式VS中断传送方式 查询方式 中断方式 CPU不主动查询外设,只执行自己的程序,当外设准备好需要传送数据时,提出申请,若CPU准于请求,放下正在执行的程序,去传送外设的数据。
CPU和外设之间的数据传送方式 直接存储器存取(DMA)控制方式 DMA传送方式的提出 DMA(Direct Memory Access)直接存储器存取控制方式下,I/O设备是和存储器直接交换信息,不需要CPU介入,外设与存储器间的数据传输是在硬件的作用下完成的。 优点:传输速度大幅提高。
主存 I/O设备 CPU 改进 主存 I/O设备 总线 CPU和外设之间的数据传送方式 直接存储器存取(DMA)控制方式 使用直接存储器传送方式(DMA),实现数据块操作。 DMA方式下,外设利用专门的接口电路直接和存贮器进行高速数据传送,而不经过CPU。数据的传输速度基本上决定于外设和存储器的速度。
CPU和外设之间的数据传送方式 实现方法: 1. 由专用接口芯片DMA控制器(称DMAC) 控制传送过程, 2. 当外设需传送数据时,通过DMAC向CPU发出总线请求; 3. CPU发出总线响应信号,释放总线; 4. DMAC接管总线,控制外设、内存之间直接数据传送. DMA传送方式的特点 1. 外设和内存之间,直接进行数据传送,不通过CPU, 传送效率高。 适用于在内存与高速外设、 或两个高速外设之间进行大批量数据传送。 2. 电路结构复杂,硬件开销较大。
DMA 传送方式过程 CPU 内存 总线 请求 总线 响应 外设 DMAC CPU和外设之间的数据传送方式
中断系统 • 什么是中断 • 中断源 • 中断分类 • 中断类型号 • 中断优先权 • 中断服务程序 • 断点和中断现场 • 8086/8088 CPU响应中断的过程 • 8086/8088 CPU如何获取中断类型号
什么是中断 中断系统 • 在CPU正常运行程序时,由于内部或外部某个非预料事件的发生,使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序,然后再返回被中断了的程序,继续执行。这个过程就是中断。
中断源 中断系统 • 引起中断的因素很多,将发出中断申请的外设或内部原因,称为中断源。例如:CPU指令执行产生的异常(如被零除)、停电等故障等。
中断的分类 中断系统 内中断(软中断) 指CPU执行某些特殊操作或由INT指令引起的中断 • ①被零除操作或OF=1时执行INTO指令引起 • ② 使用DEBUG中的单步或断点设置操作引起 • ③ 执行INT n 指令引起 按中断源的不同,中断分为内部中断和外部中断。