1、Ch.7 基本I/O接口,本章内容基本概念 I/O端口的编址 输入输出的基本方法:无条件、查询、中断、DMADMADMA的基本概念DMA工作过程DMA的三种传输方式DMA控制器8237A,7.1 输入/输出接口(I/O接口),7.1.1 概述什么是I/O接口? 把外设连接到总线上的一组逻辑电路的总称。实现外设与主机之间的信息交换。 I/O接口要解决的问题速度匹配(Buffer)信号电平和驱动能力(电平转换器、驱动器) 信号形式匹配(A/D、D/A) 信息格式(字节流、块、数据包、帧) 时序匹配(定时关系)总线隔离(三态门),I/O接口的功能I/O地址译码与设备选择把选中的外设与总线相接,未选中
2、的与总线隔离(高阻态) 数据的缓冲与暂存缓解接口与CPU工作速度的差异对外设进行监测、控制与管理,中断处理信号电平与类型的转换形式、格式、电平、功率、码制等,7.1.2 I/O接口的编址方式I/O端口: I/O信息的三种类型:数据、命令、状态。传送这三类信息的通道分别称为:数据端口(I、O)、命令端口(O)、状态端口(I)。不同外设具有的端口数各不相同,计算机中为每一个端口都赋予一个惟一编号称为端口地址(或端口号、接口地址)。端口有两种编址方式:统一编址和独立编址。,1. 统一编址把外设接口与内存统一进行编址。各占据统一地址空间的不同部分。优点指令统一,灵活;访问控制信号统一。 缺点内存可用地
3、址空间减小,0,地址空间(共1MB),内存地址(960KB),I/O地址(64KB),FFFFFH,EFFFFHF0000H,2. 独立编址外设地址空间和内存地址空间相互独立。优点:内存地址空间不受I/O编址的影响缺点:I/O指令功能较弱,8088/8086 CPU的I/O编址方式采用I/O独立编址方式(但地址线与存储器共用)地址线上的地址信号用 来区分: 时为I/O地址I/O操作只使用20根地址线中的16根: A15 A0可寻址的I/O端口数为64K(65536)个I/O地址范围为0FFFFHIBM PC只使用了1024个I/O地址(03FFH),7.1.3 I/O端口地址的译码 、 、 A
4、15 A0OUT指令将使总线的 信号有效IN指令将使总线的 信号有效当接口只有一个端口时,16位地址线一般应全部参与译码,译码输出直接选择该端口;当接口具有多个端口时,则16位地址线的高位参与译码(决定接口的基地址),而低位则用于确定要访问哪一个端口。 例如: 某外设接口有4个端口,地址为2F0H2F3H,则其基地址为2F0H,由A15A2译码得到,而A1、A0用来确定4个端口中的某一个。,7.1.4 I/O数据的传送方式并行一个数据单位(通常为字节)的各位同时传送速度快、距离短、成本高例:PC机的并行接口(通常用于连接打印机)串行数据按位进行传送速度慢、距离远、成本低例: PC机的串行接口(
5、通常用于串行通信),CPU数据输入接口必须具有三态输出能力,以便与总线挂接外设有数据保持能力时可用三态门实现外设无数据保持能力时用三态输出的锁存器实现CPU数据输出接口常用锁存器实现,7.2 简单接口电路,三态门:高电平、低电平、高阻态通常一个器件中包含8个三态门常用芯片: 单向总线驱动/缓冲器 244 (图7.3); 双向总线驱动/缓冲器 245(图7.3 ),锁存器:由D触发器构成通常一个器件包含8个D触发器常用芯片:(教材图7.2)74LS27374LS373(具有三态输出的锁存器)应用例子:发光二极管接口,译码器,=1,=1,.,.,.,+5V,R,D0D7,CP,Q0,Q7,.,D0
6、D7,A0A15,IOW#,74LS273,R,输入/输出接口综合应用例子,根据开关状态在7段数码管上显示数字或符号用74LS273作为输出接口,把数据送到7段数码管74LS273的地址假设为F0H用74LS244作为输入口,读入开关K0K3的状态74LS244的地址假设为F1H当开关的状态分别为00001111时,在7段数码管上对应显示0F(7段码表见下页),O1 I1O2 I2O3 I3O4 I4E1#,K0K3,+5V,GG2AG2BCBA,1,74LS244,D0 Q0 | Q1D7 Q2 Q3 Q4CP Q5 Q6 Q7,abcdefgDP,7406,反相器,74LS273,Rx8,
7、1,74LS138,D0D7,IOW#,IOR#,Y0,Y1,F0H = 0000 0000 1111 0000F1H = 0000 0000 1111 0001,&,1,A7A4,A15A8,A3,A2,A1,A0,D0,D1,D2,D3,译码器,7.3 输入输出的控制方式,各种外设的工作速度相差大。有些相当高,如磁盘机的传送速度达1066Mb/s,而有些外设却由于机械和其他因素所致速度相当低。为解决速度问题设计了多种传送方式。主机与外设之间数据传送的控制方式有以下四种:无条件传送查询式传送中断方式传送直接存储器存取(DMA, Direct Memory Access),7.3.1 无条件传
8、送方式,适用于总是处于准备好状态的外设以下外设可采用无条件传送方式:开关发光器件(如发光二极管、7段数码管、灯泡等)继电器步进电机优点:软件及接口硬件简单缺点:只适用于简单外设,适应范围较窄,由于简单外设作为输入设备时,输入数据保持时间相对于CPU的处理速度要长得多,所以可直接使用三态缓冲器和数据总线相连,如上图(无条件传送方式的工作原理图)所示。当CPU执行输入指令时,读信号RD有效,选择信号M/IO处于低电平,因而三态缓冲器被选通,使其中早已准备好的输入数据进入数据总线,再到达CPU。可见,要求CPU在执行输入指令时,外设的数据是准备好的,即已经存在三态缓冲器中,否则将出错。,简单外设作为
9、输出设备时,一般都需要锁存器,也就是说,要求CPU送出的数据在接口电路的输出端保持一段时间。其原因仍然是由于外设的速度比较慢,所以,要求CPU送到接口的数据能保持和外设动作相适应的时间。如上图所示,CPU执行输出指令时,M/IO和WR 信号有效,于是,接口中的输出锁存器被选中。CPU输出的信息经过数据总线打入输出锁存器,输出锁存器保持这个数据,直到外设取走。显然,这里要求CPU在执行输出指令时,确保所选中的输出锁存器是空的。,例题:见计算机接口技术P7,7.3.2 查询方式,适用于外设并不总是准备好,而且对传送速率、传送效率要求不高的场合。CPU在与外设交换数据前必须询问外设状态“你准备好没有
10、?” 对外设的要求:应提供设备状态信息 对接口的要求:需要提供状态端口优点:软件比较简单缺点:CPU效率低,数据传送的实时性差, 速度较慢,查询方式的流程图,超时?,READY?,与外设进行数据交换,超时错,读入并测试外设状态,Y,N,Y,N,防止死循环,复位计时器,N,Y,例题:见计算机接口技术P8,7.3.3 中断方式,CPU无需循环查询外设状态,而是外部设备在需要进行数据传送时才中断CPU正在进行的工作,让CPU来为其服务。即CPU在没有外设请求时可以去做更重要的事情,有请求时才去传输数据,从而大大提高了CPU的利用率。优点:CPU效率高,实时性好,速度快。缺点:程序编制较为复杂。,7.
11、3.4 DMA传输,前面三种I/O方式都需要CPU作为中介: 外设 CPU 内存 两个含义:1)软件:外设与内存之间的数据传送是通过CPU执行程序来完成的(PIO方式);2)硬件:I/O接口和存储器的读写控制信号、地址信号都是由CPU发出的(总线由CPU控制)。 缺点:程序的执行速度限定了传送的最大速度(约为几十KB/秒)解决方法:DMA传输,DMA传输: 外设 内存外设直接与存储器进行数据交换 ,CPU不再担当数据传输的中介者;总线由DMA控制器(DMAC)进行控制(CPU要放弃总线控制权),内存/外设的地址和读写控制信号均由DMAC提供。优点:数据传输由DMA硬件来控制,数据直接在内存和外
12、设之间交换,可以达到很高的传输速率(可达几MB/秒),DMA传送原理示意图,系统总线,CPU,DMAC,存储器,外设接口,AEN,IOW,MEMW,MEMR,IOR,MEMW,MEMR,IOW,IOR,AEN,HOLD,HLDA,DRQ,DACK,AEN,IOW,IOR,MEMW,MEMR, 外设发出DMA请求 DMAC向CPU申请总线 CPU响应,释放总线控制权 DMAC得到总线控制权,并发出DMA响应信号 由DMAC发出各种控制信号,控制外设与存储器之 间的数据传送 数据传送完后,DMAC撤销HOLD信号 CPU释放HLDA信号,并重新控制总线,DMA控制器的工作过程1)当外设准备好,可以
13、进行DMA传送时,外设向DMA控制器发出“DMA传送请求”信号(DRQ);2)DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,表示希望占用总线;3)CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个动作:一是CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。另一方面,CPU向DMA控制器发出“总线响应”信号(HLDA)。4)DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK;,5)DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送;例如,向I/O接口发出读信号,同
14、时往地址总线上发出存储器的地址和存储器写信号和AEN信号,即可从外设向内存传送一个字节。 6)DMA控制器自动修改地址和字节计数器,并判断是否需要重复传送操作。当规定的数据传送完后,DMA控制器就撤销发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤销HLDA信号,并在下一时钟周期重新开始控制总线。,DMA的三种传输方式:连续传送(块传送)DMAC申请到总线后,将一块数据传送完后才释放总线,而不管中间DREQ是否有效。单次传送(字节传送)每个DMA周期只传送一个字节就立即释放总线。按需传送(请求传送)只要I/O接口的数据缓冲可用,就进行传送。 (注:I/O接口需要有一定大小的FIF
15、O缓冲),一个总线周期,T,DMAC控制总线,共传送n个数据,DMA1,DMA2,DMAn,CPU重新控制总线,CPU对总线控制,连续传送,T,DMA共传送n个数据,DMA1,DMA2,DMAn,单次传送,DMA3,T,按需传送,DMA传送k个数据,DMA传送n-k个数据,FIFO可用,FIFO满,FIFO可用,FIFO满,图例:,DMA传输方式示意图:,7.4 DMA控制器8237A,8237A是一个高性能的40引脚双列直插式可编程DMA控制器芯片,可以方便地与Intel公司的微处理机相连,实现外部设备与存储器之间的直接数据交换。该控制器通过编程可提供多种类型的控制特性,以优化系统性能,增大
16、数据吞吐率,使最高数据传输速率可达1.5M字节/秒(时钟频率达到5MHz),并允许在程序控制下实现动态控制。,7.4.1 8237A主要功能和特性,有4个独立的DMA通道,最多可直接连接4个I/O设备。对同时提出DMA请求的多个通道可进行优先级排队判优判优策略有固定优先级编码和循环优先级编码两种固定优先级顺序:通道0最高,通道l、2次之,通道3最低DMA读写周期可变通过软件与硬件结合的方法设定和改变DMA周期长度可建立起与任何I/O速度相匹配的定时关系可在存储器与I/O设备、存储器与存储器之间传送数据。存储器地址指针可以增1或减l。,操作功能比较齐全有3种操作类型:DMA读 / DMA写 /
17、数据校验有3种操作方式:单字节方式 / 字组方式 / 连续方式有两种数据传送方式:顺序传送 / 同时传送可用多个8237A芯片级联以扩充系统可用的通道数,有自动重新启动能力即具有数据块链接功能DMA操作启动由外设输入DMA请求信号而开始通过软件从内部给出DMA请求信号来启动DMA操作两种结束方式字节计数结束表示预定的数据全部传送完毕,从EOP引脚输出一个低电平指示信号将EOP作输入用,利用一个负脉冲输入,强制本次DMA操作结束。,7.4.2 8237A引脚功能,8237A共有40个引脚,每个引脚的功能如下:1CLK:时钟,输入信号。8237A为3MHz,8237A-5为5MHz。2CS#:片选
18、(chip select),输入,低电平有效。3RESET:复位(reset),输入,高电平有效。RESET有效时清除控制、状态、请求和暂存寄存器,同时也清除内部的先/后触发器和屏蔽寄存器。复位以后,8237A处于空闲周期。4READY:准备好,输入,高电平有效。用来扩展8237A的读/写脉冲,以适应慢速存储器或外设。,5A0A3:低4位地址,双向,三态。当8237A作为从模块使用时(即CPU对其编程时),它们是输入信号,作为片内口地址的选择。当8237A作为主模块使用时(即进行DMA传输时),它们是输出信号,作为DMA传输地址的低4位。6A4A7:高4位地址,输出,三态。在DMA传送期间,与
19、A0A3共同形成地址的低字节。7DB0DB7:数据线(data bus),双向,三态。当8237A作为从模块工作时,它们用来在CPU与8237A之间传送控制信息、状态信息和地址信息;当8237A作为主模块工作时,它们用来传送DMA传输地址的高字节。,8ADSTB:地址选通(address strobe),输出,高电平有效。用来把DB0DB7输出的高8位地址打入外部的地址锁存器,见8237A的编程结构和引脚图。9AEN:地址允许(address enable)输出,输出信号,高电平有效。使外部地址锁存器中的内容送到系统地址总线,与经A0A7输出的低8位地址共同形成16位传输地址。同时,AEN还使
20、与CPU相连的地址锁存器失效,禁止来自CPU的地址码送上地址总线,以保证地址总线上的信号来自DMA控制器。,10MEMR#/MEMW#:存储器读/写信号,输出,低电平有效。主态时,与IOW#和IOR#信号配合,将数据写入I/O设备,或从I/O设备读出数据。从态时这两个信号无效。11IOR#:外部设备读信号(I/O read),双向,低电平有效。当8237A作为从模块工作时,它为输入信号(来自CPU),此时,CPU用来读取8237A的内部寄存器的值。当8237A作为主模块工作时,它为输出信号(发向I/O口)。此时,将来自I/O口的数据送上系统数据总线。12IOW#:外部设备写信号(I/O wri
21、te),双向,低电平有效。当其作为输入信号时,由CPU向8237A的内部寄存器写值(编程写入)。而作为输出信号时,用来控制将数据总线上的数据写入I/O口。,13DREQ0DREQ3:通道的DMA请求(DMA request)信号,输入。这个信号来自I/O口,其有效电平的极性可通过编程来设置。在固定优先级情况下,8237A默认的优先级别是DREQ0最高,DREQ3最低。在循环优先级时,优先级可以改变。14DACK0DACK3:通道的DMA响应(DMA channel acknowledge)信号,输出。作为对DREQi的回答信号,由8237A发给I/O口;表示该通道的DMA请求已经被响应。其有效
22、电平的极性也可通过编程来设置。,15HRQ:总线保持请求(hold request),输出,由8237A发给CPU,作为系统的DMA请求信号。16HLDA:总线保持响应(hold acknowledge),输入,由CPU发给8237A,作为HRQ的响应信号。17EOP#:DMA传输结束,即过程结束(end-of-process),双向。作为输入信号时,DMA过程被强制结束。作为输出信号时,当通道计数结束时发出,表示DMA传输结束。不论什么情况,当EOP有效时,都会使8237A的内部寄存器复位,即外部信号可随时结束DMA。,7.4.3 8237A内部寄存器 (具体功能见P278),7.4.4 8237A编程步骤,按以下次序进行:(1)写入复位命令,用来清除其内部寄存器及先后触发器。(2)写入基地址和当前地址寄存器,先写入低8位,后写入高8位。(3)写入当前字节和基本字节计数器,写入值为传送的字节数减1。同样,先写入低8位,后写入高8位。(4)写入模式字。用来指定通道的工作方式。(5)写入屏蔽字。用来将相应通道的屏蔽开放。(6)写入控制字。用来设置具体的操作,启动8237A开始工作。,