我们知道,外围设备种类繁多,它们的功能不同,工作速度不一,与主机配合的要求也不相同,CPU采用分时控制,每个外围设备只在规定的时间片内得到服务。为了使各个外围设备在CPU控制下成为一个有机的整体,协调的、高效率的、可靠的工作,就要规定一个CPU控制(或称调度)各个外围设备的控制策略,或者叫控制方式。 自动控制网www.eadianqi.com版权所有 通常采用的有三种I/O控制方式:程序控制方式、中断控制方式和直接存储器存取方式。在进行微机控制系统设计时,可按不同要求来选择各外围设备的控制方式。 本文来自www.eadianqi.com 1、程序控制方式 自动控制网www.eadianqi.com版权所有 程序控制I/O方式,是指CPU和外围设备之间的信息传送,是在程序控制下进行的。它又可分为无条件I/O方式和查询式I/O方式。 本文来自www.eadianqi.com (1)无条件I/O方式:所谓无条件I/O方式是指不必查询外围设备的状态即可进行信息传送的I/O方式。即在此种方式下,外围设备总是处于就绪状态。如开关、LED显示器等。一般它仅适用于一些简单外围设备的操作。 自动控制网www.eadianqi.com版权所有 无条件传送方式的工作原理如图1所示。CPU和外围设备之间的接口电路通常采用输入缓冲器和输出锁存器。由地址总线和M/信号端经端口译码器译出所选中的I/O端口,用、信号决定数据流向。 自动控制网www.eadianqi.com版权所有
自动控制网www.eadianqi.com版权所有
图1 无条件传送方式I/O接口电路原理图 自动控制网www.eadianqi.com版权所有
外围设备提供的数据自输入缓冲器接入。当CPU执行输入指令时,读信号有效,选择信号M/处于低电平,因而按端口地址译码器所选中的三态输入缓冲器被选通,使已准备好的输入数据经过数据总线读入CPU。CPU向外设输出数据时,由于外设的速度通常比CPU的速度慢得多,因此输出端口需要加锁存器,CPU可快速的将数据送入锁存器锁存,即去处理别的任务,在锁存器锁存的数据可供较慢速的外围设备使用,这样既提高了CPU的工作效率,又能与较慢速外围设备动作相适应。CPU执行输出指令时,M/和信号有效,CPU输出的数据送入按端口译码器所选中的输出锁存器中保存,直到该数据被外围设备取去,CPU又可送入新的一组数据,显然第二次存入数据时,需确定该输出锁存器是空的。 自动控制网www.eadianqi.com版权所有
(2)查询式I/O方式 自动控制网www.eadianqi.com版权所有
查询式I/O方式,也称为条件传送方式。按查询式传送,CPU和外围设备的I/O接口除需设置数据端口外,还要有状态端口。查询式I/O接口电路原理框图如图2所示。 自动控制网www.eadianqi.com版权所有
自动控制网www.eadianqi.com版权所有 图2 查询式I/O方式接口电路原理框图 本文来自www.eadianqi.com 状态端口的指定位表明外围设备的状态,通常只是“0”或“1”的两状态开关量。交换信息时,CPU通过执行程序不断读取并测试外围设备的状态,如果外围设备处于准备好的状态(输入时)或者空闲状态(输出时),则CPU执行输入指令或输出指令,与外围设备交换信息,否则,CPU要等待。当一个微机系统中有多个外围设备采用查询式I/O方式交换信息时,CPU应采用分时控制方式,逐一查询,逐一服务,其工作原理如下:每个外围设备提供一个或多个状态信息,CPU逐次读入并测试各个外围设备的状态信息,若该外围设备请求服务(请求交换信息),则为之服务,然后清除该状态信息。否则,跳过,查询下一个外围设备的状态。各外围设备查询完一遍后,再返回从头查询起,直到发出停止命令为止。 自动控制网www.eadianqi.com版权所有 查询式I/O方式是微机控制系统中经常采用的,假设某微机控制系统中采用查询式对、、三个外围设备进行I/O管理,其查询和I/O处理的简化程序流程图如图3所示。 本文来自www.eadianqi.com
自动控制网www.eadianqi.com版权所有
图3 查询式I/O处理简化程序流程图 自动控制网www.eadianqi.com版权所有 从原理上看,查询式比无条件传送方式可靠,接口电路简单,不占用中断输入线,同时查询程序也简单,易于设计调试。由于查询式I/O方式是通过CPU执行程序来完成的,因此各外设的工作与程序的执行保持同步关系,特别适用于多个按一定规律顺序工作的生产机械或生产过程的控制。如组合机床、自动线、温度巡检,定时采集数据等。 本文来自www.eadianqi.com
但是在查询式I/O方式下,CPU要不断地读取状态字和检测状态字,不管那个外围设备是否有服务请求,都必须一一查询,许多次的重复查询,可能都是无用的,而又占去了CPU的时间,效率较低。 本文来自www.eadianqi.com
比如,用查询式管理键盘输入,若程序员在终端按每秒打入10个字符的速度计算,那么计算机平均用100ms的时间完成一个字符的输入过程,而实际上真正用来从终端读入一个字符并送出显示等处理的时间只需约50s,如果同时管理30台终端,那么用于测试状态和等待时间为:100000 s一50×30s=98500s;可见,98.5%的时间都在查询等待中浪费了。 本文来自www.eadianqi.com I/O方式的选择必须符合实时控制的要求。对于查询式I/O方式,满足实时控制要求的使用条件是:“所有外围设备的服务时间的总和必须小于或等于任一外围设备的最短响应时间”。 自动控制网www.eadianqi.com版权所有 这里所说的服务时间是指某台外围设备服务子程序的执行时间。最短响应时间是指某台设备相邻两次请求服务的最短间隔时间。某台设备提出服务请求后,CPU必须在其最短响应时间内响应它的请求,给予服务,否则就要丢失信息,甚至造成控制失误。最严重的情况是,在一个循环查询周期内,所有外围设备(指一个CPU管理的)都提出了服务请求,都得分别给予服务,因此,就提出了上述必须满足的使用条件。 自动控制网www.eadianqi.com版权所有 这种方式一般适用于各外围设备服务时间不太长、最短响应时间差别不大的情况。若各外围设备的最短响应时间差别大且某些外围设备服务时间长,采用这种方式不能满足实时控制要求,就要采用中断控制方式。 自动控制网www.eadianqi.com版权所有
2、中断控制I/O方式 本文来自www.eadianqi.com 为了提高CPU的效率和使系统具有良好的实时性,可以采用中断控制I/O方式。采用中断方式CPU就不必花费大量时间去查询各外围设备的状态了。而是当外围设备需要请求服务时,向CPU发出中断请求,CPU响应外围设备中断,停止执行当前程序,转去执行一个外围设备服务的程序,此服务程序称为中断服务处理程序,或称中断服务子程序。中断处理完毕,CPU又返回来执行原来的程序。 本文来自www.eadianqi.com 在中断传送时的接口电路如图4所示。当输入装置输入一数据,发出选通信号,把数据存人锁存器,又使D触发器置“1”,发出中断请求。若中断是开放的,CPU接受了中断请求信号后,在现行指令执行完后,暂停正在执行的程序,发出中断响应信号INTA,于是外设把一个中断矢量放到数据总线上,CPU就转入中断服务程序,读入或输出数据,同时清除中断请求标志。当中断处理完后,CPU返回被中断的程序继续执行。 自动控制网www.eadianqi.com版权所有
自动控制网www.eadianqi.com版权所有 图4 中断传送方式的接口电路 本文来自www.eadianqi.com 微机控制系统中,可能设计有多个中断源,且多个中断源可能同时提出中断请求。多重中断处理必须注意如下四个问题。 本文来自www.eadianqi.com (1)保存现场和恢复现场:为了不致造成计算和控制的混乱和失误,进入中断服务程序首先要保存通用寄存器的内容,中断返回前又要恢复通用寄存器的内容。 本文来自www.eadianqi.com (2)正确判断中断源:CPU能正确判断出是哪一个外围设备提出中断请求,并转去为该外围设备服务,即能正确地找到申请中断的外围设备的中断服务程序入口地址,并跳转到该入口。 自动控制网www.eadianqi.com版权所有 (3)实时响应:就是要保证每个外围设备的每次中断请求,CPU都能接受到并在其最短响应时间之内给予服务完毕。 本文来自www.eadianqi.com (4)按优先权顺序处理:多个外围设备同时或相继提出中断请求时,应能按设定的优先权顺序,按轻重缓急逐个处理。必要时应能实现优先权高的中断源可中断比它的优先权较低的中断处理,从而实现中断嵌套处理。 自动控制网www.eadianqi.com版权所有 3、直接存储器存取(DMA)方式 自动控制网www.eadianqi.com版权所有
利用中断方式进行数据传送,可以大大提高CPU的利用率,但在中断方式下,仍必须通过CPU执行程序来完成数据传送。每进行一次数据传送,就要执行一次中断过程,其中保护和恢复断点、保护和恢复寄存器内容的操作与数据传送没有直接关系,但会花费掉CPU的不少时间。例如对磁盘来说,数据传输率由磁头的读写速度来决定,而磁头的读写速度通常超过2B/s,这样磁盘和内存之间传输一个字节的时间不能超过5μs,采用中断方式就很难达到这么高的处理速度。 本文来自www.eadianqi.com 所以希望用硬件在外设与内存间直接进行数据交换(DMA)而不通过CPU,这样数据传送的速度上限就取决于存储器的工作速度。但是,通常系统的地址和数据总线以及一些控制信号线是由CPU管理的。在DMA方式时,就希望CPU把这些总线让出来(即CPU连到这些总线上的线处于第三态——高阻状态),而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束等信号。通常DMA的工作流程如图5所示。 本文来自www.eadianqi.com
自动控制网www.eadianqi.com版权所有
图5 DMA工作流程图 自动控制网www.eadianqi.com版权所有 能实现上述操作的DMA控制器的硬件框图如图6所示。当外设把数据准备好以后,发出一个选通脉冲使DMA请求触发器置1,它一方面向控制/状态端口发出准备就绪信号,另一方面向DMA控制器发出DMA请求。于是DMA控制器向CPU发出HOLD信号,当CPU在现行的机器周期结束后发出HLDA响应信号,于是DMA控制器就接管总线,向地址总线发出地址信号,在数据总线上给出数据,并给出存储器写的命令,就可把由外设输入的数据写入存储器。然后修改地址指针,修改计数器,检查传送是否结束,若未结束,则循环,直至整个数据传送完毕。随着大规模集成电路技术的发展,DMA传送已不局限于存储器与外设间的信息交换,而可以扩展为在存储器的两个区域之间,或两种高速的外设之间进行DMA传送。 |