54第6章 输入输出与中断

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

6.1输入/输出接口概述CPU和外设之间必须要设置输入/输出接口(I/O接口),作为CPU与外设进行信息交换的桥梁。CPU接口电路I/O设备接口是一组电路,是CPU与输入输出设备等外设之间协调动作的控制电路。6.1.1输入/输出接口的功能I/O地址译码与设备选择(1)信息的输入/输出(2)命令、数据和状态的缓冲与锁存(3)信息转换(4)(1)I/O地址译码与设备选择所有外设都通过I/O接口挂接在系统总线上,在同一时刻,总线只允许一个外设与CPU进行数据传送。(2)信息的输入/输出通过I/O接口,CPU可以从外部设备输入各种信息,也可将处理结果输出到外设;CPU可以通过向I/O接口写入命令字来控制I/O接口的工作,还可以随时监测与管理I/O接口和外设的工作状态;I/O接口还可以通过接口向CPU发出中断请求。(3)命令、数据和状态的缓冲与锁存因为CPU与外设之间的时序和速度差异很大,为了能够确保计算机和外设之间可靠地进行信息传送,要求接口电路应具有信息缓冲能力。接口不仅应缓存(暂时存留)CPU送给外设的信息,也要缓存(暂时存留)外设送给CPU的信息。以实现CPU与外设之间信息交换的同步。(4)信息转换I/O接口还要实现信息格式变换、电平转换、码制转换、传送管理以及联络控制等功能。6.1.2CPU与输入/输出接口之间的信息CPU与I/O设备之间传输的信息可分为以下三种:(1)数据信息CPU和外设交换的基本信息就是数据,分为数字量、模拟量、开关量。(2)状态信息状态信息反映了当前外设所处的工作状态,是外设发给CPU的用来协调两者之间的操作。如READY、BUSY。(3)控制信息控制信息是CPU发给外设的,以控制外设的工作。如外设的启动信号和停止信号。注意数据信息、状态信息和控制信息是属于不同性质的信息,需要分别传送。一个简单的I/O接口内部包含:数据端口、状态和控制端口。CPU通过数据端口从外设读入数据或向外设输出数据从状态端口读入设备的当前状态通过控制端口向外设发出控制命令一个I/O接口可能仅包含其中的一类或两类端口,当然也可能包含全部三类端口。端口I/O接口通常设置有若干个寄存器,用来暂存CPU和外设之间传输的数据、状态和控制信息,这些接口内部的寄存器通常称为端口,分别为数据端口、状态端口、控制端口。每个端口有一个独立的地址,CPU可通过端口地址来读/写它们。6.1.3输入/输出端口的编址方式在微机系统中,CPU对外设的访问实际上是对外设接口电路中相应的I/O端口进行访问,CPU用相应的读写指令来对端口进行读或写。因此,对这些端口必须指定相应的地址码,这就是I/O端口的编址。I/O端口的编址通常有两种不同的方式:统一编址1独立编址21.I/O端口统一编址又称为存储器映射编址方式,即把每个I/O端口都当作一个存储单元看待,按照存储单元的编址方式统一安排端口的地址。优点:可以用访问内存的方法来访问I/O端口。由于访问内存的指令种类丰富、寻址方式多样,因此这种编址方式为访问外设带来了很大的灵活性。同时,I/O控制信号也可与存储器的控制信号共用,从而给应用带来了很大的方便。缺点:外设占用了一部分内存地址空间,这就减少了内存可用的地址范围。此外从指令上不易区分当前是对内存进行操作还是对外设进行操作。IntelMCS-51等系列的单片微型计算机采用统一编址方式。2.I/O端口独立编址内存地址空间和外设地址空间是相互独立的。8086/8088系统的内存地址范围为00000H~0FFFFFH,共1M空间,而外设端口的地址范围为0000H~0FFFFH,共64K空间。这两个地址空间相互独立,互不影响。CPU在寻址内存和外设时,使用不同的控制信号来区分当前是对内存操作还是对I/O端口操作。例如8086的M/IO#。指令系统中单独设置有专用的I/O指令。优点:将输入输出指令和访问存储器的指令明显区分开,使程序清晰,可读性好,而且I/O指令长度短,执行的速度快,也不占用内存空间;I/O地址译码电路较简单,缺点:必须有专门的IN和OUT指令,这些指令的功能没有访问存储器指令强,也增加了指令系统的规模。另外,CPU要能提供区分存储器和I/O的控制信号。6.2CPU与外设之间的数据传送方式无条件方式6.2.1查询方式6.2.2中断方式6.2.3DMA方式6.2.46.2.1无条件传送方式无条件传送方式主要用于外部控制过程的各种动作是固定的、且是已知的,控制的对象是一些简单的、随时“准备好”的外设。也就是说,在这些设备工作时,随时都可以接收CPU输出的数据,或者它们的数据随时都可以被CPU读出。它不需要查询外设状态,直接使用I/O指令与外设实现同步数据交换。采用这种控制方式的接口电路和控制程序都比较简单。它一般应用在工作速度慢,接口电路较简单的外设,如发光二极管、开关等,适合采用这种方式。6.2.2条件传输方式—程序查询传送方式在执行输入输出前,要先查询接口中状态寄存器的状态。输入时,状态寄存器的状态指示要输入的数据是否已经准备就绪;输出时,状态寄存器的状态指示输出设备是否空闲。查询传输方式(1)CPU从状态端口中读取状态字;(2)CPU检测状态字的相应位是否满足“就绪”条件,如果不满足,则转(1),再读取状态;(3)如状态位表明外设已处于“就绪”状态,则通过数据端口传输数据。外设准备好?传送数据读取外设状态YN特点:利用查询方式进行数据输入输出的过程中,CPU将大量时间耗费在读取和检测外设状态上,真正用于传送数据的时间很少,这样大大降低了CPU的效率。例题:某输入接口的状态端口地址为86H,数据端口地址为87H,外部输入信息准备好状态标志为D7=1(D7=0表示外设未准备好).用查询方式写出从外设读入100字节数据并存于内存BUFFER开始的单元中。LEABX,BUFFER;将BUFFER偏移地址送BXMOVCX,100;字节数ABC:INAL,86H;读状态端口(目的读状态位)TEXSTAL,80H;测试D7位是否为1(准备好)JZABC;若D7=0未准备好,循环检测INAL,87H;准备好,读数据端口MOV[BX],AL;存到内存BUFFER缓冲区INCBX;修改地址指针LOOPABC;未送完,继续传送1)输入指令IN格式:INOPD,OPS功能:从端口(地址为n或在DX中)输入8位数据到AL或输入16位数据到AX。INAL,40H;从40H端口读入一个字节送ALMOVDX,8F00H;将端口地址8F00H送DXINAL,DX;从8F00H端口读入一个字节送AL2)输出指令OUT格式:OUTOPD,OPS功能:从AL输出8位数据或从AX输出16位数据到端口(地址为n或在DX中)。OUT40H,AL;将AL内容送40H端口MOVDX,8F00H;将端口地址8F00H送DXOUTDX,AL;将AL内容送8F00H端口输入/输出指令在使用时应该注意输入/输出指令对标志寄存器没有影响。端口地址大于255时,必须用DX指定端口地址。6.2.3中断控制方式在中断传输方式下,当输入设备将数据准备好或者输出设备可以接收数据时,便可以向CPU发出中断请求,使CPU暂时停止执行当前程序,而去执行一个数据输入/输出的中断服务程序,与外设进行数据传输操作,中断程序执行完后,CPU又转回继续执行原来的程序。中断方式的数据传输仍在程序的控制下执行,也可称为程序中断方式,适用于中、慢速外设的数据传输。利用中断控制方式,CPU不必花费大量的时间去检测外设的状态,提高了CPU的效率。6.2.4直接存储器存取DMA方式在高速的外设或成块交换数据的情况,采用程序控制方式进行数据的传输,是无法满足要求的。在这种情况下,采用DMA方式。(DMA--DirectMemoryAccess)DMA方式是在外设与内存间建立起直接的通道,CPU不再直接参加外设和内存间的数据传输。但系统需要进行DMA传输时,将CPU对地址和数据及控制线的管理权交由DMA控制器进行控制,当完成了一次DMA数据传输后,再将这个控制权还给CPU,这些工作都是由硬件自动实现的,并不需要程序进行控制。6.3中断技术中断概述6.3.1中断的处理过程6.3.28086/8088的中断6.3.36.3.1中断概述中断源及其分类1中断系统及其功能2中断优先级的确定3中断概念:CPU正在执行某一段程序的过程中,如果外界或内部发生了紧急事件,要求CPU暂停正在运行的程序转去执行这个紧急事件的处理程序,待处理完后再回到被停止执行程序的间断点,继续执行原来被打断了的程序,这一过程称为中断。1.中断源及其分类引起中断的事件就称为中断源。分为两大类:内部中断源:来自CPU内部,如:CPU执行指令时产生的异常、特殊操作引起的异常以及由程序员安排在程序中的INTn软件中断指令。中断的控制完全是在CPU内部实现的。外部中断源:来自CPU外部,如:如键盘、打印机、定时器时间到、电源掉电、硬件出错等。利用CPU的两条中断输入信号线INTR和NMI来告诉CPU已发生了中断事件。2.中断系统及其功能实现中断响应及返回★实现优先权排队★高级中断源能中断低级的中断处理★中断请求执行中断服务程序中断过程示意图断点:主程序中被暂停执行的指令的地址称为断点。执行主程序继续执行主程序1)实现中断响应及返回当某个中断源发出中断请求时,CPU能根据条件决定是否响应该中断请求。若允许响应,则CPU必须在执行完现行指令后:保护断点和现场(即把断点处的断点地址和各寄存器的内容与标志位的状态推入堆栈);转到需要处理的中断服务程序的入口;清除中断请求触发器。当处理完中断服务程序后,再恢复现场和断点地址,使CPU返回断点,继续执行主程序。2)实现优先权排队在实际系统中有多个中断源时,有可能出现两个或两个以上中断源同时提出中断请求的情况,而CPU同一时刻只能接受一个中断申请。这样就必须要设计者事先根据轻重缓急,给每个中断源一个中断优先权。当多个中断源同时发出中断申请时,CPU能找到优先级别最高的中断源,响应它的中断请求。在优先权级别最高的中断源处理了以后,再响应级别较低的中断源。3)高级中断源能中断低级的中断处理当CPU响应某一中断源的请求,在进行中断处理时,若有优先级别更高的中断源发出中断申请,则CPU要能中断正在进行中的中断服务程序,保留这个程序的断点和现场(类似于子程序嵌套),响应高级中断,在高级中断处理完以后,再继续执行被中断的中断服务程序。这就形成了中断嵌套,如图6.12所示。两个中断形成的是两重中断(或两级嵌套),还可以进行多重中断(或多级嵌套)。图6.12中断嵌套过程6.3.2中断的处理过程中断请求1中断响应2中断处理31.中断请求外设需要CPU服务时,首先要发出一个有效的中断请求信号送到CPU的中断输入端。中断请求信号分为边沿触发和电平触发。一般来说,CPU能够即时予以响应的中断可以采用边沿触发,而不能即时响应的中断则应采用电平触发,否则中断请求信号就会丢失。8088/8086CPU的NMI为边沿触发,而INTR为电平触发。为了保证产生的中断能被CPU处理,INTR中断请求信号应保持到该请求被CPU响应为止。CPU响应后,INTR信号还应及时撤除,以免造成多次响应。2.中断响应响应中断请求的3个条件:(1)一条指令执行结束。(2)CPU处于开中断状态。(3)没有总线请求。在复位(RESET)、总线保持(HOLD)等总线请求时,CPU不工作,当然就不能响应中断。中断响应时,CPU除了要向中断源发出中断响应信号外,还要自动完成下述3项工作:(1)关闭中断。CPU响应中断时,需立即关中断(使IF=0),以保证保护现场、断点和获取中断入口地址等工作不受影响。(2)保护现场和断点。将标志寄存器FR、断点的段基址(CS值)和偏移地址(IP值)压入堆栈,以保证中断结束后能正常返回被中断的程序。(3)获得中断服务程序入口,转入中断服务程序。3.中断处理保护现场。保护现场是

1 / 77
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功