1、 第第6章章 输入输入/输出及中断输出及中断 计算机的输入输出系统也称I/O系统,其功能是完成计算机与外部设备之间的信息交换。6.1 输入输入/输出接口输出接口 1I/O接口一般结构及工作过程 接口电路通过系统总线AB、CB和DB与CPU连接;通过数据线D、控制线C和状态线S与外部设备连接。外部设备控制器通过接口电路状态线S,把设备当前的工作状态信息传送给CPU。外部设备控制器通过接口电路控制线C接受CPU发给的控制命令。在控制命令的作用下,外部设备控制器通过数据线与CPU实现数据信息交换。I/O接口电路信息传送示意图 实际上,接口电路与外部设备控制器连接的数据线、控制线和状态线分别对应三个不
2、同的端口地址,即数据端口D、控制端口C、状态端口S。数据端口是CPU对外设进行数据处理的目标端口;控制口、状态口的根据需要各设1根(或1根以上)线即可满足控制信息的要求,这一根线连接在数据总线DB的某一位;CPU是通过地址总线发出目标地址信息选中某一端口的,然后通过数据总线读取状态信息或发出控制命令。2.输入/输出编址及寻址(1)独立编址及寻址 所有外设的信息所在的位置称为端口。将所有端口进行独立编址,即每一端口规定一确定的地址编码。在80 x86系统中,独立编址的I/O端口的地址范围为:0000H0FFFFH。访问独立编址的I/O端口,必须使用输入IN指令或输出OUT指令。【例】已知某字节I
3、/O端口地址为20H,要求将该端口数据的D1位置1,其它位不变。指令段如下:IN AL,20H ;读取端口内容.OR AL,02H ;在AL中设置D1=1,其它位保持不变.OUT 20H,AL ;将AL内容输出给20H端口.(2)与存储器统一编址 I/O端口与储器统一编址是指:在存储器的地址空间中分出一个区域,作为I/O系统中各端口的地址,I/O端口被CPU视为的内存存储单元。一般访问内存的指令都可以访问I/O设备。6.2 微处理器与外设之间数据控制方式微处理器与外设之间数据控制方式 1.无条件传送方式 指在输入或输出信息时,外部设备始终处于准备好的状态,不需要查询外部设备的状态,只要给出IN
4、或OUT指令,即可实现CPU与外部设备进行信息交换。仅适用于一些简单的系统。2.查询传送方式 查询传送方式是指CPU与I/O设备之间交换信息必须满足某种条件,否则CPU处于等待状态,其工作过程完全由执行程序来完成。查询传送方式工作过程如下:(1)由CPU执行输出指令,向控制端口发出控制命令C,将所指定的外设启动;(2)外设处于准备工作状态,CPU不断执行查询程序,从状态端口读取状态字S,检测外设是否已准备就绪。如果没有准备好,就返回上一步,继续读取状态字;(3)外设准备好后,CPU则执行数据传送操作,通过数据端口完成整个输入/输出过程。【例】某外设数据端口地址为2000H,状态端口地址为200
5、2H,控制端口地址为2004H;8位数据线接CPU的D0D7,一位控制线(为“0”表示启动外设工作)接CPU的D0,一位状态线(为“1”表示数据端口准备好)接CPU的D7。查询方式下读取数据端口数据的程序段。程序段如下:MOV AL,00H;设启动外部设备工作代码 D0=0.MOV DX,2004H;控制端口地址送入DX.OUTDX,AL ;启动外设工作.MOV DX,2002H;状态端口地址送入DX.LOP:INAL,DX;读取状态信号.TESTAL,80H;测试状态位D7.JZLOP;未准备好转LOP继续读取,准 备好顺序执行.MOVDX,2000H;数据端口地址送入DX.INAL,DX;
6、读取数据端口数据.3.中断传送方式中断传送方式 查询传送方式工作过程中,CPU处理工作与I/O传送是串行的。该方式主要解决了快速的CPU与速度较慢的外部设备之间进行信息交换的配合问题。但在查询等待期间,CPU不能进行其它操作,使CPU资源不能充分利用,不适合实时系统的要求。为了解决快速的CPU与慢速的外设之间的矛盾、以充分利用CPU资源,产生了中断传送方式。中断传送方式是指:外设可以主动申请CPU为其服务,当输入设备已将数据准备好或输出设备可以接收数据时,即可向CPU发中断请求。CPU响应中断请求后,暂时停止执行当前程序,转去执行为外设进行I/O操作的服务程序,即中断处理子程序。在执行完中断处
7、理程序后,再返回被中断的程序继续执行原来的程序。4.DMA控制方式 在高速成批数据输入输出时,中断请求方式就显得太慢了。为进一步提高数据传输效率,产生了DMA方式,即直接存储器存取。DMA方式是完全由硬件执行,在存储器与外设之间直接建立数据传送通道的I/O传送方式。DMA方式主要特点是:在传送数据时不经过CPU,不使用CPU内部的寄存器,CPU只是暂停控制一个或两个总线工作周期,在这期间把控制权交给由硬件实现的DMA控制器,由DMA控制器来控制总线,在存储器和I/O设备之间直接进行数据传送。6.3.可编程可编程DMA控制器控制器 芯片8237是一种高性能的可编程DMA控制器。所谓可编程芯片,是
8、指可以通过CPU写入芯片内部规定好的控制字或命令字或方式字等,设置芯片实现不同的操作、工作方式及命令形式等功能。1.8237功能 8237具有4个用于连接I/O设备进行数据传输的通道,即一片8237可以连接4台外部设备。每个通道DMA请求可以设置为允许或禁止、不同的优先权。4种传送方式:单字节、数据块、请求和级联传送方式。每个通道一次传送数据最大长度为64KB。8237与外设和CPU之间联络信号友好。2.8237工作方式工作方式 (1)单字节传输方式 单字节传输方式在每次DMA操作传送一个字节数据后,当前字节计数器减1、地址计数器加1或减1,然后8237自动把总线控制权交给CPU,让CPU占用
9、至少一个总线周期,而后立即对DMA请求信号DREQ测试,若又有请求信号,8237重新向CPU发出总线请求,获得总线控制后,再传送下一个字节数据,如此反复循环,直至字节计数器为0,DMA操作结束。(2)数据块传送方式 数据块传送方式是指进入DMA操作后,连续传送数据直到整块数据全部传输完毕。(3)请求传输方式 请求传输方式与数据块传输方式类似,只是在每传输一个字节后,8237都对DMA请求信号DREQ进行测试,如检测到DREQ端变为无效电平,则马上暂停传输,但测试过程仍然进行,当DREQ又变为有效电平时,就在原来的基础上继续进行传输,直到传输结束。3.8237芯片引脚功能芯片引脚功能(见教材(见
10、教材6.3.3)4.内部计数器及寄存器组内部计数器及寄存器组(部分)部分)(1)命令寄存器(8位、片内地址1000B)命令寄存器用于存放命令控制字,它可以设置8237的工作状态。8237的4个DMA通道共用一个命令寄存器。(2)状态寄存器(8位)状态寄存器高4位D7D4的状态,分别表示当前通道3通道0是否有DMA请求。低4位D3D0指出通道3通道0的DMA操作是否结束 (3)方式寄存器(6+2位、片内地址1011B)方式寄存器用于存放工作方式控制字,可通过编程写入,指定8237各通道自身的工作方式。(4)基地址和当前地址寄存器(16位、片内地址见表6-1)(5)基字节和当前字节计数器(16位、
11、片内地址见表6-1)5.DMA应用编程 在使用8237进行DMA之前,必须首先通过CPU对其进行初始化编程。其步骤如下:发出复位命令(片内地址1101B,执行写入命令即可实现复位,使屏蔽寄存器各位置1、命令、状态、请求等寄存器清0)。写工作方式控制字到方式寄存器。写命令字到命令寄存器。根据所选通道,写基地址和基字节数寄存器。设置屏蔽DMA通道并写入屏蔽寄存器。由软件请求DMA操作,则写入请求寄存器,否则由DREQ控制信号启动。6.4总线技术简介总线技术简介 6.4.1 标准总线及分类标准总线及分类 总线是连接计算机各部件的一组公共信号线,是能够在计算机或各部件之间进行有效、高速地传输各种信息的
12、通道。总线可以分为内总线、系统总线和外部总线内总线、系统总线和外部总线。总线标准总线标准:为了使用的方便,对总线必须有详细和明确的规范要求,称为标准总线。6.4.4串行通信总线标准串行通信总线标准 1通用串行总线(通用串行总线(USB)用串行总线(Universal Serial Bus,USB)USB是一种万能插口,可以取代PC机上所有的串、并行连接器插口,用户可以将几乎所有的外设装置包括显示器、键盘、鼠标、调制解调器、可编程控制器、单片机开发装置及数码相机等的插头插入标准的USB插口。2RS-232C总线标准总线标准 RS-232C适用于短距离或带调制解调器的通信场合。若设备之间的通信距离
13、不大于15m时,可以用RS-232C电缆直接连接。对于距离大于15m以上的长距离通信,需要采用调制解调器才能实现。RS-232C传输速率最大为20Kbit/s。RS-232C采用负逻辑,即逻辑1用-5V-15V表示,逻辑0用+5V+15V表示。因此,RS-232C不能和TTL电平直接相连。对于采用正逻辑的串行接口电路,使用RS-232C接口必须进行电平转换。目前,RS-232C与TTL之间电平转换的集成电路很多,最常用的是MAX232。3RS-422/485总线标准总线标准 RS-232C虽然应用广泛,但由于推出较早,数据传输速率慢,通信距离短。为了满足现代通信传输数据速率越来越快和距离越来越远的要求,EIA随后推出了RS-422和RS-485总线标准。RS-422/485最大的传输距离为1200m,最大传输速率为10Mbit/s。在实际应用中,为减少误码率,当通信距离增加时,应适当降低通信速率。例如,当通信距离为120m时,最大通信速率为1Mbit/s;若通信距离为1200m,则最大通信速率为100Kbit/s。