第6章输入输出接口技术将外部设备同微型计算机连接起来的电路称为外设接口电路,简称外设接口。微机系统中,各种输入/输出设备通过接口与系统相连,并在接口的支持下实现各种方式的数据传送。退出6.1输入输出接口基础6.2中断和中断系统6.3串行接口6.4并行接口6.1输入输出接口基础6.1.l输入输出接口的基本功能输入输出接口电路位于系统总线与外设之间,用它来完成系统总线与外设之间的数据传输,完成系统对外设的控制与响应。准确地说,接口是总线与I/O设备之间所设置的逻辑控制部件,通过它实现主机与I/O设备之间的信息交换。1.I/O接口电路的基本功能(1)寻址功能。(2)数据锁存与缓冲。(3)对外设的监测与控制。(4)信息变换。(5)可编程芯片。2.主机与外设的主要传送的信息主机与外设通过接口传送信息,按所传送信息的内容和功能可分为数据、状态和控制三类,它们各自通过接口内不同的端口寄存器传送而相互区分开来。(1)数据信息。数据信息主要有数字量、模拟量和开关量。数字量是以二进制形式表示的数或以ASCⅡ码表示的数或字符。(2)状态信息。状态信息表示接口与外设在I/O操作过程中的状态,是主机与外设之间交换数据时的联络信息。如外部设备是否忙。输入的数据是否准备好。输出缓冲寄存器内有无数据等等。(3)控制信息。控制信息是主机向接口和外设发出的控制命令,控制信息向外设传送外设的工作方式、运行参数和控制命令(如开、停)等;一般也用一个二进位来表示一种控制,控制位的多少也因外设而异。6.l.2输入输出接口的基本结构接口电路可以很简单,简单得可以由几个甚至一个三态门构成;也有很复杂的如以超大规模集成电路芯片(VLSI)为主构成的接口电路,有的其复杂程度不亚于CPU。6.1.3I/O接口编址为了区分每一个I/O端口,必须对每个I/O端口进行统一编址。对I/O端口编址通常有两种方式:存储器映像编址方式和I/O独立编址方式。1.存储器映像I/O编址这种编址方式,把I/O端口和存储器的存储单元一样看待,统一编址。在可寻址的存储空间中,划出一部分作为I/O端口地址,其余作为内存单元,I/O端口和内存单元有不同的地址编号。2.I/O端口独立编址方式I/O端口和内存单元各自独立编址,CPU访问I/O端口须用专门的输入/输出指令。PC系列机的输入和输出指令中,直接寻址I/O端口时用一个字节的地址码,故可寻址28=256个端口;寄存器间接寻址I/O端口用DX,有16位,可寻址216=65536个端口。但微机一般用低10位地址来表示I/O端口,因此系统中可安排的I/O端口最多为1024个(210)。6.1.4I/O数据传输方式主机与外设之间的数据传输方式不仅取决于接口的硬件结构,还受软件控制。软硬结合控制I/O数据传输,其方式大致有五种。1.无条件传输无条件传输方式又称同步传送方式。使用这种方式时外设总是处于准备好状态,CPU无需查询其状态而只根据需要在程序中安排输入/输出指令执行相应操作。2.程序查询传输CPU与接口之间有一个应答过程,所以又称异步传送。大多数外设数据传送、处理的速度较慢,跟不上CPU的高速运行,为了使传送可靠,程序首先要测试外设的状态,当状态符合规定的条件(比如输入设备的下一个输入数据准备好了),就进行输入操作,否则就踏步等待或转入其它程序段。3.中断传输在中断传送方式中各个外设和主机可以并行工作,进行各自的输入或输出操作。当某台外设完成了自身的输入或输出操作(即完成了下一个数据传送的准备)时,便向CPU申请中断,CPU收到中断请求信号后,可暂停正在运行的程序,转去执行为该外设服务的中断服务子程序,完成主机与外设间的数据交换,数据传送完毕仍返回原来被中断的主程序继续执行。4.DMA(直接存储器存取)方式(1)基本概念直接存储器存取(DirectMemoryAccess,DMA)方式是一种完全领先硬件在内存与I/O设备之间进行直接的数据传送,在传送期间不需CPU的程序干预。(2)DMA传送方式为了避免DMA传送与CPU访问内存的冲突,一般采用3种传送方法:停止CPU访问内存;周期挪用和DMA与CPU交替访问内存。(3)DMA控制器的组成DMA控制器基本上是在中断接口的基础上加上用于实现DMA传送的逻辑部件组成的。(4)DMA控制器与外设的连接方式①单通道DMA控制器②选择型DMA控制器③多路型DMA控制器(5)DMA数据传送过程DMA数据传送过程分为3个阶段:传送前预处理、数据传送和传送后处理。在传送前预处理和传送后处理阶段,CPU完成了初始化、校验和判断等工作,而在真正数据传送时,CPU不干预。5.I/O处理机方式I/O处理机方式把所有输入输出操作以及与之有关的信息传送、控制等功能全都从CPU那里独立出来、接管过来。I/O处理机有自己的指令系统,能独立地执行程序,对输入输出过程进行管理;能完成代码转换、格式变换、数据块的检错纠错、字或字节的装配和拆卸等各种运算和操作;能对外部设备进行控制,检测并分析外设及其控制器的状态,作出相应处理;能对输入输出系统出现的各种情况做出反应和处理;等等。6.2中断和中断系统6.2.1中断概述所谓中断,就是在程序运行过程中,由于某种紧急事件的出现而中止当前程序的运行,从而将程序的执行流程转向紧急事件的处理程序,待处理结束后再继续原程序运行。1.中断源中断是一个过程,一般是由微处理器外部硬件或内部软件引起的。引起中断的事件或发出中断请求的来源称为中断源。中断源常有以下几种:(1)外部设备请求中断。(2)故障强迫中断。(3)实时时钟请求中断。(4)数据通道中断。(5)程序自愿中断。2.中断系统功能中断系统是计算机不可缺少的组成部分,能实现如下的功能:①并行操作。②实时处理。③故障处理。④基本功能调用。6.2.2中断处理过程整个中断处理过程由中断源提出中断请求,然后CPU响应中断(首先关中断而暂不响应新的中断请求、保存断点、查找中断源等),再转去执行相应的中断服务子程序(先保护主程序的现场信息,再执行中断服务),中断服务子程序执行完毕恢复主程序的现场、开中断(即允许响应新的中断请求)、返回原来主程序的断点处继续运行主程序。当然,在中断服务过程中也可以开中断(可以再响应新的中断请求),以实现中断的嵌套。6.2.3中断管理8086系统的中断源可多达256个。如何对这些中断源实施有效的管理?这集中体现在中断优先级、中断屏蔽和中断矢量等诸方面。1.中断优先权排队当多个中断源同时请求中断时,CPU必须确定先为哪个中断源服务,以及对所有中断请求对象的服务的次序。2.中断屏蔽对外部中断的屏蔽,CPU设置了INTR引脚,该引脚称可屏蔽中断请求信号输入引脚。3.中断矢量表中断矢量表是寻找中断服务子程序入口地址的有效方法。中断矢量表就是中断服务子程序入口地址表。不同的微处理器的具体处理方法稍有不同。8086系统每个中断矢量包含段内偏移量和段基址,共32位(四个字节),所有中断矢量安排在内存储器的前1024个单元(即0~3FFH)区域中,共可按排256个。4.中断嵌套所谓嵌套,是指在本次中断服务过程中,允许响应新的中断请求。因此可以由现行中断服务程序转入新的中断服务程序,新的服务程序执行完后再返回原来的中断服务程序。6.2.4微型机的基本中断系统1.中断源类型基本的PC机有一个简单灵活而强有力的中断系统,可以处理256种不同的中断。每一个中断对应一个类型码(即中断识别码),256种中断对应的中断类型码为0~255。256种中断可分为两大类:外部中断和内部中断。外部中断由外部硬件产生,因此外部中断又称硬件中断。硬件中断通过NMI引脚向CPU申请的中断称为非屏蔽中断,通过INTR引脚向CPU申请的中断是可屏蔽中断。内部中断是由程序中特定的指令操作码根据标志寄存器中的标志状态而在CPU执行指令过程中产生的非屏蔽中断。内部中断又泛称软件中断,它的产生与外部硬件电路无关。内部中断包括除法出错中断、溢出中断、指令中断和单步中断。(1)内部微处理器中断内部微处理器中断一般是指CPU执行某些指令时出现错误而引发的中断。(2)软中断软中断主要用来实现ROMBIOS中断,DOS中断和其他由用户定义的中断。(3)非屏蔽中断NMI非屏蔽中断常常用来处理机器内部硬件出错,如掉电、存储器错误或总线极性错误等紧急事态。(4)可屏蔽中断INTR可屏蔽中断源主要指外围设备。当外围设备要求和CPU交换信息时,通过接口向CPU提出中断请求IRQi。这些请求信号实际上先送至接口中的中断控制器,经中断控制器判优后,将当前优先级最高的请求加在CPU的INTR端上。2.中断矢量与中断矢量表每个中断源在内存中都对应有一个中断服务子程序,供CPU响应中断后执行。各个中断服务子程序可在内存中按需要浮动放置,其入口地址集中在一起做成表格放在内存的0~3FFH(共1024个存储单元)区域中。每个服务程序入口地址有4个字节,占4个存储单元,前两个字节为中断服务子程序入口地址中的偏移量,后两个字节为入口地址中的段地址,都是低字节在前,高字节在后。中断服务子程序的入口地址就是中断矢量。1024个存储单元可以存放256个中断矢量,这些连续依次存放的中断矢量就叫中断矢量表。中断矢量表中的前5个是专用中断,其中除了非屏蔽中断外,其它几个中断都是软件中断。类型5到类型31(1FH)的27个中断是保留给系统使用的,用户一般不应对这些中断自行定义。3.中断优先权级别PC系列机规定上述各类中断的优先权级别从高到低的顺序为:除法出错、INTO、INTn、NMI、INTR、单步中断。4.高档微处理器中断(1)中断和异常80386/80486及Pentium等高档微处理器不仅具有8086所有中断类型,而且大大丰富了内部中断的功能,把许多执行过程中产生的错误情况也纳入了中断处理的范围,这类中断称为异常中断,简称异常。失效:若某条指令在启动之后,真正执行之前被检测到异常,产生异常中断,而且在中断服务完成后返回该指令,重新启动并执行完成,这类异常就是失效。陷阱:产生陷阱的指令在执行后才被报告,且其中断服务程序完成后返回到主程序中的下一条指令。例如用户自定义的中断指令INTn就属于此类型。中止:该类异常发生后无法确定造成异常指令的实际位置,例如硬件错误或系统表格中的错误值造成的异常。在此情况下原来的程序已无法执行,因此中断服务程序往往重新启动操作系统并重建系统表格。(2)中断描述符表为了管理各种中断,80386/80486和Pentium等高档微处理器都设立了一个中断描述符表IDT(InterruptDescriptorTable)。表中最多可包含256个描述符项,对应256个中断或异常。描述符中包含了各个中断服务程序入口地址的信息。6.2.51.8259A功能8259A芯片是PC系列机普遍使用的基本的可编程中断控制器。其主要功能如下:①具有8级优先权控制,由9片8259A级连可扩展至64级主从式中断优先级控制;②对每一级中断都可以屏蔽禁止或开放允许;③当中断被CPU响应时,8259A可提供相应的中断类型码,从而能使程序流程迅速准确地转至中断服务子程序;④可通过编程来选择多种不同的工作方式。2.8259A结构框图8259A有8条输入中断请求线IR0~IR7,接收和处理由IR0~IR7引入的中断请求。3.8259A工作原理4.8259A引脚及其功能8259A是28引脚双列直插式封装。6.3串行接口6.3.1串行接口概述1.并行与串行通信计算机与外设之间、以及计算机与计算机之间信息的交换称为“通信”。通信有并行通信和串行通信两种方式。并行通讯是指数据的各位同时进行传送,串行通信的数据是一位一位地按时间先后顺序传送的。2.传输速率二进制数序列由发送端发送到传输线上,在传输线上以数字信号波形传输,在接收端由接收器从传输线上接收。(1)发送时钟和接收时钟异步通信是按字符传送的,每个字符以起始位开始,接收设备在收到起始位信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。同步通信的接收设备首先要搜索同步字符,在得到同步字