微型计算机原理与接口技术1第六章I/O接口和总线微型计算机原理与接口技术21.I/O接口I/O接口的功能简单的输入输出接口芯片I/O端口及其寻址方式CPU与外设间的数据传送方式PC机的I/O地址分配2.总线IBMPC总线AT总线或ISA总线微型计算机原理与接口技术36-1I/O接口一.I/O接口的功能1.采用I/O接口的必要性计算机和外设之间的信息交换带来一些问题:速度不匹配信号电平不匹配信号格式不匹配时序不匹配因此I/O设备不能直接与CPU的系统总线相连,必须在CPU与外设之间设置专门的接口电路来解决这些问题。微型计算机原理与接口技术42.接口的功能:①设置数据缓冲器以解决两者速度差异所带来的不协调问题②设置信号电平转换电路③设置信息转换逻辑以满足对各自格式的要求④设置时序控制电路来同步CPU和外设的工作⑤提供地址译码电路,使CPU在同一时刻只能选中某一个I/O端口。I/O接口电路是外设和计算机之间传送信息的交换部件,也称为界面,它使两者之间能很好地协调工作,每一个外设都要通过接口电路才能和主机相连。CPU接口外设微型计算机原理与接口技术5随着大规模集成电路技术的发展,出现了许多通用的可编程接口芯片,可用它们来方便地构成接口电路。后面几章将介绍常见的可编程I/O接口芯片的原理、编程方法及与CPU的连接方法。可编程中断控制器8259A可编程计数器/定时器8253可编程外围接口芯片8255A串行通信和可编程接口芯片8251AA/D和D/A转换芯片。本章介绍最常用的简单I/O接口芯片,主要有缓冲器(Buffer)和锁存器(Latch)。可编程输入输出接口芯片微型计算机原理与接口技术6二、简单的输入输出接口芯片1.缓冲器74LS244和74LS245连接在总线上的缓冲器都具有三态输出能力。在CPU或I/O接口电路需要输入输出数据时,在它的使能控制端EN(或G)作用一个低电平脉冲,使它的内部的各缓冲单元接通,即处在输出0或1的透明状态。数据被送上总线。当使能脉冲撤除后,它处于高阻态。这时,各缓冲单元像一个断开的开关,等于将它所连接的电路从总线脱开。74LS244和74LS245就是最常用的数据缓冲器。除缓冲作用外,它们还能提高总线的驱动能力。微型计算机原理与接口技术7123456789101G1A174LS244VCC201918171615141312112A21Y42A12Y41A22Y31A32Y21A42Y1GND1Y32G1Y12A41Y22A3(1)74LS244—单向数据缓冲器8个三态缓冲单元,分成两组,分别由门控信号1G和2G控制。1G和2G为低电平时,数据传送;高电平时,输出高阻态。单向缓冲器,只能从A端到Y端。1A11A21A31A42A12A22A32A41Y11Y21Y31Y42Y12Y22Y32Y41G2G微型计算机原理与接口技术8(2)74LS245—双向数据缓冲器8个双向、三态缓冲器。门控信号输入端G。方向控制端DIR,高电平时,数据从A端传向B端;低电平时,从B端传向A端。12345678910DIR74LS245VCC20191817161514131211GNDGA1A2A3A4A5A6A7A8B1B2B3B4B5B6B7B8A1A2A3A4A5A6A7A8B1B2B3B4B5B6B7B8GDIR微型计算机原理与接口技术9DCQ(2)1O(3)1DDCQ(5)2O(4)2DDCQ(6)3O(7)3DDCQ(9)4O(8)4DDCQ(12)5O(13)5DDCQ(15)6O(14)6DDCQ(16)7O(17)7DDCQ(19)8O(18)8D(1)OEG(11)2.锁存器74LS373锁存器具有暂存数据的能力,能将数据锁住,在输出控制信号的作用下将数据传送出去。74LS373是一种常用的8D锁存器,它可以直接挂在总线上,并具有三态总线驱动能力。两个控制输入端:输入使能端G和允许输出端OE。OE为低时:G为高时,D端数据到O端;G为低时,O端将是前面锁存的数据,不受D端的变化影响。OE为高时:输出将呈高阻态。OEGDO低高高高低高低低低低X锁存高XX高阻态真值表微型计算机原理与接口技术10三、I/O端口及其寻址方式1.I/O端口CPU与外设通信时,传送的信息主要包括数据信息、状态信息和控制信息。这些信息分别进入不同的寄存器,通常将这些寄存器和它们的控制逻辑统称为I/O端口(Port),CPU可对端口中的信息直接进行读写。数据信息状态信息控制信息I/O接口外设数据端口数据端口状态端口控制端口微型计算机原理与接口技术11a)数据端口(DataPort)用来存放CPU与外设之间交换的数据,长度一般为1-2个字节,主要起缓冲作用。b)状态端口(StatusPort)用来指示外设的当前状态。每种状态用1位表示,由CPU读取。几种最常用的状态位有:①准备就绪位(Ready)针对CPU输入端口:1:数据寄存器已准备好数据,等待CPU读取,取走后,位清0。针对CPU输出端口:1:输出数据寄存器已空,可以接收下一个数据;新数据到达后,位清0。②忙碌位(Busy)表明外设是否能接收数据。1:外设忙,暂时不允许CPU送信的数据过来。0:外设已空闲,允许CPU发送下一个数据。③错误位(Error)1:指示在数据传送过程中出现错误。CPU进行相应的处理,如重新传送或中止操作等。微型计算机原理与接口技术12c)命令端口(CommandPort)也称为控制端口(ControlPort),用来存放CPU向接口发出的各种命令和控制字,以便控制接口和设备的动作。常见的命令信息有启动位、停止位、允许中断位等。接口芯片不同,控制字的格式和内容是各不相同的,常见的控制字有方式控制字、操作命令字等。在微型计算机系统中,CPU通过接口和外设交换数据时,只有输入(IN)和输出(OUT)两种指令,所以只能把状态信息和命令信息当作数据来传送,并且将状态信息作为输入数据,控制信息作为输出数据,于是三种信息都可以通过数据总线来传送了。这三种信息被送入三种不同端口的寄存器,因而能实施不同的功能。微型计算机原理与接口技术132.I/O端口的寻址方法a)存储器映像寻址方式(MemoryMappedI/O)b)I/O单独编址方式CPU对外设的访问实质上是对I/O接口电路中相应端口的访问,因此和存储器一样,也需要由译码电路来形成I/O端口地址。微型计算机原理与接口技术14a)存储器映像寻址方式(MemoryMappedI/O)把系统中的每一个I/O端口看作一个存储单元,并与存储单元一样统一编址。访问存储器的所有指令均可用来访问I/O端口,不用设置专门的I/O指令。实际上是把I/O地址映射到存储空间,作为整个存储空间的一小部分。适用于不包括专门I/O操作指令的CPU优点:简化了指令系统的设计,不必包含I/O操作指令;能用功能强的存储器指令,操作方便灵活;I/O地址空间可调。缺点:I/O端口占用存储器的地址空间;译码电路复杂;指令较长,延长了输入输出的操作时间。微型计算机原理与接口技术15b)I/O单独编址方式对I/O端口单独编址来构成一个I/O空间,不占用存储空间,用专门的IN和OUT指令来访问端口。Intel8086和8088等采用这种方式。在8086中,用地址总线的低16位来寻址I/O口。输入和输出端口可用相同的地址。CPU中的M/IO控制信号用来区分是I/O寻址和存储器寻址。优点:将I/O指令和访存指令区分开,使程序清晰,可读性好;I/O指令较短,执行速度快,也不占用内存空间;I/O译码电路较简单。缺点:CPU指令系统必须有专门的IN和OUT指令,没有访存指令的功能强。CPU必须提供区分存储器和I/O读写的控制信号(如8086的M/IO信号等)。微型计算机原理与接口技术16四、CPU与外设间的数据传送方式软件实现:程序控制方式、中断方式。硬件实现:DMA方式。1.程序控制方式①无条件方式(同步传送方式)最简单的传送方式,主要用于对简单的外设进行操作,或者外设的定时是固定的或已知的场合。程序可以不必检查外设的状态,而在需要进行I/O操作时,直接执行I/O指令。微型计算机原理与接口技术17无条件传送方式开关连接到三态缓冲器,缓冲器输出端接到CPU的数据总线。开关断开:高电平输入;开关闭合:低电平输入。执行输入指令,使M/IO、RD和片选信号CS同时变为低电平,经过反向与非门变成有效的低电平开启缓冲器的三态门,使开关的当前状态以二进制的形式被读入CPU。检查字节各位的内容,就能了解各开关当前状态。1Y11Y22Y41A11A22A41G2GM/IOCSRD开关+5V74LS244D0D1D7简单输入端口CPU查询按键开关的状态微型计算机原理与接口技术18无条件传送方式用一个由锁存器构成的输出端口来把LED接到计算机的数据总线上,并串接一个限流电阻,共阴连接。点燃LED的位是1,灭的是0。输出指令使M/IO、WR和片选信号CS同时变低,相与后的低电平信号经反相后出发锁存器。由于锁存器的作用,输出值能一直保持到下一个输出指令到达为止,这段时间内,LED的状态也将保持不变。简单输出端口控制LED显示器的点灭1D2D8D1Q2Q8QM/IOCSWR74LS273D0D1D7CPLED微型计算机原理与接口技术19②条件传送(查询式传送)一般情况下,CPU在执行I/O时,很难保证输入设备总是准备好数据,或是输出设备已经处在接收数据状态。CPU必须先确认外设已处于准备传送数据状态,才能进行传送。CPU必须先执行一条输入指令,从外设的状态口读取当前的状态。如果外设未准备好或处于忙碌状态,则程序要转回去反复执行读状态指令,不断检测外设的状态;直到外设准备就绪为止,然后CPU才可以进行正常的I/O操作。微型计算机原理与接口技术20A、查询式输入方式当输入设备准备好数据后,就向I/O接口电路发一个选通信号。将外设的数据打入数据锁存器中。使D触发器的Q端置1,表明数据准备好。CPU先执行IN指令读状态口的信息,三态门开启,Q端的1送到D0位,并被读入累加器。程序检测到D0为1后,便执行IN指令读数据口。开启数据缓冲器,将外设送到锁存器中的数据经缓冲器送到数据总线后进累加器。将D触发器清0,一次数据传送完毕。输入设备数据锁存器(8位)数据缓冲器(8位)+5VI/O译码CS2CS1RD(读状态)RD(读数据)A15~A0M/IODCRQD触发器12选通信号D7~D0READY微型计算机原理与接口技术21A、查询式输入方式设状态口的地址是PORT_S1,输入数据口的地址是PORT_IN,传送数据的总字节数为COUNT_1:MOVBX,0;初始化地址指针BXMOVCX,COUNT_1;字节数READ_S1:INAL,PORT_S1;读入状态位TESTAL,01H;数据准备好否?JZREAD_S1;否,循环检测INAL,PORT_IN;已准备好,读数据MOV[BX],AL;存到内存缓冲区INCBX;修改地址指针LOOPREAD_S1;未传送完,继续传送...初始化读入状态数据准备好输入一数据CPU数据内存缓冲区传送完结束YYN微型计算机原理与接口技术22B.查询式输出方式当CPU准备向外设输出数据时,先执行IN指令读状态口的信息。三态门开启,从数据总线D1位读入BUSY状态。若BUSY=1,表示外设在接收上一个数据的忙碌状态。只有在BUSY=0时,CPU才能向外设输出新的数据。程序检测到D1(BUSY)为0后,便执行OUT指令输出数据。选通数据锁存器,将数据送向外设。选通信号的后沿使D触发器翻转,置Q为高电平,将状态口的BUSY置1。输出设备从接口中取出数据后,就送回一个应答信号ACK,将D触发器清0,即置BUSY为0,允许CPU送出下一个数据。输出设备数据锁存器(8位)I/O译码QCDRACKD触发器+5VRD(读状态)