1第7章输入/输出与中断2存储器I/O接口CPUI/O设备37.1I/O接口概述7.2CPU与外设之间数据传送的方式7.3中断技术7.48086/8088中断系统7.5可编程中断控制器第7章输入/输出与中断47.1I/O接口概述57.1.1I/O接口的概念7.1.2CPU与外设交换的信息7.1.3I/O接口的基本结构7.1.4I/O端口的编址7.1.5I/O端口的地址译码67.1.1I/O接口的概念I/O主机与外设交换信息称为输入/输出(I/O)I/O设备7问题速度匹配信号形式数据格式8显示器连接线并口线9I/O接口通常把介于主机和外设之间,用来完成它们之间的速度匹配、信号转换,以及某些控制功能的一种缓冲电路称为I/O接口电路,简称I/O接口(Interface)10图7.1主机与外设的连接CPUI/O接口外设11I/O接口的功能数据的缓冲与暂存信号电平与类型的转换增加信号的驱动能力对外设进行监测、控制与管理,中断处理12一台微型计算机的输入/输出系统应该包括I/O接口、I/O设备及相关的控制软件。137.1.2CPU与外设交换的信息信息1数据信息2状态信息3控制信息141数据信息数字量模拟量开关量数字量:指计算机可以直接发送、接收和处理的数据。例如,由键盘、显示器、打印机及磁盘等I/O外设与CPU交换的信息。模拟量:指连续变化的物理量,如温度、压力、流量、位移、湿度等。开关量:可表示两个状态,如开关的断开和闭合,机器的运转与停止,阀门的打开与关闭等。152状态信息准备好(READY)忙(BUSY)用于输入设备用于输出设备163控制信息控制信息:是CPU通过接口传送给外设的,用来发送控制信息,以设置外设(包括接口)的工作模式、控制外设的工作。如:外设的启动信号和停止信号就是常见的控制信息。17CPUI/O接口数据信息状态信息控制信息18虽然数据信息、状态信息和控制信息含义各不相同,但在微型计算机系统中,CPU通过接口和外设交换信息时,只能用输入指令(IN)和输出指令(OUT)传送数据,所以状态信息、控制信息也是被作为数据信息来传送的,即把状态信息作为一种输入数据,而把控制信息作为一种输出数据,这样,状态信息和控制信息也通过数据总线来传送。但在接口中,这三种信息是在不同的寄存器中分别存放的。说明19CBABDBCPU数据端口状态端口I/O设备译码控制端口图7.2一个典型的I/O接口I/O接口7.1.3I/O接口的基本结构20I/O端口CPU与外设进行信息交换时,各类信息在接口中存入不同的寄存器,一般称这些寄存器为I/O端口,简称为口(Port)。21I/O端口数据端口状态端口控制端口22数据端口用来保存CPU和外设之间传送的数据(如数字、字符及某种特定的编码等)、对输入/输出数据起缓冲作用的数据寄存器称为数据端口。23状态端口用来存放外设或者接口部件本身状态的状态寄存器称为状态端口。24控制端口用来存放CPU发往外设控制命令的控制寄存器称为控制端口。25端口地址正如每个存储单元都有一个物理地址一样,每个端口也有一个地址与之相对应,该地址称为端口地址。26CBABDBCPU数据端口状态端口I/O设备译码控制端口I/O接口271有时为了节省系统地址空间,在设计接口时往往将状态端口和控制端口共用一个端口地址,再用读/写信号来分别选择访问。2输入/输出操作所用到的地址总是对端口而言,而不是对接口而言的。接口和端口是两个不同的概念,若干个端口加上相应的控制电路才构成接口。说明287.1.4I/O端口的编址I/O端口编址1统一编址2独立编址291统一编址把一个外设端口当作存储器的一个单元来看待,每个外设端口占有存储器的一个地址。从外设输入一个数据,看作存储器一次读操作。向外设输出一个数据,看作存储器一次写操作。30图7.3I/O端口与内存单元统一编址存储器I/O端口0000HXXXXHXXXXH+1FFFFH整个地址空间31优点:内存和外设的地址由一个译码器解决,不需专门的I/O指令,全部存储器指令都可用,指令多,使用方便(例输入,输出不只局限于累加器)缺点:I/O端口占用内存空间,寻址的地址字节增加,增加了指令的执行时间。322独立编址在这种编址方式中,建立了两个地址空间,一个为内存地址空间,一个为I/O地址空间。内存地址空间和I/O地址空间是相对独立的,通过控制总线来确定CPU到底要访问内存还是I/O端口。33图7.4I/O端口与内存单元独立编址00000HFFFFFHFFFFH0000H存储器I/O34优点:存储器地址空间不受I/O端口地址空间的影响缺点:(1)提供用于区分内存和I/O口的控制总线(2)提供用于CPU与I/O端口之间进行数据传输的专用的输入/输出指令。35举例:目前的IBM-PC系列计算机,存储器和端口寻址是独立的。在8086/8088系统中:内存的地址范围:I/O端口的地址范围:00000H~FFFFFH0000H~FFFFH36图7.4I/O端口与内存单元独立编址00000HFFFFFHFFFFH0000H存储器I/O37举例:在8086/8088系统中,区分内存和I/O口的控制信号:8086CPU:8088CPU:IOM/IOM/387.1.5I/O端口的地址译码(补充)I/O端口地址译码:把系统地址总线上的端口地址变为CPU所需要的I/O端口,称为端口地址译码。39地址译码分两步1选择芯片2选择端口401选择芯片将I/O端口地址的高位及指示I/O设备操作的控制信号(如)送到译码器的输入端,当I/O指令执行时,译码器的输出便可产生使I/O接口芯片工作的片选信号()IOM/CS41举例:000&74LS138ABC8253…CLK01S≥1&A0A1IOWIORA2A3A4A5A6A7A8A9A15…S2S3Y0~D7D0D7D0RDWRA0A1CSCLK1CLK2GATE0GATE1GATE2OUT0OUT1OUT2422选择端口将端口地址的低位直接连到I/O接口芯片的端口选择端来选择具体的I/O端口。43举例:&74LS138ABC8253…CLK01S≥1&A0A1IOWIORA2A3A4A5A6A7A8A9A15…S2S3Y0~D7D0D7D0RDWRA0A1CSCLK1CLK2GATE0GATE1GATE2OUT0OUT1OUT200044举例:A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0译码过程0000000001000000000000000100000100000000010000100000000001000011计0计1计2控制口选择芯片选择端口计0:0040H计1:0041H计2:0042H控制口:0043H457.2CPU与外设之间数据传送的方式46CPU与外设间传送数据的方式1程序传送方式2中断传送方式*3直接存储器存取方式(DMA)无条件传送查询传送*477.2.1程序传送方式7.2.2中断传送方式7.2CPU与外设之间数据传送的方式7.2.3DMA传送方式487.2.1程序传送方式程序传送方式1无条件传送2查询传送491无条件传送微机系统中的一些简单的外设,如开关、继电器、数码管、发光二极管等,外部设备的各种动作时间是固定的且已知,就可采用这种方式,把软件延时时间设计大于这个固定动作时间,不用状态判断。这种方式一般只需一个数据端口。50图7.5(a)无条件传送的输入方式三态缓冲器数据总线DB地址总线数据来自外设RDM/IO地址译码器&8无条件传送的输入方式:51图7.5(a)无条件传送的输入方式三态缓冲器数据总线DB地址总线数据来自外设RDM/IO地址译码器8当执行:INAL,n&52设数据端口号为nINAL,n;AL←[n]这条指令执行时,与非门三个输入端同时有效,打开三态缓冲器,把来自外设的数据读入CPU。53图7.5(a)无条件传送的输入方式三态缓冲器数据总线DB地址总线数据来自外设RDM/IO地址译码器8当执行:INAL,n&54无条件传送的输出方式:锁存器数据总线DB地址总线到外设WR地址译码器M/IO&CLK74LS2738n图7.5(b)无条件传送的输出方式55设外设端口号为nOUTn,AL;AL→[n]执行该指令,与非门输出有效,将输出数据锁存至输出端。5674LS2738当执行:OUTn,AL锁存器数据总线DB地址总线到外设WRM/IO地址译码器&CLKn图7.5(b)无条件传送的输出方式57由于外设速度比较慢,要求输出数据在接口电路输出端维持一段时间,故必须加锁存器地址总线74LS2378锁存器数据总线DB到外设WRM/IO地址译码器&CLKn图7.5(b)无条件传送的输出方式582查询传送查询传送也称为条件传送,是指在执行输入指令(IN)或输出指令(OUT)前,要先查询相应设备的状态,当输入设备处于准备好状态,输出设备处于空闲状态时,CPU才执行输入/输出指令与外设交换信息。因此,接口电路中既要有数据端口,还要有状态端口。59开始读取外设状态外设准备就绪?传送数据传送完否?结束NNYY图7.6(a)查询传送方式的流程图60(1)查询式输入开始读取外设状态READY=1?输入数据输完否?结束NNYY图7.6(b)查询输入方式的流程图61图7.7查询式输入接口电路A7~A0状态口•+5VM/IORDReady(D4)RDM/IOCSCS输入装置数据•›(1)选通信号DQ锁存器缓冲器缓冲器地址译码地址译码数据口数据去DB状态信息&&R数据端口状态端口(2)(4)(3)(5)查询式输入:62当输入装置数据准备好后:①发出一个选通信号,一面把数据锁存起来,一面送D触发器的CLK端,将D=1打入Q端,使Q=1;②CPU读入状态信息READY(D4);③当READY=1,输入数据;④读入数据同时,将状态信号清零。63程序段如下:G0:INAL,STATUS-PORT;读入状态信息TESTAL,10H;READY=1?(D4=1?)JZG0;未准备好,等待INAL,DATA-PORT;准备好,读入10H=00010000B64(2)查询式输出开始读取外设状态BUSY=0?输出数据输完否?结束NNYY图7.6(c)查询输出方式的流程图65图7.8查询式输出接口电路(2)“BUSY”输出数据端口地址译码••A7~A0M/IOWRM/IORD+5VQDR(1)ACKDB去DB状态信息BUSY(D0)状态端口数据输出装置锁存器缓冲器地址译码&&CSCS地址译码(3)(4)(5)查询式输出:66在输出时CPU需了解外设的状态,如无空则等待,有空执行输出指令,过程如下:①当输出装置输出数据后,发ACK信号,将D触发器置0,即BUSY=0②CPU查询BUSY(D0),若为0,转入③,否,继续查③执行输出指令,把数据送至锁存器④同时令D触发器置1,它一方面告知外设,数据已准备好,另一方面让BUSY=1,阻止CPU输出新的数据67程序段如下:G0:INAL,STATUT-PORT;输入状态信息TESTAL,01H;BUSY=0?JNZG0;为1,再查MOVAL,STORE;从缓冲区取数OUTDATA-PORT,AL;输出数据68小节1.I/O接口概念2.I/O端口的编址统一编址独立编址3.I/O端口地址译码选择芯片选择端口694CPU与外设之间数据传送的方式◆程序传送方式★无条件传送★查询传送◆中断传送方式◆DMA传送方式70作业教材P2661,271例:采用查询方式的数据采集系统。其原理图如下:CPU8数据总线8位数据M/IO*RD*3A/D转换83数据1位状态(D0)2READYM/IO*RD*24D4一个模拟量A0A78个模拟输入量图7.9查询式输入举例数据端口状态端口控制端口D4=1启动A/DD4=0停止A/D经D0送数据线M/IO*WR*4D2D1D072图中用到三个端口。端口4负责选通某一路模入,由D2、D1、D0控制选8路中某一路,D4控制A/D启动和停止。D4=1启动,D4=0停止。端口2负责查询A/D