输入输出

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

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

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

资源描述

第五章输入与输出基本内容:◆输入输出的基本概念◆输入输出寻址:IN/OUT指令◆地址译码◆输入输出方式:无条件传送,查询方式,中断方式,DMA方式课时安排:4课时重点内容:1)输入输出指令2)I/O地址译码电路设计3)4种CPU与I/O端口数据传送方式的原理。5.1接口的基本概念5.1.1什么是I/O接口1)外部设备常见的外部设备有:键盘、鼠标、显示器、打印机等。2)I/O接口I/O接口(Interface)就是微处理器或微机与外部设备的连接部件,它是CPU与外界进行信息交换时,所必需的电路。3)简单的接口电路下图是2个基本的外部设备:D0D7D1LED0LED1LED7输出设备:控制LED灯。当Di=1时,LEDi亮,否则LEDi灭。…+5VK0K7D0D7D1K1输入设备:读取开关的状态。当Ki闭合时,对应的Di=0,否则Di=1。(1)需要做如下工作:※将2个I/O设备和微机系统连接起来。※利用微机程序实现:当某个开关Ki闭合时,对应的发光二极管LEDi亮,开关断开时,对应的LED灭。要解决上述问题,必须将这2个设备通过相应的接口与CPU连接起来,这个接口就是I/O接口,本章节以后的主要内容就是如何设计I/O接口电路。(2)解决方法要解决前面的问题,必须学习一些基本的知识:※基本的接口电路芯片1510CCV1115201CS2CS1A12A13A14A13A22A21A24A21Y12Y13Y14Y11Y22Y23Y24Y2GND74LS244G1Q1D3D6D2D7DGND4D7Q2Q8Q4QCK5Q3Q6Q5D8DCCV74LS2738数据缓冲器8输出锁存器逻辑结构图:IOWGIORCS1CS25V8086地址译码地址总线数据总线…1A11A22A41Y1-2Y4D0-D71Q2Q8Q1D-8D74LS27374LS244※I/O接口地址通过总线和CPU连接的I/O接口有很多,必须给每个I/O接口定义适当的I/O地址。XT系统使用8086CPU地址总线的低10位,A0-A9,作为I/O地址总线,寻址的I/O地址为1024个,AT系统使用地址总线的低16位:A0-A15,可寻址的I/O地址为64K个。且8086系列微机的I/O地址采用独立编址的方法,为了区分I/O操作和存储器操作,在I/O操作时使用单独的I/O指令。同时,对应的I/O接口分配了I/O地址后,还要设计相应的地址译码电路。5.1.2I/O指令由于8086I/O和内存独立编址,故内存读写和I/O读写要采用不同的指令(这里要特别注意内存读/写的差异)。1)输入指令IN格式:IN累加器,PORTIN累加器,DX其中,累加器为AX(传送16位数)或AL(传送8位数),PORT为I/O端口地址,DX为I/O间接寻址(DX保存I/O地址)。如:INAL,21H;读中断口INAX,0FH;读DMA口直接利用I/O地址存取数据时,I/O地址值不能大于FFH,是因为I/O操作的机器指令代码中,紧跟操作码只设计了一个字节的操作数。当I/O地址大于FFH时,采用DX间接对I/O接口寻址。如:当要读取I/O地址为3F8H的端口时,只能用如下方式:MOVDX,3F8HINAL,DX2)输出指令OUT格式:OUTPORT,累加器OUTDX,累加器5.1.3I/O地址译码1、标准的门电路:缓冲器非门与门与非门或门或非门2、I/O地址译码每当CPU执行IN或OUT指令时,就进入了I/O端口读/写周期,CPU首先产生I/O端口地址,然后是读写控制信号,I/O端口的地址译码器负责对CPU发出的I/O地址译码,并利用产生的译码信号选择对应I/O端口。实际上I/O地址译码电路不仅与地址信号有关,而且还与控制信号有关,它把地址和控制信号进行组合,产生对芯片的选择信号。因此,I/O地址译码电路除了要受A0~A9这10根地址线(以XT系统为例)所限定的地址范围之外,还要考虑下面的一些控制信号,如:(1)利用IOR、IOW信号控制对端口的读写。(2)用AEN信号控制非DMA传送。AEN为系统总线信号,AEN=1表示DMA传送;AEN=0表示非DMA传送。(3)用IOCS16信号控制是8位还是16位的I/O端口。8086CPU对I/O地址的管理与地址译码由于I/O地址线只使用低10位,I/O接口单元的地址不象存储器地址那样需要分段,I/O地址也可以不连续,每个I/O端口的地址译码也是独立的。译码1I/O接口1I/O设备1译码2I/O接口2I/O设备2译码nI/O接口nI/O设备n片选信号CPUABDB3、常用的译码电路1)门组成的译码电路这是一种最简单最基本的端口地址译码方法,它一般多采用与门、与非门、反相器及或非门等,如74LS08(8非门)、74LS04(4非门)、74LS32(8或门)、74LS30(8与非门)、74LS20(4与非门)等。300H译码电路A9A8A7A6A5A4A3A2A1A0CS300H当且仅当I/O地址=300H时,输出为低电平,该低电平正好可以作为接口芯片的片选信号。当I/O地址为其它值时,输出为高电平(片选无效)。2)专用译码电路若接口电路中需要使用多个端口地址时,则采用译码器译码比较方便。译码器的型号很多,如3-8译码器74LS138,8205;4-16译码器74LS154;双2-4译码器74LS139和74LS155等。3-8译码器74LS138是最常用的译码电路之一,它可以从输入的3个代码(A、B、C)中译出8个输出(Y0~Y7)。它的3个输入控制端是G1、G2A、G2B,只有当G1=1,G2A=0,G2B=0时,才允许对输人端A、B、C进行译码。74LS138的真值表如下表所示。74LS138ABCG2AG2BG1Y7GNDVccY0Y1Y2Y3Y4Y5Y674LS138真值表CBAY0Y1Y2Y3Y4Y5Y6Y700001111111001101111110101101111101111101111100111101111011111101111011111101111111111105.1.5I/O接口程序设计如前面的例子,程序设计如下(见图假定接口的I/O地址为300H,且输入输出接口通过I/O读、写控制区分):MOVDX,300HINAL,DXNOTALOUTDX,AL5.2CPU与I/O之间的信息分类5.2.1数据信息数据信息可以分为:数字量、模拟量和开关量。A/D数据寄存器计算机系统D/AA/D:模拟量变数字量D/A:数字量变模拟量5.2.2状态信息CPU状态寄存器……打印机…D7D3D2D1D0D0:缺纸状态1-缺纸0-有纸D1:联机状态1-脱机0-联机D2:忙状态1-忙0-空闲状态寄存器5.2.3控制数据通过I/O接口控制I/O设备的工作。如复位、打印机走纸等。5.3.1无条件传送CPU在没有查询外设的状态或者已知外设准备好的情况下,利用IN和OUT指令与外设的数据口交换数据----称无条件传送。如前面设计的I/O接口和I/O设备。5.3CPU与外设数据传送方式5.3.2查询传送方式在CPU与I/O进行数据传送时,由于客观原因,I/O端口往往没有做好与CPU交换数据的准备,在这种情况下,I/O接口设计一个状态寄存器,来描述I/O接口的实际状态。CPU在进行数据读写时,先查询I/O接口的状态,再进行数据传送。输入状态信息READY?输入数据NYes程序举例:Loop1:Inal,status-portTestal,00000001BJZLoop1Inal,Data-port1、查询传送的工作原理(状态寄存器中D0=1,准备好)2、基本电路设计CPUI/O设备数据锁存器QRD数据口译码状态口译码数据寄存器状态寄存器地址数据M/IORDCECED08位状态寄存器,D0位表示设备的状态,0—没准备,1—准备就绪.数据端口地址:300H状态端口地址:301H具体应用举例:(1)数据端口地址为300H,状态端口地址为301H.(2)在状态端口中,D0表示设备的状态,D0=0:没有就绪,D0=1:准备就绪.(3)在内存中,地址为0200H的地方存放了100个字节的数据需要通过数据口传送到I/O设备.5.3.3中断传送方式在上述的查询传送方式中,CPU要不断地询问外设,当外设没有准备好时,CPU要等待,不能进行别的操作,这样就浪费了CPU的时间。而且许多外设的速度是较低的,如键盘、打印机等等,它们输入或输出一个数据的速度是很慢的,在这个过程中,CPU可以执行大量的指令。为了提高CPU的效率,可采用中断的传送方式:在输入时,若外设的输入数据已存入寄存器;或输出时,外设已准备好接受数据,则由外设向CPU发出中断请求,CPU就暂停原执行的程序(即实现中断),转去执行输入或输出操作(中断服务),待输入输出操作完成后再返回,CPU继续执行原来的程序。这样就可以大大提高CPU的效率,而且允许CPU与外设(甚至多个外设)同时工作。1、中断处理过程(1)中断请求:I/O设备向CPU发出中断请求:INTR(高电平),如果IF=1,CPU在现行指令执行完后,开始响应中断,转响应中断程序(2),否则,不响应中断;(2)中断响应:CPU向I/O设备发送中断回应信号,I/O收到CPU发送的INTA信号后将I/O的中断类型号通过数据总线传送到CPU。CPU收到中断类型号后计算出中断服务程序的入口地址,CPU保护断点IP、CS的值,将中断服务程序的入口地址送CS、IP,转入中断服务程序(中断响应结束);(3)执行中断:执行中断服务程序;(4)中断返回:中断服务程序执行完后,IRET指令返回(恢复断点IP、CS的值)。2、中断优先级问题(1)软件查询锁存器。。。INT0INT1INT7。。。INTRCPU外部设备在中断响应后,中断程序执行时查询锁存器,查看哪些设备发生了INT,并根据其优先级算法决定,先响应哪个设备。(2)简单的硬件电路:菊花链菊花电路外设0INTA0CPUINTAINT0菊花电路外设1INTA1INT1菊花电路外设2INTA2INT2INTRINTAINTAiINTi菊花电路最高最低12341432INTR(3)、专门的硬件电路5.3.4直接存储器存取(DMA)中断传送仍是由CPU通过执行中断服务程序来完成的,每次中断时,CPU要保护断点、保护现场,中断返回时,还要恢复断点、恢复现场,这需要开销CPU时间,这在一个高速I/O设备(如硬盘)与内存交换批量的数据时,CPU的工作效率会非常低。所以希望用专用的硬件控制外设与内存直接交换数据(DMA),而不通过CPU,这样数据传送的速度的上限就取决于存储器的工作速度。通常系统的总线是由CPU控制的,在DMA方式时,CPU需要让出总线,而由DMA控制器接管,DMA控制器得到总线控制权后,直接控制存储器和I/O交换数据,当DMA结束数据的传输工作(DMA结束)后再将总线交还CPU,这种方式称为DMA传输方式。1、DMA控制器的基本功能DMAC是控制存储器和外部设备之间直接高速地传送数据的硬件电路,它应能取代CPU,用硬件完成I/ORAM,RAMRAM之间的数据传送。具体地说应具有如下功能:(1)能接收外设的请求,向CPU发出DMA请求信号(总线请求)。(2)当CPU发出DMA响应信号之后,接管对总线的控制,进入DMA方式。(3)能寻址存储器,即能输出地址信息和修改地址。(4)能向存储器和外设发出相应的读/写控制信号。(5)能控制传送的字节数,判断DMA传送是否结束。(6)在DMA传送结束以后,能结束DMA请求信号,释放总线,使CPU恢复正常工作。存储器接口DMA控制器8086/8088CPUI/O设备①接口已准备好接收数据提出DMA请求⑤DMA请求被确认⑦接口锁存数据⑥存储器把数据放到数据总线上④DMA设备把地址放到地址总线上⑧撤销总线请求,控制返回到8086/8088⑨8086/8088撤销总线允许信号HLDA送回总线允许信号③发出总线请求②控制总线地址总线数据总线2、DMA过程*I/O地址为300HIOWGIOR

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

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

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

×
保存成功