- 1.51 MB
- 70页
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
第5章微型机和外设的数据传输
第5章微型计算机和外设的数据传输教学重点I/O接口电路的典型结构无条件传送方式查询传送方式中断工作过程
存储器都是用来保存信息的,功能单一,传送方式单一(一次必定是传送1个字节或者1个字),品种很有限(只有只读类型和可读/可写类型),存取速度基本上和CPU的工作速度匹配。微机的外部设备多种多样工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大它们不能与CPU直接相连必须经过中间电路再与系统相连这部分电路被称为I/O接口电路,通过接口电路对输入/输出过程起一个缓冲和联络的作用。注:接口电路完成相应的信号转换、速度匹配、数据缓冲等功能多种外设5.1为什么要用接口电路
5.2接口电路的概述什么是接口技术?连接计算机系统中的各种功能部件,构成一个完整的、实用的计算机系统,这是接口技术的广义定义。依次定义,实现处理器到系统总线连接的总线驱动器、数据收发器、时钟电路等称为处理器接口。此外,还有RAM接口、ROM接口、外部设备接口等等。更为流行的观点认为接口技术是把由处理器、RAM、ROM等组成的基本系统与外部设备连接起来,从而实现计算机与外部世界通讯的一门技术,即仅指I/O设备接口技术。
什么是I/O接口(电路)?I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路CPU接口电路I/O设备5.2接口电路的概述(续)
什么是微机接口技术?处理微机系统与外设间联系的技术注意其软硬结合的特点根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备5.2接口电路的概述(续)
5.2接口功能⑴寻址能力:对送来的片选信号进行识别。⑵输入/输出功能:根据读/写信号决定当前进行的是输入操作还是输出操作。⑶数据转换功能:并行数据向串行数据的转换或串行数据向并行数据的转换。⑷联络功能:就绪信号,忙信号等。⑸中断管理:发出中斯请求信号、接收中断响应信号、发送中断类型码的功能。并具有优先级管理功能。⑹复位:接收复位信号,从而使接口本身以及所连的外设进行重新启动。⑺可编程:用软件来决定其工作方式,用软件来设置有关的控制信号。⑻错误检测:一类是传输错误。另一类是覆盖错误。注:一些接口还可根据具体情况设置其它的检测信息。
5.3I/O接口与系统的连接(1)数据信息CPU和外设交换的基本信息,包括三种形式:数字量、模拟量、开关量。(2)状态信息是外设通过接口往CPU传送的,反映了当前外设的工作状态。如:“准备好”(READY)信号、“忙”(BUSY)信号(3)控制信息是CPU通过接口传送给外设的相关控制信息。如:外设的启动信号、停止信号就是常见的控制信息。1.CPU与I/O设备之间的信号(三类)
5.3I/O接口与系统的连接(续)⑴数据端口、⑵控制端口、⑶状态端口CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口,每个端口有一个端口地址。用于对来自CPU和内存的数据或者送往CPU和内存的数据起缓冲作用的,这些端口叫数据端口。用来存放外部设备或者接口部件本身的状态,称为状态端口。用来存放CPU发出的命令,以便控制接口和设备的动作,这类端口叫控制端口。如下图2.接口部件的I/O端口
注:⑴输入还是输出,所用到的地址总是对端口而言的,不是对接口部件而言的。⑵为了节省地址空间,将数据输入端口和数据输出端口对应同一个端口地址。同样,状态端口和控制端口也常用同一个端口地址。⑶CPU对外设的输入/输出操作就归结为对接口芯片各端口的读/写操作。2.接口部件的I/O端口(续)
第5章:I/O接口的典型结构控制总线CB地址总线ABI/O接口电路数据控制状态数据总线DBCPU外设控制寄存器状态寄存器数据寄存器1.接口电路的内部结构2.接口电路的外部特性3.接口电路芯片的分类4.接口电路的可编程性
CPU与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部:⑴数据寄存器输入数据寄存器:保存外设给CPU的数据输出数据寄存器:保存CPU给外设的数据⑵状态寄存器保存外设或接口电路的状态⑶控制寄存器保存CPU给外设或接口电路的命令2.接口部件的I/O端口(续)
3.接口与系统的连接接口电路位于CPU与外设之间,从结构上看,可以把一个接口分为两个部分。⑴用来和I/O设备相连;⑵用来和系统总线相连,这部分接口电路结构类似,连在同一总线上。下图是一个典型的I/O接口和外部电路的连接图:
3.接口与系统的连接(续)联络信号:读/写信号,以便决定数据传输方向。地址译码器,片选信号:地址译码器除了接收地址信号外,还用来区分I/0地址空间和内存地址空间的信号(M/I0)用于译码过程。注:⑴一个接口通常有若干个寄存器可读/写,⑵一般用1-2位低位地址结合读/写信号来实现对接口内部寄存器的寻址。
4.输入输出的寻址方式接口电路占用的I/O端口有两类编排形式I/O端口单独编址I/O地址空间独立于存储地址空间如8086/8088I/O端口与存储器统一编址它们共享一个地址空间如M6800
I/O端口与存储器统一编址优点:不需要专门的I/O指令I/O数据存取与存储器数据存取一样灵活缺点:I/O端口要占去部分存储器地址空间程序不易阅读(不易分清访存和访问外设)内存部分I/O部分存储器空间00000FFFFF
优点:I/O端口的地址空间独立控制和地址译码电路相对简单专门的I/O指令使程序清晰易读缺点:I/O指令没有存储器指令丰富内存空间I/O空间FFFFF0FFFF80x86采用I/O端口独立编址I/O端口单独编址
8088/8086的输入输出指令输入指令(IN:将外设数据传送给CPU内的AL/AX)INAL,i8;字节输入INAL,DX;字节输入INAX,i8;字输入INAX,DX;字输入输出指令(OUT:将CPU内的AL/AX数据传送给外设)OUTi8,AL;字节输出OUTDX,AL;字节输出OUTi8,AX;字输出OUTDX,AX;字输出演示演示
8088/8086的I/O端口8088只能通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port),即I/O地址8086用于寻址外设端口的地址线为16条,端口最多为216=65536(64K)个,端口号为0000H~FFFFH每个端口用于传送一个字节的外设数据
I/O寻址方式8088/8086的端口有64K个,无需分段,设计有两种寻址方式直接寻址:只用于寻址00H~FFH前256个端口,操作数i8表示端口号间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号对大于FFH的端口只能采用间接寻址方式
数据交换方式如果输入输出一个字节,利用AL寄存器如果输入输出一个字,利用AX寄存器输入一个字,实际上是从连续两个端口输入两个字节,分别送AL(对应低地址端口)和AH(对应高地址端口)输出一个字,实际上是将AL(对应低地址端口)和AH(对应高地址端口)两个字节的内容输出给连续两个端口
5.4CPU和外设之间的数据传送方式程序控制下的数据传送——通过CPU执行程序中的I/O指令来完成传送,又分为:无条件传送、查询传送、中断传送直接存储器存取(DMA)——传送请求由外设向DMA控制器(DMAC)提出,后者向CPU申请总线,最后DMAC利用系统总线来完成外设和存储器间的数据传送I/O处理机——CPU委托专门的I/O处理机来管理外设,完成传送和相应的数据处理
第5章:1.无条件传送方式及其接口在CPU与慢速变化的设备交换数据时,可以认为它们总是处于“就绪”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送适合于简单设备,如LED数码管、按键或按纽等无条件传送的接口和操作均十分简单这种传送有前提:外设必须随时就绪流程
第5章:无条件传送:输入示例MOVDX,160HINAL,DX
第5章:无条件传送:输入实例MOVDX,160HINAL,DX74LS244+5V10Kx8G1G2数据总线CSRD
第5章:无条件传送:输出示例MOVDX,160HMOVAL,[BX]OUTDX,AL
第5章:无条件传送:输出实例MOVDX,160HMOVAL,[BX]OUTDX,AL+5V74LS373300x8LEOE数据总线CSWR
第5章:无条件传送:输入输出接口K7K1K0+5VD0~D7A0~A15CLKLS06反相驱动器LS2738D锁存器LS244三态缓冲器8000H译码+5VLED0LED7……GIOWIORnext:movdx,8000h;DX指向数据端口inal,dx;从输入端口读开关状态notal;反相outdx,al;送输出端口显示calldelay;调子程序延时jmpnext;重复
又称查询方式,即通过程序查询相应设备的状态,若状态不符合,则CPU不能进行输入/输出操作,需要等待;只有当状态信号符合要求时,CPU才能进行相应的输入/输出操作。第5章:2.条件传送方式一般外设均可以提供一些反映其状态的信号,如对输入设备来说,它能够提供“准备好”(“READY”)信号,“READY”=1表示输入数据已准备好。输出设备则提供“忙”(“BUSY”)信号,“BUSY”=1表示当前时刻不能接收CPU来的数据,只有当“BUSY”=0时,才表明它可以接受来自于CPU的输出数据。
第5章:2.条件传送方式(续)CPU需要先了解(查询)外设的工作状态,然后在外设可以交换信息的情况下(就绪)实现数据输入或输出对多个外设的情况,则CPU按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换查询传送的特点是:工作可靠,适用面宽,但传送效率低就绪?
第5章:条件传送的两个环节⑴查询环节寻址状态口读取状态寄存器的标志位若不就绪就继续查询,直至就绪⑵传送环节寻址数据口是输入,通过输入指令从数据端口读入数据是输出,通过输出指令向数据端口输出数据输入状态就绪?数据交换YN流程
第5章:查询输入接口IOR+5V8D锁存器8位三态缓冲器译码1位三态缓冲器RQA0~A158000H8001HD0~D7D0D输入设备IORSTBmovdx,8000h;DX指向状态端口status:inal,dx;读状态端口testal,01h;测试标志位D0jzstatus;D0=0,未就绪,继续查询incdx;D0=1,就绪,DX指向数据端口inal,dx;从数据端口输入数据
第5章:查询输出接口8D锁存器译码1位三态缓冲器RQA0~A158000H8001HD0~D7D7D+5V输出设备ACKIOWIORmovdx,8000h;DX指向状态端口status:inal,dx;读取状态端口的状态数据testal,80h;测试标志位D7jnzstatus;D7=1,未就绪,继续查询incdx;D7=0,就绪,DX指向数据端口moval,buf;变量buf送ALoutdx,al;将数据输出给数据端口
第5章:条件传送举例例1.假定接口的数据输入端口地址为0052H,数据输出端口地址为0054H,状态端口地址为0056H,并且设定如果状态寄存器中第1位为1,则表示输入缓冲器中已经有1个字节准备好,可以进行输入。此外,还设定如果状态寄存器的第0位为1,则表示输出缓冲器已经腾空,因而CPU可以往终端输出数据。
程序:DATA_SEGSEGMENTMESSAGEDB‘BUFFEROVERFLOW’,0DH,0AHDATA_SEGENDSCOM_SEGSEGMENTBUFFERDB82DUP(?)COUNTDB?COM_SEGENDSCODESEGMENTASSEMEDS:DATA_SEG,ES:COM_SEG,CS:CODESTAT:MOVAX,DATA_SEGMOVDS,AXMOVAX,COM_SEG
程序(续):MOVES,AXMOVDI,OFFESTBUFFERMOVCOUNT,DIMOVCX,81CLDNEXT_IN:INAL,56HTESTAL,02HJZNEXT_ININAL,52HORAL,0JPENO_ERRORJMPERRORNO_ERROR:ANDAL,7FHSTOSB
程序(续):CMPAL,0DHLOOPNENEXT_INJNEOVERFLOWMOVAL,0AHSTOSBSUBDI,COUNTMOVCOUNT,DI:OVERFLOW:MOVSI,OFFESTMESSAGEMOVCX,17NEXT_OUT:INAL,56HTESTAL,01HJZNEXT_OUTLODSBOUT54H,ALLOOPNEXT_OUT:
例2假设从某输入设备上输入一组数据送缓冲区,接口电路如图5-3,若缓冲区已满则输出一组信息“BOFFEROVERFLOW”,然后结束。设该设备的启动地址为0FCH,数据端口为0F8H,状态端口为FAH。
程序如下:DATASEGMENTMESS1DB“BUFFEROVERFLOW”,“$”BUFFDB60DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETBUFF;送缓冲区指针MOVCX,60;送计数初值OUT0FCH,AL;启动设备WAIT:INAL,OFAH;查询状态,若为0,则等待TESTAL,01HJZWAITINAL,0F8H;输入数据MOV[BX],ALINCBXLOOPWAIT;检测缓冲区是否满,不满再输入MOVDX,OFFSETMESS1;缓冲区满,输出标志字符串MOVAH,09HINT21HMOVAH,4CHINT21HCODEENDSENDSTART
第5章:5.4.2中断传送方式1.为什么要采用中断传送方式从查询式的传输过程可以看出,它的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。
1.为什么要采用中断传送方式(续)为了解决这个矛盾,我们提出了中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。
第5章:5.4.2中断传送方式断点主程序中断服务程序中断请求对外设进行处理继续执行返回断点CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序流程
第5章:2.中断传送与接口中断传送是一种效率更高的程序传送方式进行传送的中断服务程序是预先设计好的中断请求是外设随机向CPU提出的CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚本书主要论述中断在输入和输出方面的应用中断还有着非常广泛的应用
第5章:3.中断输入接口电路
数据输入的过程:当外设发STB→数据入锁存器,中断请求触发器置1→若没有屏蔽则产生INTR→CPU满足条件(允许中断;指令执行完)发INTA→(进入中断服务子程序)读数据,发RD,和地址→清中断请求触发器,数据送D0~D7。(输出过程请自己思考)
中断传送方式的原理图5.8可屏蔽中断的响应和执行
第5章:4.中断优先级问题的提出:当系统中有多个设备提出中断请求时,就有一个该响应谁的问题,也就是一个优先级的问题,解决优先级的问题一般可有三种方法:软件查询法、简单硬件方法及专用硬件方法。下面分别介绍:
①软件查询法只需有简单的硬件电路,如将A、B、C三台设备的中断请求信号“或”后作为系统INTR,这时,A、B、C三台设备中只要至少有一台设备提出中断请求,都可以向CPU发中断请求。进入中断服务子程序后,再用软件查询的方式分别对不同的设备的服务,查询程序的设计思想同查询式,查询的前后顺序就给出了设备的优先级,框图如图所示。
以链式中断优先权排队电路为例,基本设计思想:将所有的设备连成一条链,靠近CPU的设备优先级最高,越远的设备优先级别越低,则发出中断响应信号,若级别高的设备发出了中断请求,在它接到中断响应信号的同时,封锁其后的较低级设备使得它们的中断请求不能响应,只有等它的中断服务结束以后才开放,允许为低级的设备服务。如图所示。②简单硬件方法
有了中断控制器以后,CPU的INTR和引脚不再与接口直接相连,而是与中断控制器相连,外设的中断请求信号通过IR0~IR7进入中断控制器,经优先级管理逻辑确认为级别最高的那个请求的类型号会经过中断类型寄存器在当前中断服务寄存器的某位上置1,并向CPU发INTR请求,CPU发出INTA信号后,中断控制器将中断类型码送出。在整个过程中,优先级较低的中断请求都受到阻塞,直到较高级的中断服务完毕之后,当前服务寄存器的对应位清0,较低级的中断请求才有可能被响应。如图所示。③专用硬件方式采用可编程的中断控制器芯片,如Intel8259A。
第5章:5.4.3DMA传送方式希望克服程序控制传送的不足:外设→CPU→存储器外设←CPU←存储器直接存储器存取DMA:外设→存储器外设←存储器CPU释放总线,由DMA控制器管理
1.DMA传送方式的提出利用中断进行信息传送,可以大大提高CPU的利用率,但是其传送过程必须由CPU进行监控。每次中断,CPU都必须进行断点及现场信息的保护和恢复操作,这些都是一些额外的操作,会占用一定的CPU时间。如果需要在内存的不同区域之间,或者在内存与外设端口之间进行大量信息快速传送的话,用查询或中断方式均不能满足速度上的要求,这时应采用直接数据通道传送,即DMA数据传送方式。
DMA(DirectMemoryAccess)意为直接数据传送,它是在内存的不同区域之间,或者在内存与外设端口之间直接进行数据传送,而不经过CPU中转的一种数据传送方式,可以大大提高信息的传送速度。1.DMA传送方式的提出(续)
第5章:2.DMA传送的工作过程①外设准备就绪时,向DMA控制器发DMA请求,DMA控制器接到此信号后,向CPU发DMA请求;②CPU接到HOLD请求后,如果条件允许(一个总线操作结束),则发出HLDA信号作为响应,同时,放弃对总线的控制;③DMA控制器取得总线控制权后,往地址总线发送地址信号,每传送1个字节,就会自动修改地址寄存器的内容,以指向下一个要传送的字节;④每传送一个字节,字节计数器的值减1,当减到0时,DMA过程结束;⑤DMA控制器向CPU发结束信号,将总线控制权交回CPU。
DMA传送控制方式,解决了在内存的不同区域之间,或者内存与外设之间大量数据的快速传送问题,代价是需要增加专门的硬件控制电路,称为DMA控制器,其复杂程度与CPU相当。第5章:3.DMA传送过程(续)
DMA控制器的功能和DMA传送的原理图5.10用DMA方式传输单个数据(输出过程)
第5章:4.DMA传送流程HLDA发存储器地址传送数据传送结束?DMA结束修改地址指针流程
第5章:5.传送方式的比较无条件传送:慢速外设需与CPU保持同步查询传送:简单实用,效率较低中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间开销DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送
5.5.4输入/输出过程中提出的几个问题系统和接口的联系方式优先级缓冲区接口和多字节数据总线的连接接口部件和地址总线的错位连接
1.接口电路的主要作用是什么?它的基本结构如何?2.说明接口电路中控制寄存器与状态寄存器的功能,通常它们可共用一个端口地址码,为什么?3.CPU寻址外设端口的方式通常有哪两种?试说明它们的优缺点。4.在CPU与外部设备接口电路的连接中,通过数据总线可传输哪几种信息?在这里地址译码器起什么作用?5.CPU与外设之间的数据传输控制方式有哪几种?何谓程序控制方式?它有哪两种基本方式?请分别用流程图的形式描述出来。6.试从程序转移的角度比较中断控制与子程序调用这两种处理过程,它们有哪些根本区别?又有哪些相似之处?7.用查询式将DATA开始的存贮区的100个字节数据在FCH端口输出,完成程序,状态端口地址为:FFH。8.什么是接口?什么是端口?在8086/8088微机系统中,CPU是如何实现端口寻址的?9.简述链式中断优先级排队电路的工作过程?10.中断处理的主要步骤有哪些?试说明每一步的主要动作。习题与思考:
多种多样的外设工作原理不同机械、电子、机电、电磁……传送信息类型多样数字量、模拟量、开关量传送速度差别极大传送方式不尽相同串行、并行编码方式不同二进制、BCD码、ASCII码……返回
端口(PORT)端口泛指I/O地址,通常对应接口电路的寄存器一个接口电路可以具有多个I/O端口(寄存器),每个端口用来保存和交换不同的信息数据寄存器、状态寄存器和控制寄存器占有的I/O地址常依次被称为数据端口、状态端口和控制端口,用于保存数据、状态和控制信息输入、输出端口可以是同一个I/O地址一定要理解返回
INAL,21H返回
OUT43H,AL返回
无条件传送流程返回
就绪(Ready)在输入场合“就绪”说明输入接口已准备好送往CPU的数据,正等着CPU来读取该状态也可用接口中数据缓冲器已“满”来描述在输出场合“就绪”说明输出接口已做好准备,等待接收CPU要输出的数据该状态也可用接口数据缓冲器已“空”、或者用接口(外设)“闲”或不“忙(Busy)”来描述返回就绪:满,空、闲、不忙
查询传送流程返回
中断传送流程返回
DMA传送流程返回