《第三章端口技术.ppt》由会员分享,可在线阅读,更多相关《第三章端口技术.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 端口技术3.1 接口技术概述接口技术概述 3.2 CPU与外设之间数据传送方式与外设之间数据传送方式3.2 PLD器件在器件在I/O端口地址译码中的应用端口地址译码中的应用3.1.1 CPU与外部设备之间的接口信息与外部设备之间的接口信息CPU通过接口与外部设备的连接如图3.1所示,其中既有数据端口,又有状态端口,还有控制端口,每一个I/O端口对应一个I/O地址。从硬件角度看,端口可以理解为寄存器。数据端口可以是双向的,状态端口只作输入操作,控制端口只作输出操作。在I/O操作中,主要有三类信息:数据信息、状态信息和控制信息。3.1 接口技术概述接口技术概述 图3.1简单的外设接口数据信
2、息是CPU和I/O设备交换的基本信息,通常是8位或16位。数在输入过程中,数据信息一般是由外部设备通过接口芯片传递给系统的。数据信息由外设经过外设和接口之间的数据线进入接口,再到达系统的数据总线,然后送入CPU。在输出过程中,数据信息从CPU经过数据总线进入接口,再通过外设和接口之间的数据线,到达外设。状态信息反映了当前外设的工作状态,它是由外设通过接口送入CPU的。对于输入设备来说,用Ready信号来表示待输入的数据是否准备就绪;对于输出设备来说,用Busy信号来表示输出设备是否处于空闲状态,如空闲,则可接收CPU送来的数据信息,否则CPU等待。控制信息是CPU通过接口送给外设的。CPU通过
3、发送控制信息控制外设的工作。外设种类不同,控制信息也各不相同。接口控制信号一般可分为两类:总线控制信号和输入/输出控制信号。总线控制信号包括数据线、地址线、IOR、LOW等;输入/输出控制信号比较复杂,一般包括数据线、输入/输出应答信号等。3.1.2 输入输入/输出指令及其寻址方式输出指令及其寻址方式在微型计算机系统中,端口的编址通常有两种不同的方式,一是I/O端口与存储器单元统一编址;二是I/O端口独立编址。1.I/O端口与存储器单元统一编址端口与存储器单元统一编址所谓I/O端口与存储器单元统一编址,也称为存储器映像(MemoryMapped)I/O方式,既把每个I/O端口都当作一个存储器单
4、元看待,I/O端口与存储器单元在同一个地址空间中进行统一编址。通常,是在整个地址空间中划分出一小块连续的地址分配给I/O端口。被分配给I/O端口的地址,存储器不能再使用。内存映射与I/O映射编址如图3.2所示。图3.2内存映射与I/O映射编址(a)统一编址;(b)独立编址采用这种编址方式的微处理器有6800、6502、68000等,其优点是简化指令系统的设计,同时I/O控制信号与存储器的控制信号共用,给应用带来极大的方便,另外由于访问存储器的指令种类多、寻址方式多样化,对访问外设带来了很大的灵活性。对I/O设备可以使用功能强大且像访问存储器那样的指令,如直接对I/O数据进行运算等。统一编址的缺
5、点是外设占用了一部分内存地址空间,减少了内存可用的地址范围,对内存容量有潜在的影响。此外,从指令上不易区分当前指令是对内存进行操作还是对外设进行操作。2.I/O端口独立编址端口独立编址所谓I/O端口独立编址(I/OMapped),也称为I/O隔离编址或I/O指令寻址方式,即I/O端口地址区域和存储器地址区域,分别各自独立编址。访问I/O端口使用专门的I/O指令,而访问内存则使用MOV、ADD等指令。CPU在寻址内存和外设时,使用不同的控制信号来区分当前是对内存操作还是对I/O操作。在单CPU模式时,当前的操作是由I/O信号的电平来区别的。对于8088CPU系统,当I/O为低电平时,表示当前执行
6、的是存储器操作,地址总线上地址是某个存储单元地址;当I/O为高电平时,表示当前执行的是I/O操作,地址总线上地址是某个I/O端口的地址。这种单独编址的优点是I/O端口不占用存储器的地址空间,使用专门的I/O指令对端口进行访问,具有I/O指令短、执行速度快、译码简单的优点。缺点是专门的I/O指令功能相对较弱,一般只有传送功能,而没有运算功能。Intel80 x86CPU中,I/O端口和存储器是单独编址的,采用专用的输入/输出指令访问端口。3.输入输入/输出指令及其寻址输出指令及其寻址1)8086/8088采用的IN和OUT指令I/O指令可以采用8位(单字节)或16位(双字节)地址两种寻址方式。如
7、采用单字节作为端口地址,则最多可以有256个端口(端口地址号从00HFFH),并且是直接寻址(直接端口寻址)方式,指令格式如下:输入:INAX,Port;从Port端口输入16位数据到AXINAL,Port;从Port端口输入8位数据到AL输出:OUTPort,AX;从AX输出16位数据到Port端口OUTPort,AL;从AL输出8位数据到Port端口这里Port是一个单字节的8位地址。如用双字节地址作为端口地址,则最多可以有64K个端口(端口地址号从0000HFFFFH),并且是间接寻址方式,即把端口地址放在DX寄存器内(间接端口寻址)。其指令格式如下:输入:MOVDX,XXXXH;16位
8、地址INAX,DX;16位传送或INAL,DX;8位传送输出:MOVDX,XXXXHOUTDX,AX;16位传送或OUTDX,AL;8位传送这里XXXXH为两字节地址信息。2)80286和80386/486还支持I/O端口直接与内存之间的数据传送输入:MOVDX,PortLESDI,BufferinINSB;8位传送或INSW;16位传送输出:MOVDX,PortLDSSI,BufferoutOUTSB;8位传送或OUTSW;16位传送这里的输入与输出是直接对内存储器的RAM而言,当输入时,用ES:DI指向RAM中的目标缓冲区Bufferin;当输出时,用DS:SI,指向源缓冲区Buffero
9、ut。若在INS或OUTS指令前加上REP重复前缀时,则可以实现I/O端口与RAM上的缓冲区之间进行成批数据传送。从输入/输出指令可以看出,对于PC系列的机器,I/O端口内的数据也有8位与16位之分,通常16位数据端口地址安置在偶数地址号上,CPU在一次总线周期内就可以存取16位的数据。8位数据的端口地址可以安置在偶地址号或奇地址号上,偶地址使用数据总线D7D0传送数据,奇地址使用数据总线D15D8传送数据。表3-l列出8位或16位数据端口在奇数或偶数端口地址号上,单字节直接寻址的输入/输出指令。表表3-1 IBM-PC机上机上I/O端口地址配置端口地址配置I/O端口配置地址数据总线指令举例8
10、位偶数地址D7D0INAL,20HOUT20H,AL奇数地址D15D8INAL,21HOUT21H,AL16位偶数地址D15D0INAX,20HOUT20H,AX7.1.3 CPU的输入的输入/输出时序输出时序为了说明CPU的输入和输出时序,下面以8086为例简要介绍读写I/O端口的总线时序。1.I/O读总线周期时序读总线周期时序一般I/O设备的工作速度较慢,所以在I/O总线周期的T3和T4之间插入一个等待状态Tw,使整个周期由4个T状态变为5个。所以各个信号也都要相应地延长或推迟一个时钟周期。CPU仍是在T4状态的开始采样数据线,由于CPU只用A15A0寻址I/O端口,所以地址总线上没有A1
11、9A16的状态。其时序如图3.3所示。图3.38086I/O读写时序2.I/O写总线周期时序写总线周期时序I/O写总线周期的时序与I/O读相比,除IOR信号换成了IOW信号外,数据信号也提前产生,但仍必须保持到T4状态的上升沿之后,以便I/O端口在T4为低电平的某个时刻写入数据。3.1.4 IBMPC及现代及现代PC与外设的接口与外设的接口由于IBM-PC配置的外设比较简单,所采用的主要接口芯片有计数器/定时器电路8253,并行接口芯片8255,中断控制器8259,DMA控制器8237,串行通信控制器8250以及用于与存储器、键盘等I/O设备相接的若干缓冲器和锁存器。CPU的I/O指令可以用1
12、6位有效地址A15A0来寻址0000HFFFFH,共64KB的地址范围。IBM-PC/XT机在制造中只使用A9A010位地址来表示I/O空间,因此其I/O端口的地址为000H3FFH,共1KB。前512个地址(000H1FFH)被主板上的I/O接口使用,其余200H3FFH可以为插在扩展槽中的I/O通道使用。其端口地址分配如表3-2所示。表表3-2 IBM-PC/XT机机I/O端口地址分配端口地址分配地址(H)I/O接口系统板00000F0200210400430600630800830A00BFDMA控制器8237A-5中断控制器8259A定时/计数器8253A-5并行接口8255A-5DM
13、A页面寄存器NMI屏蔽寄存器扩展插槽20020F2102172182F72F82FF30031F32032F33037737837F38038F3903AF游戏控制接口扩展部件未用异步通信接口(COM2)试验卡硬磁盘适配器未用并行打印机SDLC同步通信适配器未用表表3-2 IBM-PC/XT机机I/O端口地址分配端口地址分配扩展插槽3B03BF3C03CF3D03DF3E03EF3F03F73F83FF单色显示/打印机适配器未用彩色显示适配器未用软磁盘适配器异步通信接口(COM1)表表3-2 IBM-PC/XT机机I/O端口地址分配端口地址分配Pentium采用大规模集成电路芯片82815GM
14、CH(通常称为北桥)与高速主存储器(SDRAM)、显示器、AGP接口。82801BAICH2(通常称为南桥)连接IDE接口(硬盘、CD-ROM等)、USB接口、音频设备、MODEM、键盘与鼠标以及接至PCI总线的扩展槽等。虽然性能有了很大提高,但从功能上仍然要实现计数、定时、串并通信和中断等功能。3.2 CPU与外设之间数据传送方式与外设之间数据传送方式3.2.1 程序控制方式程序控制方式 1.无条件传送无条件传送无条件传送是一种最简单的输入/输出控制方法,一般用于控制CPU与低速I/O接口之间的信息交换,例如,开关、继电器和速度、温度、压力、流量等变送器(即A/D转换器)。由于这些信号变化很
15、缓慢,当需要采集这些数据时,外部设备已经把数据准备就绪,无需检查端口的状态,就可以立即采集数据。数据保持时间相对于CPU的处理时间长得多。因此,输入的数据就用不着加锁存器而直接用三态缓冲器与系统总线连接。实现无条件输入的方法是:在程序的适当位置直接安排IN输入指令,当程序执行到这些指令时,外部设备的数据早已准备就绪,可以在执行当前指令时间内完成接受数据的全部过程。若外部设备是输出设备(例如LED显示器),一般要求接口有锁存能力,也就是要求CPU送给外部设备的数据,应该在输出设备接口电路中保持一段时间,这个时间的长短应该和外部设备的接受动作时间相适应。实现无条件输出的方法是在程序的适当位置安排O
16、UT输出指令,当程序执行到这些指令时,就将输出给外部设备的数据存入锁存器。无条件传送方式的工作过程:输入时,外界将数据送到缓冲器输入端(外界可以是开关、A/D转换器等),当CPU执行INAL,07H指令时,CPU首先向地址译码器送来启动信号,并把端口地址07H送到74LS138译码器输入端,译码器的作用是把端口地址转变为使其某一根输出线为有效低电平。例如,当端口地址为07H时,则使译码器的Y7为低电平。然后CPU送出IOR低电平信号,使三态缓冲器的控制端为有效电平(选此三态缓冲器)。将外部设备送来的数据送到数据总线上,并将数据打入CPU内部的通用寄存器AL中。因为,CPU执行一次数据读入,对于
17、8088来说一般只需要微秒级时间,而外界数据在缓冲器输入端保持的时间,可达秒级或几十毫秒,因此,输入数据不必锁存。而且,CPU执行INAL,07H指令时,要读入的数据早已送入缓冲器的输入端,所以可以立即读入,无需查询数据是否已准备就绪。假设端口号07H也是另一接口电路输出锁存器的入口地址,锁存器从数据总线接收数据,当出现由或门U1输出的触发锁存器的触发脉冲时,就将它的输出数据锁存入锁存器,并通过其输出端送给外部设备。所以,当需要向07H号端口输出数据时,可在程序中插入一条输出指令OUT07H,AL。当CPU执行这条指令时,它把AL的内容送上数据总线,并把端口地址07H和启动信号送入译码器。译码
18、器译码后使Y7为有效低电平,同时LOW也为有效低电平(此时IOR为高电平),由或门U1输出触发脉冲时,就将数据总线上的数据存入锁存器,CPU执行OUT07H,AL指令时,AL中的数据在数据总线上停留的时间也只有微秒级,所以,输出数据必须通过存器锁存。也就是要求输出的数据,应该在输出接口电路的输出端保持一段时间,这个时间的长短,应该和外部接受设备的动作时间相适应。当CPU再次执行OUT07H,AL指令时,AL中新的数据会取代原锁存器中的内容。无条件传送方式的接口电路和控制程序都比较简单。需要注意的是,输入时,当CPU执行IN指令时,要确保输入的数据已经准备好,否则,就可能读入不正确的数据;在输出
19、时,当CPU执行OUT指令时,需确保外部设备已将上次送来的数据取走,它就可以接收新的数据了,否则,会发生数据“冲突”。无条件传送控制方式,一般用于定时已知或数据变化十分缓慢的外部设备。2.有条件传送有条件传送有条件传送方式又称为程序查询方式。这种传送方式在接口电路中,除具有数据缓冲器或数据锁存器外,还应具有外设状态标志位,用来反映外部设备数据的情况。比如,在输入时,若数据已准备好,则将该标志位置位;输出时,若数据已空(数据已被取走),则将标志位置位。在接口电路中,状态寄存器也占用端口地址号。使用有条件传送方式控制数据的输入/输出,通常要按图3.4的流程进行。即首先读入设备状态标志信息,再根据所
20、读入的状态信息进行判断,若设备未准备就绪,则程序转移去执行某种操作,或循环回去重新执行读入设备状态信息;若设备准备好,则执行完成数据传送的I/O指令。数据传送结束后,CPU转去执行其他任务,刚才所操纵的设备脱离CPU控制。图3.4条件传送示意图有条件传送的优点是:能较好地协调外设与CPU之间的定时关系;缺点是:CPU需要不断查询标志位的状态,这将占用CPU较多的时间,尤其是与中速或慢速的外部设备交换信息时,CPU真正花费在传送数据上的时间极少,绝大部分时间都消耗在查询上。为克服这一缺点,可以采用中断控制方式。3.2.2 中断控制方式中断控制方式有条件传送的缺点除了占用CPU较多的工作时间外,还
21、难以满足实时控制系统对I/O工作的要求。因为在查询方式中,CPU处于主动地位,而外设接口处于消极被查询的被动地位。而在一般实时控制系统中,外设要求CPU为它服务是随机的,而且支持系统的外设往往有几个甚至几十个,若采用查询方式工作,很难实现系统中每一个外设都工作在最佳工作状态。所谓工作在最佳状态,是指一旦某个外设请求CPU为它服务时,CPU应该以最快的速度响应其请求。这就要求系统中的外设,具有主动申请CPU为其服务的权利。比如,当某个A/D转换器的模拟量已转换为数字量后,这时它就可以立刻向CPU发出中断请求,CPU暂时中止处理当前的事务,而转去执行优先的中断服务程序,输入A/D转换器的数字量数据
22、。微型计算机都具有中断控制的能力,8086/8088CPU的中断结构灵活,功能很强。所以,微机系统采用中断控制I/O方式是很方便的。CPU执行完每一条指令后,都会去查询外部是否有中断请求,若有,就暂停执行现行的程序,转去执行中断服务程序,完成传送数据的任务。当然,在一个具有多个外设的系统中,在同一时刻就往往不止一个外设提出中断请求,这就引入了所谓中断优先权管理和中断嵌套等问题(有关中断的详细讨论参见第五章)。3.2.3 直接存储器存取直接存储器存取(DMA)控制方式控制方式采用中断方式,信息的传送是依靠CPU执行中断服务程序来完成的,所以,每进行一次I/O操作,都需要CPU暂停执行当前程序,把
23、控制转移到优先权最高的I/O程序。在中断服务程序中,需要有保护现场和恢复现场的操作,而且I/O操作都是通过CPU来进行的。当从存储器输出数据时,首先需要CPU执行传送指令,将存储器中的数据,读入CPU中的通用寄存器AL(对于字节数据)或AX(对于字数据),然后,执行OUT指令,把数据由通用寄存器AL或AX传送到I/O端口;当从I/O端口向存储器存入数据时,过程正相反。CPU执行IN指令时,将I/O端口数据读入通用寄存器AL或AX,然后CPU执行传送指令,将AL或AX的内容存入存储器单元。这样,每次I/O操作都需要几十甚至几百微秒,对于一些高速外设,如高速磁盘控制器或高速数据采集系统,中断控制方
24、式往往满足不了它们的需要。为此,提出了数据在I/O接口与存储器之间的传送,不经CPU的干预,而是在专用硬件电路的控制下直接传送。这种方法称为直接存储器存取(DirectMemoryAccess,缩写为DMA)。为实现这种工作方式而设计的专用接口电路,称为DMA控制器(DMAC)。例如,Intel公司的8257、8237,Zilog公司的Z8410(Z80DMAC),Motorola公司的MC6844等,都是能实现DMA方式的可编程DMAC芯片。用DMA方式传送数据时,在存储器和外部设备之间,直接开辟高速的数据传送通路。数据传送过程不要CPU介入,只用一个总线周期,就能完成存储器和外部设备之间的
25、数据传送。因此,数据传送速度仅受存储器的存取速度和外部设备传输特性的限制。DMA的工作过程大致如下:(1)当外设准备好,可以进行DMA传送时,外设向DMA控制器发出DMA传送请求信号(DRQ)。(2)DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,申请占用总线。(3)CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个方面,一是CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。另一方面,CPU向DMA控制器发出“总线响应”信号(HLDA)。(4)DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK。(5
26、)DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送。例如,在地址总线上发出存储器的地址,向存储器发出写信号MEMW,同时向外设发出I/O地址、IOR和AEN信号,即可从外设向内存传送一个字节。(6)DMA控制器自动修改地址和字节计数器,并据此判断是否需要重复传送操作。规定的数据传送完后,DMA控制器就撤消发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤消HLDA信号,并在下一时钟周期重新开始控制总线时,继续执行原来的程序。DMA方式在传送路径和程序控制下数据传送的途径不同。程序控制下数据传送的途径必须经过CPU,而采用DMA方式传送数据不需要
27、经过CPU。另外,程序控制下数据传送的源地址、目的地址是由CPU提供的,地址的修改和数据块长的控制也必须由CPU承担,数据传送的控制信号也是由CPU发出的。而DMA方式传送数据,则由DMA控制器提供源地址和目的地址,而且修改地址、控制传送操作的结束和发出传送控制信号也都由DMAC承担,即DMA传送数据方式是一种由硬件代替软件的方法,因而提高了数据传送的速度,缩短了数据传送的响应时间。因为DMA方式控制数据传送不需要CPU介入,即不利用CPU内部寄存器,因此,DMA方式不像中断方式控制下的数据传送,需要等一条指令执行结束才能进行中断响应,只要执行指令的某个机器周期结束,就可以响应DMA请求。另外
28、,DMA既然不利用CPU内部设备来控制数据传送,因此,响应DMA请求,进入DMA方式时就不必保护CPU的现场。采用中断控制的数据传送,进入中断服务(传送数据)之前,必须保护现场状态,这会大大延迟响应时间。因此,采用DMA控制数据传送的另一个优点是,缩短数据传送的响应时间。所以,一般要求响应时间在微秒以下的场合,通常采用DMA方式。当然用DMA控制传送也存在一些问题,因为采用这种方式传送数据时,DMAC取代CPU控制了系统总线,即CPU要把对总线的控制权让给DMAC。所以,当DMA控制总线时,CPU不能读取指令。另外,若系统使用的是动态存储器,而且是由CPU负责管理动态存储器的刷新,则在DMA操
29、作期间,存储器的刷新将会停止。而且,当DMAC占用总线时,CPU不能去检测和响应来自系统中其他设备的中断请求。DMA传送也存在以下两个额外开销源:第一个额外开销是总线访问时间,由于DMAC要同CPU和其他可能的总线主控设备争用对系统总线的控制权,因此,必须有一些规则来解决争用总线控制权的问题,这些规则一般是用硬件实现排队的,但是排队过程也要花费时间;第二个额外开销是对DMAC的初始化,一般情况下,CPU要对DMAC写入一些控制字,因此,DMAC的初始化建立,比程序控制数据传送的初始化,可能要花费较多时间。所以,对于数据块很短或要频繁地对DMAC重新编程初始化的情况下,可能就不宜采用DMA传送方
30、式。此外,DMA控制数据传送是用硬件控制代替CPU执行程序来实现的。所以它必然会增加硬件的投资,提高系统的成本。因此,只要CPU来得及处理数据传送,就不必采用DMA方式。DMA主要适用以下几种场合:(1)硬盘和软盘I/O。可以使用DMAC作磁盘存储介质与半导体主存储器之间传送数据的接口。这种场合需要将磁盘中的大量数据(如磁盘操作系统等)快速地装入内部存储器。(2)快速通信通道I/O。例如,光导纤维通信链路,DMAC可以用来作为计算机系统和快速通信通道之间的接口,可作为同步通信数据的发送和接收,以便提高响应时间,支持较高的数据传输速率,并使CPU脱出来做其他工作。(3)多处理机和多程序数据块传送
31、。对于多处理机结构,通过DMAC控制数据传送,可以较容易地实现专用存储器和公用存储器之间的数据传送,对多任务应用、页式调度和任务调度都需要传送大量的数据。因此,采用DMA方式可以提高数据传输速度。(4)扫描操作。在图像处理中,对CRT屏幕送数据,也可以采用DMA方式。(5)快速数据采集。当要采集的数据量很大,而且数据是以密集突发的形式出现,例如,对波形的采集,此时采用DMA方式可能是最好的方法,它能满足响应时间和数据传输速率的要求。(6)在PC/XT机中还采用DMA方式进行DRAM的刷新操作。DMA工作过程波形如图3.5所示。图3.5DMA工作波形3.2.4 I/O处理机方式处理机方式8089
32、是专门用来处理输入/输出的协处理器。它共有52条指令、lMB寻址能力和两个独立的DMA通道。当8086/8088加上8089组成系统后,8089能代替8086/8088,以通道控制方式管理各种I/O设备。以通道控制方式管理I/O设备,目前只有在大中型计算机中才普遍使用,因此,8089为微机的输入/输出系统设计带来换代性的变化。一般情况下,通过接口电路控制I/O外设,必须依靠CPU的支持,对于非DMA方式,从外部设备每读入一个字节或发送给外部设备一个字节,都必须由CPU执行指令来完成。虽然高速设备可以用DMA传送数据,但仍然需要CPU对DMAC进行初始化,启动DMA操作,以及完成每次DMA操作之
33、后都要检查传送的状态。对I/O数据的处理,如对数据的变换、拆、装、检查等,更加需要CPU支持,CPU控制I/O如图3.6(a)所示。从图中不难看出,普通I/O接口,不管是DMA方式还是非DMA方式,在I/O传送过程都要占去CPU的开销。8089是一个智能控制器,它可以取出和执行指令,除了控制数据传送外,还可以执行算术和逻辑运算、转移、搜索和转换。当CPU需要进行I/O操作时,它只要在存储器中建立一个信息块,将所需要的操作和有关参数按照规定列入,然后通知8089前来读取。8089读得操作控制信息后,能自动完成全部的I/O操作。因此,对配合8089的CPU来说,所有输入/输出的操作过程中,数据都是以块为单位成批发送或接收的,而把一块数据按字或字节与I/O设备(如CRT终端,行式打印机)交换都由8089来完成,当8089控制数据交换时,CPU可以并行处理其他操作。由于引入8089来承担原来必须由CPU承担的I/O操作,这就大大地减轻了CPU控制外设的负担,有效地减少了CPU在I/O处理中的开销。8089控制I/O如图3.6(b)所示。图3.68086、8089控制I/O(a)8086控制I/O;(b)8089控制I/O
限制150内