资源描述
第6章 输入输出接口技术,本章重点,I/O接口的基本概念 输入输出IN/OUT指令 程序查询输入输出方式 中断输入输出方式 DMA输入输出方式 I/O端口地址分配 I/O端口地址译码,计算机系统的I/O接口,为什么输入输出设备不能像存储器一样直接连在总线上?,6.1 接口技术基本概念,外设接口(I/O接口)的必要性 外设的种类繁多,而存储器的种类单一,必须经过接口电路连接到总线上。 外设的速度较慢,而存储器的速度较快,必须经过接口电路进行数据的缓冲和锁存。 外设的信号多种多样,必须经过接口电路转换成处理器可以识别的信号。,I/O接口的作用相当与一个转换器,它可以保证外围设备用计算机所要求的形式发送或接受信息。,I/O接口的功能,进行译码选址在具有多台外设的系统中,外设接口必须能够进行地址译码,确定本设备是否被选中 转换信息格式接口电路完成串并转换、并串转换 协调定时差异为了缓解主机与外设之间的速度差异,对传输的数据或地址加以缓冲或锁存 提供联络信号接口电路向主机提供外部设备“就绪”、“忙”,数据缓冲器“满”、“空”等状态信号 中断管理功能接口电路有产生并管理中断请求和DMA请求的能力,以满足实时系统以及大批量数据传送的能力 可编程对一些通用的接口电路,应该具有通过软件编程控制外设工作方式的能力 错误检测功能对通信过程中的传输错误或者溢出错误能够进行实时检测,I/O接口的组成,I/O接口与I/O端口,端口:CPU能够直接访问的I/O接口内部的寄存器称为端口,端口号:每一个端口的访问地址,I/O接口,CPU与I/O接口传递的信息,数据信息、状态信息和控制信息都是通过数据总线传送的。 CPU写入控制端口的数据是CPU对外设的控制信息; CPU读状态端口的数据是外设的状态信息; CPU写数据端口的数据是CPU送给外设的数据 CPU读数据端口的数据是外设送给CPU的数据,I/O端口编址方式,为了便于CPU访问端口,每一个端口都有一个地址,系统有两种方式为端口分配地址: I/O端口和存储器统一编址 统一编址就是从存储器空间中划分出一部分给I/O设备,把I/O端口当作存储单元来访问。 例如:设CPU有16根地址线,存储空间为64K,规定地址总线的最高位A151访问I/O端口,A150访问存储器,则032K为存储器地址空间,32K64K为I/O端口地址空间。 统一编址的优点是不需要专门的I/O指令,凡对存储器有效的访问指令都可以访问I/O端口,访问形式灵活。缺点是端口占用了一定的存储空间,存储器空间变小。,6.3 I/O端口编址方式及地址译码,统一编址方式,I/O端口和存储器独立编址 独立编址就是I/O端口地址补占用存储器地址空间,两者的地址空间完全独立,都从0开始编址。独立编址需要专门的I/O端口访问指令。,8086采用存储器与I/O端口独立编址方式,即内存单元和I/O端口从0单元开始编址。当引脚M/IO为高电平时访问存储器,当M/IO为低电平时访问I/O端口。 8086有专门的访问I/O端口的指令(IN和OUT),当8086在执行访问I/O端口的输入(IN)指令和输出(OUT)指令时,就会使M/IO信号处于低电平,结合RD和WR信号产生出对相应的I/O端口的读/写操作。,独立编址的优点是I/O端口不占用内存空间;缺点是I/O指令功能单一,类型少,使输入输出操作受到限制。,独立编址方式,IN和OUT指令 8086系统中可以有64K个8位端口,相邻编号的两个端口可以组合成为一个16的端口。 执行输入(IN)输出(OUT)指令时,CPU可以从一个8位端口读入(写出)一个字节到AL中,或者从一个16位端口读入(写出)一个字到AX中。,1. IN指令(输入指令) 格式:IN A,PORT ;A可以是AL或者是AX 功能: AL(PORT) 或AX(PORT +1)_(PORT),(1)直接输入指令 端口号为0255,用一个立即数表示(00HFFH),IN AL,50H ;将50H端口的字节读入AL IN AX,70H ;分别将70H、71H端口的内容读入AL、AH,(2)间接输入指令 当端口号大于FFH时,这些端口号不能用在指令中用立即数的形式给出,端口号放在DX寄存器中。,MOV DX,500H ;端口号送DX IN AL,DX ;将DX所指端口内容送AL,OUT DX,AL ;将AL中的字节输出到DX所指的端口中,2. OUT指令(输出指令) 格式:OUT PORT,A ;A可以是AL或者是AX 功能: AL(PORT) 或AX(PORT +1)_(PORT),(1)直接输出指令,OUT 44H,AL ;将AL中的内容输出到44H端口 OUT 80H,AX ;将AL、AH中的内容输出到80H、81H端口,(2)间接输出指令,I/O端口地址译码,端口地址 27CH27FH,固定式译码方式,门电路译码,跳线在J1时,端口地址27CH27FH,跳线在J2时,端口地址37CH37FH,可选式译码方式,译码器电路译码,340H,341H,342H,343H,344H,345H,346H,347H,全地址译码,000-01FH,040-05FH,060-07FH,080-09FH,0A0-0BFH,0C0-0DFH,0E0-0FFH,020-03FH,部分地址译码,CPU与外部设备的定时方式 输入过程: 1)CPU把一个地址值放在地址总线上,选择某一输入设备; 2)CPU等候输入设备的数据成为就绪; 3)CPU从数据总线读入数据,并放在一个相应的寄存器中。 输出过程: 1)CPU把一个地址值放在地址总线上,选择输出设备; 2)CPU等候输出设备的状态成为就绪; 3)CPU把数据放在数据总线上,输出设备把数据取走。,问题的关键在于:输入时究竟什么时候输入设备数据成为就绪? 输出时什么时候输出设备的状态才成为就绪。很显然由于输入输出设备本身的速度差异很大,对于不同速度的外围设备,需要有不同的定时方式。,6.3 CPU与外设数据传递方式,CPU与外围设备的定时有三种情况: 简单外围设备: CPU和这类设备的数据交换不需要定时,CPU认为它们始终处于就绪状态,例如:机械开关,CPU认为输入设备的数据一定就绪,因为只要根据开关的闭/合就可以输入0/1信号;例如:显示二极管,CPU认为输出设备的状态一定就绪,因为只要CPU输出0/1信号,显示二级就可以灭/亮。 CPU和这类设备的数据交换一般采用无条件传送方式。 慢速外围设备 由于这类设备的速度和CPU的速度不在一个数量级上,如打印机;或由于设备本身是在不规则时间间隔下操作的,如键盘,因此CPU与这类设备之间的通常采用异步定时方式。,输入:CPU首先查询外部设备的数据是否就绪,如果就绪则通过数据总线输入数据,否则循环等待直到数据就绪;或者由外部设备在数据就绪时通知CPU,CPU通过数据总线输入数据。,输出:CPU首先查询外部设备的状态是否就绪,如果就绪则通过数据总线输出数据,否则循环等待直到外设就绪;或者由外部设备在状态就绪时通知CPU,CPU通过数据总线输出数据。,CPU和这类设备的数据交换一般采用程序查询方式或者中断方式。,高速的外围设备 由于这类外设是以相等的时间间隔操作的,则CPU可以用等间隔的速率执行输入/输出指令。因此CPU与这类设备之间的通常采用同步定时方式。 例如外设外设的速度是2400B/s,则CPU每隔1/2400执行一次输入指令即可。 CPU和这类设备的数据交换一般采用DMA方式或通道方式。,无条件方式 CPU认为外设的输入数据始终有效,随时可以输入;或外设的状态始终就绪,随时可以输出。,程序查询方式,CPU 和 I/O 串行工作,踏步等待,CPU通过执行程序不断读取并测试外设的状态,如果外设处于就绪状态,则CPU执行输入指令或输出指令与外设交换数据。否则CPU必须循环等待。,程序查询方式的接口,1)设备选择电路 2)数据缓冲寄存器 3)设备状态标志,CPU通过执行程序不断读取并测试外设的状态,如果外设处于就绪状态,则CPU执行输入指令(in)或输出指令(out)与外设交换数据。否则CPU循环等待。,测 试 指 令,转 移 指 令,传 送 指 令,设I/O接口的数据寄存器端口地址为62H(图中未给出),输入的字符存放在BX所指的内存缓冲区中,则通过查询传送输入数据的程序如下: INPUT: IN AL,61H ;读状态寄存器 TEST AL,01H ;测试最低位 JZ INPUT ;继续读入 IN AL,62H ;输入数据 MOV BX,AL ;存放数据,查询式输入接口电路,查询式输出接口电路,中断传送方式 在查询方式中,不能有效的利用CPU。为了提高CPU的利用率,于是产生了中断处理技术。在中断系统中,CPU与外设交换数据时,CPU不需要查询外部设备的状态,当外设没有做好传送数据的准备时, CPU可以执行其他操作,当外设准备好后,向CPU发送中断请求,CPU暂停当前的程序,执行中断程序来完成数据传送,接着返回原来的程序继续执行。,中断的概念 在CPU正常运行程序时,由于内部或外部某个非预料事件的发生,使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序,然后再返回被中断了的程序,继续执行。这个过程就是中断。中断适合随机出现的请求,例如输入输出设备的请求。,I/O中断的产生以打印机为例,CPU 与打印机并行工作,直接存储器读取(DMA)方式 为了进一步提高CPU的利用率,人们提出了直接内存访文技术,即Direct Memory Access,简称DMA技术。 在DMA方式下,外部设备利用专门的接口电路直接和内存进行高速的数据交换,不需要CPU的干预。这样在进行数据传输时就不需要像中断那样要进行保护断点之类的一系列操作,使CPU的利用率得到大幅度的提高。 利用DMA方式进行数据传输时,当然要利用系统中的数据总线,地址总线和控制总线,但是系统的总线是由CPU管理控制的。因此用DMA方式进行数据传输的时候,接口电路需要向CPU发送总线请求,申请CPU让出总线,即把总线控制权交给控制DMA传输的接口电路。 这种能够控制系统总线完成外设与内存之间大量数据交换的接口电路就是DMA控制器。,
展开阅读全文