第5章输入/输出接口和总线技术一、输入输出概述什么是I/O接口(电路)?I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路PC机系统板的可编程接口芯片、I/O插槽上的电路板(适配器)都是接口电路数据总线DB控制总线CB地址总线AB存储器I/O接口输入设备I/O接口输出设备CPU微型计算机的结构示意图一、输入输出概述(续1)为什么需要I/O接口(电路)?微机的外部设备多种多样工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大它们不能与CPU直接相连必须经过中间电路再与系统相连这部分电路被称为I/O接口电路多种外设一、输入输出概述(续2)什么是微机接口技术?处理微机系统与外设间联系的技术注意其软硬结合的特点根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备1.I/O接口的主要功能⑴对输入输出数据进行缓冲和锁存输出接口有锁存环节,输入接口有缓冲环节实际的电路常用:输出锁存缓冲环节,输入锁存缓冲环节⑵对信号的形式和数据的格式进行变换微机直接处理:数字量、开关量、脉冲量⑶对I/O端口进行寻址⑷与CPU和I/O设备进行联络一、输入输出概述2.I/O接口的典型结构I/O端口1I/O端口2I/O端口3地址译码数据缓冲控制电路外设ABDBCBCPU一、输入输出概述(1).接口电路的内部结构CPU与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部:⑴数据寄存器保存外设给CPU和CPU发往外设的数据⑵状态寄存器保存外设或接口电路的状态⑶控制寄存器保存CPU给外设或接口电路的命令一、输入输出概述(2).接口电路的外部特性主要体现在引脚上,分成两侧信号面向CPU一侧的信号:用于与CPU连接主要是数据、地址和控制信号面向外设一侧的信号:用于与外设连接提供的信号五花八门功能定义、时序及有效电平等差异较大一、输入输出概述3.接口电路芯片的分类接口电路核心部分往往是一块或数块大规模集成电路芯片(接口芯片):通用接口芯片支持通用的数据输入输出和控制的接口芯片面向外设的专用接口芯片针对某种外设设计、与该种外设接口面向微机系统的专用接口芯片与CPU和系统配套使用,以增强其总体功能一、输入输出概述4.接口电路的可编程性许多接口电路具有多种功能和工作方式,可以通过编程的方法选定其中一种接口需要进行物理连接,还需要编写接口软件接口软件有两类:初始化程序段——设定芯片工作方式等数据交换程序段——管理、控制、驱动外设,负责外设和系统间信息交换一、输入输出概述5.I/O端口的编址接口电路占用的I/O端口有两类编排形式I/O端口单独编址I/O地址空间独立于存储地址空间如8086/8088I/O端口与存储器统一编址它们共享一个地址空间如M6800理解端口一、输入输出概述(1)I/O端口单独编址优点:I/O端口的地址空间独立控制和地址译码电路相对简单专门的I/O指令使程序清晰易读缺点:I/O指令没有存储器指令丰富内存空间I/O空间FFFFF0FFFF80x86采用I/O端口独立编址一、输入输出概述(2)I/O端口与存储器统一编址优点:不需要专门的I/O指令I/O数据存取与存储器数据存取一样灵活缺点:I/O端口要占去部分存储器地址空间程序不易阅读(不易分清访内存和访问外设)内存部分I/O部分存储器空间00000FFFFF一、输入输出概述6.8088/8086的输入输出指令输入指令INAL,data8;字节输入,直接寻址INAL,DX;字节输入,间接寻址INAX,data8;字输入,直接寻址INAX,DX;字输入,间接寻址输出指令OUTdata8,AL;字节输出,直接寻址OUTDX,AL;字节输出,间接寻址OUTdata8,AX;字输出,直接寻址OUTDX,AX;字输出,间接寻址演示演示一、输入输出概述(1)8088/8086的I/O端口8086/8088只能通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port),即I/O地址8086用于寻址外设端口的地址线为16条,端口最多为216=65536(64K)个,端口号为0000H~FFFFH每个端口用于传送一个字节的外设数据一、输入输出概述(2)I/O寻址方式8088/8086的端口有64K个,无需分段,设计有两种寻址方式直接寻址:只用于寻址00H~FFH前256个端口,操作数data8表示端口号间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号对大于FFH的端口只能采用间接寻址方式一、输入输出概述(3)数据交换方式如果输入输出一个字节,利用AL寄存器如果输入输出一个字,利用AX寄存器输入一个字,实际上是从连续两个端口输入两个字节,分别送AL(对应低地址端口)和AH(对应高地址端口)输出一个字,实际上是将AL(对应低地址端口)和AH(对应高地址端口)两个字节的内容输出给连续两个端口一、输入输出概述IN指令(从20H端口输入一个字);方法1:字输入,直接寻址INAX,20H;方法2:字输入,间接寻址MOVDX,20HINAX,DX;方法3:字节输入,直接寻址INAL,21HMOVAH,ALINAL,20H;方法4:字节输入,间接寻址MOVDX,21HINAL,DXMOVAH,ALDECDXINAL,DX一、输入输出概述OUT指令(向300H端口输出一个字节);唯一的方法:间接寻址,字节量输出MOVAL,bvar;bvar是字节变量MOVDX,300HOUTDX,AL一、输入输出概述7.I/O地址的译码I/O地址的译码方法与存储器地址的译码方法一样,但有它的特点:部分译码时,通常是中间地址线不连接部分译码也有最低地址线不连接的情况每个接口电路通常只占用几个I/O地址,这时可以利用基本逻辑门电路进行地址译码译码器:产生多个外设的I/O端口地址一、输入输出概述IBMPC/AT主机板的I/O译码电路接口芯片内部译码A0~A4DMA控制器1中断控制器1定时计数器并行接口电路DMA页面寄存器中断控制器2DMA控制器2协处理器A5A6A7A8A9ALS138译码器HLDAMASTERABCE1E2E3Y0Y1Y2Y3Y4Y5Y6Y7一、输入输出概述IBMPC/XT主机板的I/O译码电路Y0Y1Y2Y3Y4Y5Y6Y7A5A6A7A8A9AENIOWABCG2BG2AG174LS138DMACS(8237)INTRCS(8259)T/CCS(8253)PPICS(8255)WRTDMAPG(写DMA页面寄存器)WRTNMIREG(写NMI屏蔽寄存器)一、输入输出概述逻辑门电路进行I/O地址译码A9A8A7A6A5A2A4A3AENA1A074LS033E7H一、输入输出概述二、数据传送的控制方式程序控制下的数据传送——通过CPU执行程序中的I/O指令来完成传送,又分为:无条件传送、查询传送、中断传送直接存储器存取(DMA)——传送请求由外设向DMA控制器(DMAC)提出,后者向CPU申请总线,最后DMAC利用系统总线来完成外设和存储器间的数据传送I/O处理机——CPU委托专门的I/O处理机来管理外设,完成传送和相应的数据处理1.无条件传送方式及其接口在CPU与慢速变化的设备交换数据时,可以认为它们总是处于“就绪”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送适合于简单设备,如LED数码管、按键或按纽等无条件传送的接口和操作均十分简单这种传送有前提:外设必须随时就绪流程二、数据传送的控制方式无条件传送:输入示例IOR三态缓冲器OEI/O装置地址译码器CSD7~D0A15~A1A00160HMOVDX,160HINAL,DX二、数据传送的控制方式无条件传送:输入实例MOVDX,160HINAL,DX74LS244+5V10Kx8G1G2数据总线CSRD二、数据传送的控制方式缓冲器74LS244简介常用典型芯片:74LS240/241二、数据传送的控制方式无条件传送:输出示例地址译码器数据锁存器A15~A1IOWA0CS0160H输出设备D7~D0MOVDX,160HMOVAL,[BX]OUTDX,AL二、数据传送的控制方式无条件传送:输出实例MOVDX,160HMOVAL,[BX]OUTDX,AL+5V74LS373300x8LEOE数据总线CSWR二、数据传送的控制方式锁存器74LS373简介使能GHL×HHHHLLLL××LQ0Z输出允许OE输入输出Q常用典型芯片:74LS273,573,Intel8282/8283二、数据传送的控制方式无条件传送:输入输出接口K7K1K0+5VD0~D7A0~A15CLKLS06反相驱动器LS2738D锁存器LS244三态缓冲器8000H译码+5VLED0LED7……GIOWIORnext:movdx,8000h;DX指向数据端口inal,dx;从输入端口读开关状态notal;反相outdx,al;送输出端口显示calldelay;调子程序延时jmpnext;重复二、数据传送的控制方式2.查询传送方式及其接口CPU需要先了解(查询)外设的工作状态,然后在外设可以交换信息的情况下(就绪)实现数据输入或输出对多个外设的情况,则CPU按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换查询传送的特点是:工作可靠,适用面宽,但传送效率低就绪二、数据传送的控制方式查询传送的两个环节⑴查询环节寻址状态口读取状态寄存器的标志位若不就绪就继续查询,直至就绪⑵传送环节寻址数据口是输入,通过输入指令从数据端口读入数据是输出,通过输出指令向数据端口输出数据输入状态就绪?数据交换YN流程二、数据传送的控制方式(1).查询输入接口IOR+5V8D锁存器8位三态缓冲器译码1位三态缓冲器RQA0~A158000H8001HD0~D7D0D输入设备IORSTBmovdx,8000h;DX指向状态端口status:inal,dx;读状态端口testal,01h;测试标志位D0jzstatus;D0=0,未就绪,继续查询incdx;D0=1,就绪,DX指向数据端口inal,dx;从数据端口输入数据二、数据传送的控制方式(2).查询输出接口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;将数据输出给数据端口二、数据传送的控制方式3.中断传送方式断点主程序中断服务程序中断请求对外设进行处理继续执行返回断点CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序流程二、数据传送的控制方式(1).中断传送与接口中断传送是一种效率更高的程序传送方式进行传送的中断服务程序是预先设计好的中断请求是外设随机向CPU提出的CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚本节主要论述中断在输入和输出方面的应用中断还有着非常广泛的应用二、数据传送的控制方式中断输入接口D0~D7+5V8D锁存器8位三态缓冲器三态缓冲器RQ译码8001H中断向量号D0~D7INTRD输入设备中断允许触发器A0~A15中断请求触发器IORINTASTB二、数据传送的控制方式(2)中断工作过程中断请求中断响应关中断断点保护中断识别现场保护中断服务恢复现场开中断中断返回中断服务是进行数据交换的实质性环节二、数据传送的控制方式4.DMA传送方式希望克服程序控制传送的不足:外设→CPU→存储器外设←CPU←存储器直