![第6章基本输入和输出接口_第1页](http://file4.renrendoc.com/view/2dc5c7231ad72e1e9f30c23a4322b0f4/2dc5c7231ad72e1e9f30c23a4322b0f41.gif)
![第6章基本输入和输出接口_第2页](http://file4.renrendoc.com/view/2dc5c7231ad72e1e9f30c23a4322b0f4/2dc5c7231ad72e1e9f30c23a4322b0f42.gif)
![第6章基本输入和输出接口_第3页](http://file4.renrendoc.com/view/2dc5c7231ad72e1e9f30c23a4322b0f4/2dc5c7231ad72e1e9f30c23a4322b0f43.gif)
![第6章基本输入和输出接口_第4页](http://file4.renrendoc.com/view/2dc5c7231ad72e1e9f30c23a4322b0f4/2dc5c7231ad72e1e9f30c23a4322b0f44.gif)
![第6章基本输入和输出接口_第5页](http://file4.renrendoc.com/view/2dc5c7231ad72e1e9f30c23a4322b0f4/2dc5c7231ad72e1e9f30c23a4322b0f45.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章基本输入输出接口6.1接口技术概述6.2CPU与外设之间数据传送方式6.3DMA控制器6.1.1CPU与外部设备之间的接口信息
CPU通过接口与外部设备的连接如图6.1所示,其中既有数据端口,又有状态端口,还有控制端口,每一个I/O端口对应一个I/O地址。从硬件角度看,端口可以理解为寄存器。数据端口可以是双向的,状态端口只作输入操作,控制端口只作输出操作。在I/O操作中,主要有三类信息:数据信息、状态信息和控制信息。6.1接口技术概述图6.1简单的外设接口数据信息是CPU和I/O设备交换的基本信息,通常是8位或16位。数在输入过程中,数据信息一般是由外部设备通过接口芯片传递给系统的。数据信息由外设经过外设和接口之间的数据线进入接口,再到达系统的数据总线,然后送入CPU。在输出过程中,数据信息从CPU经过数据总线进入接口,再通过外设和接口之间的数据线,到达外设。状态信息反映了当前外设的工作状态,它是由外设通过接口送入CPU的。对于输入设备来说,用Ready信号来表示待输入的数据是否准备就绪;对于输出设备来说,用Busy信号来表示输出设备是否处于空闲状态,如空闲,则可接收CPU送来的数据信息,否则CPU等待。控制信息是CPU通过接口送给外设的。CPU通过发送控制信息控制外设的工作。外设种类不同,控制信息也各不相同。接口控制信号一般可分为两类:总线控制信号和输入/输出控制信号。总线控制信号包括数据线、地址线、IOR、LOW等;输入/输出控制信号比较复杂,一般包括数据线、输入/输出应答信号等。6.1.2输入/输出指令及其寻址方式在微型计算机系统中,端口的编址通常有两种不同的方式,一是I/O端口与存储器单元统一编址;二是I/O端口独立编址。
1.I/O端口与存储器单元统一编址所谓I/O端口与存储器单元统一编址,也称为存储器映像(MemoryMapped)I/O方式,既把每个I/O端口都当作一个存储器单元看待,I/O端口与存储器单元在同一个地址空间中进行统一编址。通常,是在整个地址空间中划分出一小块连续的地址分配给I/O端口。被分配给I/O端口的地址,存储器不能再使用。内存映射与I/O映射编址如图6.2所示。图6.2内存映射与I/O映射编址(a)统一编址;(b)独立编址采用这种编址方式的微处理器有6800、6502、68000等,其优点是简化指令系统的设计,同时I/O控制信号与存储器的控制信号共用,给应用带来极大的方便,另外由于访问存储器的指令种类多、寻址方式多样化,对访问外设带来了很大的灵活性。对I/O设备可以使用功能强大且像访问存储器那样的指令,如直接对I/O数据进行运算等。统一编址的缺点是外设占用了一部分内存地址空间,减少了内存可用的地址范围,对内存容量有潜在的影响。此外,从指令上不易区分当前指令是对内存进行操作还是对外设进行操作。
2.I/O端口独立编址所谓I/O端口独立编址(I/OMapped),也称为I/O隔离编址或I/O指令寻址方式,即I/O端口地址区域和存储器地址区域,分别各自独立编址。访问I/O端口使用专门的I/O指令,而访问内存则使用MOV、ADD等指令。CPU在寻址内存和外设时,使用不同的控制信号来区分当前是对内存操作还是对I/O操作。在单CPU模式时,当前的操作是由IO/信号的电平来区别的。对于8088CPU系统,当IO/为低电平时,表示当前执行的是存储器操作,地址总线上地址是某个存储单元地址;当IO/为高电平时,表示当前执行的是I/O操作,地址总线上地址是某个I/O端口的地址。在多CPU模式时,若访问存储器,则使MEMW或MEMR信号有效;而访问I/O端口时,则使或信号有效。这种单独编址的优点是I/O端口不占用存储器的地址空间,使用专门的I/O指令对端口进行访问,具有I/O指令短、执行速度快、译码简单的优点。缺点是专门的I/O指令功能相对较弱,一般只有传送功能,而没有运算功能。Intel80x86CPU中,I/O端口和存储器是单独编址的,采用专用的输入/输出指令访问端口。
3.输入/输出指令及其寻址1)8086/8088采用的IN和OUT指令
I/O指令可以采用8位(单字节)或16位(双字节)地址两种寻址方式。如采用单字节作为端口地址,则最多可以有256个端口(端口地址号从00H~FFH),并且是直接寻址(直接端口寻址)方式,指令格式如下:输入: IN AX,Port ;从Port端口输入16位数据到AX IN AL,Port ;从Port端口输入8位数据到AL输出: OUT Port,AX ;从AX输出16位数据到Port端口
OUT Port,AL ;从AL输出8位数据到Port端口这里Port是一个单字节的8位地址。如用双字节地址作为端口地址,则最多可以有64K个端口(端口地址号从0000H~FFFFH),并且是间接寻址方式,即把端口地址放在DX寄存器内(间接端口寻址)。其指令格式如下:输入: MOV DX,XXXXH ;16位地址
IN AX,DX ;16位传送或 IN AL,DX ;8位传送输出: MOV DX,XXXXH OUT DX,AX ;16位传送或 OUT DX,AL ;8位传送这里XXXXH为两字节地址信息。2)80286和80386/486还支持I/O端口直接与内存之间的数据传送输入: MOV DX,Port LES DI,Bufferin
INSB
;8位传送或 INSW ;16位传送输出: MOV DX,Port LDS SI,Bufferout
OUTSB ;8位传送或 OUTSW ;16位传送这里的输入与输出是直接对内存储器的RAM而言,当输入时,用ES:DI指向RAM中的目标缓冲区Bufferin;当输出时,用DS:SI,指向源缓冲区Bufferout。若在INS或OUTS指令前加上REP重复前缀时,则可以实现I/O端口与RAM上的缓冲区之间进行成批数据传送。从输入/输出指令可以看出,对于PC系列的机器,I/O端口内的数据也有8位与16位之分,通常16位数据端口地址安置在偶数地址号上,CPU在一次总线周期内就可以存取16位的数据。8位数据的端口地址可以安置在偶地址号或奇地址号上,偶地址使用数据总线D7~D0传送数据,奇地址使用数据总线D15~D8传送数据。表6-l列出8位或16位数据端口在奇数或偶数端口地址号上,单字节直接寻址的输入/输出指令。表6-1IBM-PC机上I/O端口地址配置I/O端口配置地址数据总线指令举例8位偶数地址D7~D0INAL,20HOUT20H,AL奇数地址D15~D8INAL,21HOUT21H,AL16位偶数地址D15~D0INAX,20HOUT20H,AX6.2CPU与外设之间数据传送方式6.2.1程序控制方式1.无条件传送无条件传送是一种最简单的输入/输出控制方法,一般用于控制CPU与低速I/O接口之间的信息交换,例如,开关、继电器和速度、温度、压力、流量等变送器(即A/D转换器)。由于这些信号变化很缓慢,当需要采集这些数据时,外部设备已经把数据准备就绪,无需检查端口的状态,就可以立即采集数据。数据保持时间相对于CPU的处理时间长得多。因此,输入的数据就用不着加锁存器而直接用三态缓冲器与系统总线连接。实现无条件输入的方法是:在程序的适当位置直接安排IN输入指令,当程序执行到这些指令时,外部设备的数据早已准备就绪,可以在执行当前指令时间内完成接受数据的全部过程。若外部设备是输出设备(例如LED显示器),一般要求接口有锁存能力,也就是要求CPU送给外部设备的数据,应该在输出设备接口电路中保持一段时间,这个时间的长短应该和外部设备的接受动作时间相适应。实现无条件输出的方法是在程序的适当位置安排OUT输出指令,当程序执行到这些指令时,就将输出给外部设备的数据存入锁存器。无条件传送方式的工作过程:输入时,外界将数据送到缓冲器输入端(外界可以是开关、A/D转换器等),当CPU执行INAL,07H指令时,CPU首先向地址译码器送来启动信号,并把端口地址07H送到74LS138译码器输入端,译码器的作用是把端口地址转变为使其某一根输出线为有效低电平。例如,当端口地址为07H时,则使译码器的Y7为低电平。然后CPU送出IOR低电平信号,使三态缓冲器的控制端为有效电平(选此三态缓冲器)。将外部设备送来的数据送到数据总线上,并将数据打入CPU内部的通用寄存器AL中。因为,CPU执行一次数据读入,对于8088来说一般只需要微秒级时间,而外界数据在缓冲器输入端保持的时间,可达秒级或几十毫秒,因此,输入数据不必锁存。而且,CPU执行INAL,07H指令时,要读入的数据早已送入缓冲器的输入端,所以可以立即读入,无需查询数据是否已准备就绪。假设端口号07H也是另一接口电路输出锁存器的入口地址,锁存器从数据总线接收数据,当出现由或门U1输出的触发锁存器的触发脉冲时,就将它的输出数据锁存入锁存器,并通过其输出端送给外部设备。所以,当需要向07H号端口输出数据时,可在程序中插入一条输出指令OUT07H,AL。当CPU执行这条指令时,它把AL的内容送上数据总线,并把端口地址07H和启动信号送入译码器。译码器译码后使Y7为有效低电平,同时LOW也为有效低电平(此时IOR为高电平),由或门U1输出触发脉冲时,就将数据总线上的数据存入锁存器,CPU执行OUT07H,AL指令时,AL中的数据在数据总线上停留的时间也只有微秒级,所以,输出数据必须通过存器锁存。也就是要求输出的数据,应该在输出接口电路的输出端保持一段时间,这个时间的长短,应该和外部接受设备的动作时间相适应。当CPU再次执行OUT07H,AL指令时,AL中新的数据会取代原锁存器中的内容。无条件传送方式的接口电路和控制程序都比较简单。需要注意的是,输入时,当CPU执行IN指令时,要确保输入的数据已经准备好,否则,就可能读入不正确的数据;在输出时,当CPU执行OUT指令时,需确保外部设备已将上次送来的数据取走,它就可以接收新的数据了,否则,会发生数据“冲突”。无条件传送控制方式,一般用于定时已知或数据变化十分缓慢的外部设备。
2.有条件传送有条件传送方式又称为程序查询方式。这种传送方式在接口电路中,除具有数据缓冲器或数据锁存器外,还应具有外设状态标志位,用来反映外部设备数据的情况。比如,在输入时,若数据已准备好,则将该标志位置位;输出时,若数据已空(数据已被取走),则将标志位置位。在接口电路中,状态寄存器也占用端口地址号。使用有条件传送方式控制数据的输入/输出,通常要按图6.4的流程进行。即首先读入设备状态标志信息,再根据所读入的状态信息进行判断,若设备未准备就绪,则程序转移去执行某种操作,或循环回去重新执行读入设备状态信息;若设备准备好,则执行完成数据传送的I/O指令。数据传送结束后,CPU转去执行其他任务,刚才所操纵的设备脱离CPU控制。图6.4条件传送示意图有条件传送的优点是:能较好地协调外设与CPU之间的定时关系;缺点是:CPU需要不断查询标志位的状态,这将占用CPU较多的时间,尤其是与中速或慢速的外部设备交换信息时,CPU真正花费在传送数据上的时间极少,绝大部分时间都消耗在查询上。为克服这一缺点,可以采用中断控制方式。6.2.2中断控制方式有条件传送的缺点除了占用CPU较多的工作时间外,还难以满足实时控制系统对I/O工作的要求。因为在查询方式中,CPU处于主动地位,而外设接口处于消极被查询的被动地位。而在一般实时控制系统中,外设要求CPU为它服务是随机的,而且支持系统的外设往往有几个甚至几十个,若采用查询方式工作,很难实现系统中每一个外设都工作在最佳工作状态。所谓工作在最佳状态,是指一旦某个外设请求CPU为它服务时,CPU应该以最快的速度响应其请求。这就要求系统中的外设,具有主动申请CPU为其服务的权利。比如,当某个A/D转换器的模拟量已转换为数字量后,这时它就可以立刻向CPU发出中断请求,CPU暂时中止处理当前的事务,而转去执行优先的中断服务程序,输入A/D转换器的数字量数据。微型计算机都具有中断控制的能力,8086/8088CPU的中断结构灵活,功能很强。所以,微机系统采用中断控制I/O方式是很方便的。CPU执行完每一条指令后,都会去查询外部是否有中断请求,若有,就暂停执行现行的程序,转去执行中断服务程序,完成传送数据的任务。当然,在一个具有多个外设的系统中,在同一时刻就往往不止一个外设提出中断请求,这就引入了所谓中断优先权管理和中断嵌套等问题(有关中断的详细讨论参见第8章)。6.2.3直接存储器存取(DMA)控制方式采用中断方式,信息的传送是依靠CPU执行中断服务程序来完成的,所以,每进行一次I/O操作,都需要CPU暂停执行当前程序,把控制转移到优先权最高的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操作都需要几十甚至几百微秒,对于一些高速外设,如高速磁盘控制器或高速数据采集系统,中断控制方式往往满足不了它们的需要。为此,提出了数据在I/O接口与存储器之间的传送,不经CPU的干预,而是在专用硬件电路的控制下直接传送。这种方法称为直接存储器存取(DirectMemoryAccess,缩写为DMA)。为实现这种工作方式而设计的专用接口电路,称为DMA控制器(DMAC)。例如,Intel公司的8257、8237,Zilog公司的Z8410(Z80DMAC),Motorola公司的MC6844等,都是能实现DMA方式的可编程DMAC芯片。用DMA方式传送数据时,在存储器和外部设备之间,直接开辟高速的数据传送通路。数据传送过程不要CPU介入,只用一个总线周期,就能完成存储器和外部设备之间的数据传送。因此,数据传送速度仅受存储器的存取速度和外部设备传输特性的限制。
DMA的工作过程大致如下:(1)当外设准备好,可以进行DMA传送时,外设向DMA控制器发出DMA传送请求信号(DRQ)。(2)DMA控制器收到请求后,向CPU发出“总线请求”信号HOLD,申请占用总线。(3)CPU在完成当前总线周期后会立即对HOLD信号进行响应。响应包括两个方面,一是CPU将数据总线、地址总线和相应的控制信号线均置为高阻态,由此放弃对总线的控制权。另一方面,CPU向DMA控制器发出“总线响应”信号(HLDA)。(4)DMA控制器收到HLDA信号后,就开始控制总线,并向外设发出DMA响应信号DACK。(5)DMA控制器送出地址信号和相应的控制信号,实现外设与内存或内存与内存之间的直接数据传送。例如,在地址总线上发出存储器的地址,向存储器发出写信号MEMW,同时向外设发出I/O地址、IOR和AEN信号,即可从外设向内存传送一个字节。(6)DMA控制器自动修改地址和字节计数器,并据此判断是否需要重复传送操作。规定的数据传送完后,DMA控制器就撤消发往CPU的HOLD信号。CPU检测到HOLD失效后,紧接着撤消HLDA信号,并在下一时钟周期重新开始控制总线时,继续执行原来的程序。
DMA方式在传送路径和程序控制下数据传送的途径不同。程序控制下数据传送的途径必须经过CPU,而采用DMA方式传送数据不需要经过CPU。另外,程序控制下数据传送的源地址、目的地址是由CPU提供的,地址的修改和数据块长的控制也必须由CPU承担,数据传送的控制信号也是由CPU发出的。而DMA方式传送数据,则由DMA控制器提供源地址和目的地址,而且修改地址、控制传送操作的结束和发出传送控制信号也都由DMAC承担,即DMA传送数据方式是一种由硬件代替软件的方法,因而提高了数据传送的速度,缩短了数据传送的响应时间。因为DMA方式控制数据传送不需要CPU介入,即不利用CPU内部寄存器,因此,DMA方式不像中断方式控制下的数据传送,需要等一条指令执行结束才能进行中断响应,只要执行指令的某个机器周期结束,就可以响应DMA请求。另外,DMA既然不利用CPU内部设备来控制数据传送,因此,响应DMA请求,进入DMA方式时就不必保护CPU的现场。采用中断控制的数据传送,进入中断服务(传送数据)之前,必须保护现场状态,这会大大延迟响应时间。因此,采用DMA控制数据传送的另一个优点是,缩短数据传送的响应时间。所以,一般要求响应时间在微秒以下的场合,通常采用DMA方式。当然用DMA控制传送也存在一些问题,因为采用这种方式传送数据时,DMAC取代CPU控制了系统总线,即CPU要把对总线的控制权让给DMAC。所以,当DMA控制总线时,CPU不能读取指令。另外,若系统使用的是动态存储器,而且是由CPU负责管理动态存储器的刷新,则在DMA操作期间,存储器的刷新将会停止。而且,当DMAC占用总线时,CPU不能去检测和响应来自系统中其他设备的中断请求。
DMA传送也存在以下两个额外开销源:第一个额外开销是总线访问时间,由于DMAC要同CPU和其他可能的总线主控设备争用对系统总线的控制权,因此,必须有一些规则来解决争用总线控制权的问题,这些规则一般是用硬件实现排队的,但是排队过程也要花费时间;第二个额外开销是对DMAC的初始化,一般情况下,CPU要对DMAC写入一些控制字,因此,DMAC的初始化建立,比程序控制数据传送的初始化,可能要花费较多时间。所以,对于数据块很短或要频繁地对DMAC重新编程初始化的情况下,可能就不宜采用DMA传送方式。此外,DMA控制数据传送是用硬件控制代替CPU执行程序来实现的。所以它必然会增加硬件的投资,提高系统的成本。因此,只要CPU来得及处理数据传送,就不必采用DMA方式。DMA主要适用以下几种场合:(1)硬盘和软盘I/O。可以使用DMAC作磁盘存储介质与半导体主存储器之间传送数据的接口。这种场合需要将磁盘中的大量数据(如磁盘操作系统等)快速地装入内部存储器。(2)快速通信通道I/O。例如,光导纤维通信链路,DMAC可以用来作为计算机系统和快速通信通道之间的接口,可作为同步通信数据的发送和接收,以便提高响应时间,支持较高的数据传输速率,并使CPU脱出来做其他工作。(3)多处理机和多程序数据块传送。对于多处理机结构,通过DMAC控制数据传送,可以较容易地实现专用存储器和公用存储器之间的数据传送,对多任务应用、页式调度和任务调度都需要传送大量的数据。因此,采用DMA方式可以提高数据传输速度。(4)扫描操作。在图像处理中,对CRT屏幕送数据,也可以采用DMA方式。(5)快速数据采集。当要采集的数据量很大,而且数据是以密集突发的形式出现,例如,对波形的采集,此时采用DMA方式可能是最好的方法,它能满足响应时间和数据传输速率的要求。(6)在PC/XT机中还采用DMA方式进行DRAM的刷新操作。。6.2.4I/O处理机方式8089是专门用来处理输入/输出的协处理器。它共有52条指令、lMB寻址能力和两个独立的DMA通道。当8086/8088加上8089组成系统后,8089能代替8086/8088,以通道控制方式管理各种I/O设备。以通道控制方式管理I/O设备,目前只有在大中型计算机中才普遍使用,因此,8089为微机的输入/输出系统设计带来换代性的变化。一般情况下,通过接口电路控制I/O外设,必须依靠CPU的支持,对于非DMA方式,从外部设备每读入一个字节或发送给外部设备一个字节,都必须由CPU执行指令来完成。虽然高速设备可以用DMA传送数据,但仍然需要CPU对DMAC进行初始化,启动DMA操作,以及完成每次DMA操作之后都要检查传送的状态。对I/O数据的处理,如对数据的变换、拆、装、检查等,更加需要CPU支持。普通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处理中的开销。6.3DMA控制器6.3.1DMA控制器的功能通用的DMA控制器应具有以下功能:(1)编程设定DMA的传输模式及其所访问内存的地址区域。(2)屏蔽或接受外部设备的DMA请求(DREQ)。当有多个设备同时请求时,还要进行优先级排队,首先接受最高级的请求。(3)向CPU转达DMA请求。DMA控制器要向CPU发出总线请求信号HOLD(高电平有效),请求CPU放弃总线的控制。(4)接收CPU的总线响应信号(HLDA)。接管总线控制权,实现对总线的控制。(5)向相应外部设备转达DMA允许信号DACK。于是在DMA控制器的管理下,实现外部设备和存储器之间的数据直接传送。(6)在传送过程中进行地址修改和字节计数。在传送完要求的字节数后,向CPU发出DMA结束信号(EOP),撤消总线请求(HRQ),将总线控制权交还给CPU。DMA控制器一方面可以接管总线,直接在其他I/O接口和存储器之间进行读写操作,就像CPU一样成为总线的主控器件,这是有别于其他I/O控制器的根本不同之处。另一方面,作为一个可编程I/O器件,其DMA控制功能正是通过初始化编程来设置的。当CPU用I/O指令对DMA控制器写入或者读出时,它又和其他I/O电路一样成为总线的从属部件。6.3.2可编程DMA控制器Intel8237DMAC的主要性能和内部结构8237DMAC是Intel8080、8085、8086、8088系列通用的,一种高性能可编程DMA控制器芯片,它的性能如下:(1)使用单一的+5V电源、单相时钟、40条引脚、双列直插式封装。时钟频率为3~5MHz,最高速率可达1.6MB/s。(2)具有四个独立的通道。可以采用级联方式扩充用户所需要的通道,每个通道都具有16位地址寄存器和16位字节计数器。(3)用户通过编程,可以在四种操作类型和四种传送方式之中任选一种。(4)每个通道都具有独立的允许/禁止DMA请求的控制。所有通道都具有独立的自动重置原始状态和参数的能力。(5)有增1和减1自动修改地址的能力。(6)具有固定优先权和循环优先权两种优先权排序的优先权控制逻辑。(7)每个通道都有软件的DMA请求。还各有一对联络信号线(通道请求信号DREQ和响应信号DACK),而且DREQ和DACK信号的有效电平可以通过编程来设定。(8)具有终止DMA传送的外部信号输入引脚,外部通过此引脚输入有效低电平的过程终止信号EOP,可以终止正在执行的DMA操作。每个通道在结束DMA传送后,会产生过程终止信号EOP输出,可以用它作为中断请求信号输出。8237A的内部寄存器的类型和数量如表6-3所示。表6-38237A内部寄存器寄存器名容量数量寄存器名容量数量基地址寄存器基字节计数器当前地址寄存器当前字节计数器状态寄存器16位16位16位16位8位44441命令寄存器暂时寄存器模式寄存器屏蔽寄存器请求寄存器8位8位6位4位4位114118237A由I/O缓冲器、时序和控制逻辑、优先级编码器和循环优先级逻辑、命令控制逻辑和内部寄存器组五部分组成,如图6.7所示。其中图(a)是8237A内部结构框图,图(b)是四通道示意图。通道部分只画出了一个通道的情况,即每个通道都有一个基地址寄存器、基字节数寄存器、当前地址寄存器和当前字节数寄存器(16位),每一个通道都有一个6位的模式寄存器以控制不同的工作模式。图6.78237A结构(a)内部结构框图;(b)四通道示意框图图6.78237A结构(a)内部结构框图;(b)四通道示意框图6.3.38237的引脚和时序图6.88237引脚引脚的功能定义如下:
CLK(Clock):时钟输入,用来控制8237内部操作定时和DMA传送时的数据传送速率。
CS(ChipSelect):片选输入,低电平有效。在CPU控制总线时,即8237在受控方式下,当CS有效时,选中该8237作为I/O设备,而当CPU向8237写入编程控制字时,它开启I/O写输入;当CPU从8237读回状态字,或当前地址、当前字节计数器内容时,它开启I/O读输入。在DMA控制总线时,自动禁止CS输入,以防止DMA操作期间该器件选中自己。
RESET:复位输入,高电平有效。RESET有效时,会清除命令、状态、请求和暂存寄存器,并清除字节指示器和置位屏蔽寄存器。复位后,8237处于空闲周期,它的所有控制线都处于高阻状态,并且禁止所有通道的DMA操作。复位之后必须重新对8237初始化,它才能进入DMA操作。
READY:准备好输入信号。当选用的存储器或I/O设备速度比较慢时,可用这个异步输入信号使存储器或I/O读写周期插入等待状态,以延长8237传送的读/写脉冲(IOR,LOW,EMMR和MEMW)。HRQ(HoldRequest):请求占有信号,输出,高电平有效。在仅有一块8237的系统中,HRQ通常接到CPU的HOLD引脚,用来向CPU请求对系统总线的控制权。如果通道的相应屏蔽位被清除,也就是说DMA请求未被屏蔽,只要出现DREQ有效信号,8237就会立即发出HRQ有效信号。在HRQ有效之后,至少等待一个时钟周期后,HLDA才会有效。
HLDA(HoldAcknowledge):同意让出总线响应输入信号,高电平有效。来自CPU的同意让出总线响应信号,它有效表示CPU已经让出对总线的控制权,把总线的控制权交给DMAC。DREQ0~DREQ3(DMARequest):DMA请求输入信号。它们的有效电平可由编程设定。复位时使它们初始化为高电平有效。这4条DMA请求线是外部电路为取得DMA服务,而送到各个通道的请求信号。在固定优先权时,DREQ0的优先权最高,DREQ3的优先权最低。各通道的优先权级别是可以编程设定的,当通道的DREQ有效时,就向8237请求DMA操作。DACK是响应DREQ信号后,进入DMA服务的应答信号,在响应的DACK产生前DREQ必须维持有效。
DACK0~DACK3(DMAAcknowledge):DMA响应输出,它们的有效电平可由编程设定,复位时使它们初始化为低电平有效。8237用这些信号来通知各自的外部设备已经被授予一个DMA周期了,即利用有效的DACK信号作为I/O接口的选通信号。系统允许多个DREQ同时有效,但在同一时间,只能一个DACK信号有效。
A3~A0(Address):地址线的低4位,双向、三态地址线。CPU控制总线时,它们是输入信号,用来寻址要读出或写入的8237内部寄存器,在DMA的有效周期内,由它们输出低4位地址。
A7~A4:三态、输出的地址线。在DMA周期,输出低字节的高4位地址A7~A4。DB7~DB0:双向、三态的数据总线,连接到系统数据总线上。在I/O读期间,在编程条件下,输出被允许。可以将8237内部的地址寄存器、状态寄存器、暂存寄存器和字节计数器中的内容读入CPU。当CPU对8237的控制寄存器写入控制字时,在一个I/O写周期内,这些输出被禁止,数据从CPU写入8237。在DMA操作期间,8237的高8位地址A7~A0,由DB7~DB0输出,并由ADSTB信号将这些地址信息锁存入地址锁存器。若是进行存储器与存储器之间的DMA操作,则在存储器读出期间,把从源存储器读出的数据输入到8237的暂存器;而在存储器写入期间,数据再从暂存器输出,然后写入到新的目的存储单元。
ADSTB(AddressStrobe):地址选通、输出信号,高电平有效。用来将从DB7~DB0,输出的高8位地址A7~A0选通到地址锁存器。
AEN(AddressEnable):地址允许、输出信号,高电平有效。在DMA传送期间,该信号有效时,禁止其他系统总线驱动器使用系统总线,同时允许地址锁存器中的高8位地址信息送上系统地址总线。
IOR(I/ORead):I/O读,双向、三态,低电平有效。CPU控制总线时由CPU发来,若该信号有效,表示CPU读取8237内部寄存器。在进行DMA操作时由8237发出,采用读取I/O设备的控制信号。
LOW:I/O写,双向、三态,低电平有效。CPU控制总线时由CPU发来,CPU用它把数据写入8237。而在DMA操作期间LOW是由8237发出,作为对I/O设备写入的控制信号。
MEMR(MemoryRead):存储器读,输出,三态,低电平有效。在DMA操作期间MEMR是由8237发出,作为从选定的存储单元读出数据的控制信号。
MEMW(MemoryWrite):存储器写,输出,三态,低电平有效。在DMA操作期间,MEMW由8237发出,作为把数据写入选定的存储单元的控制信号。
EOP(EndOfProcess):过程结束,双向,低电平有效。表示DMA服务结束。当8237接收到有效的EOP信号时,就会终止当前正在执行的DMA操作。当复位请求位时,如果是允许自动预置(自动再启动方式),就将该通道的基址寄存器和基字节计数器的内容,重新写入当前的地址寄存器和当前的字节计数器,并使屏蔽位保持不变。若不是自动预置方式,当EOP有效时,将会使当前运行通道的状态字中的屏蔽位和TC位置位,EOP可以由I/O设备输入给8237。另外,当8237的任一通道到达计数终点(TC)时,会产生低电平的输出脉冲信号,此信号除了使8237终止DMA服务外,还可以送出作为中断请求信号等使用。EOP信号不用时,必须通过上拉电阻接到高电平,以防止误输入。8237的操作时序如图6.9所示。它有三种操作周期:空闲周期(IdelCycle),即DMAC工作于被动状态;请求应答周期和DMA操作周期,即DMAC工作于主动状态。每个操作周期又由若干状态组成,每种状态是一个时钟周期。8237有SI、S0、S1、S2、S3、S4和Sw
共七种状态。1.空闲周期SI8237在编程进入允许DMA工作状态之前或虽已编程进入允许DMA,但无DMA请求时,8237处于空闲周期,执行空闲状态SI。在空闲周期内,在每个SI的下降沿,8237采样DREQI输入信号,以确定是否有通道请求DMA服务。同时,还采样CS输入引脚,判断CPU是否要对该8237芯片进行编程写入或读出,若8237采样到CS有效,只要HLDA是低电平,便可以进入编程工作状态(即CPU可以访问8237)。CPU可以访问由地址信息A3~A0寻址的内部寄存器。
2.请求应答周期S0
对8237编程完成后,在SI的下降沿采样到DREQI有效后,8237将在SI的上升沿,向CPU输出占有总线的请求信号HRQ,并向CPU请求DMA服务,进入S0状态,等待CPU同意让出总线的回答信号HLDA,在HLDA有效之前的S0状态中,CPU仍可以访问8237。S0状态是8237送出HRQ信号向CPU提出控制总线的请求信号HRQ后,到它接收到CPU发回同意让出总线的HLDA有效信号之间的周期状态。这是8237从被动状态过渡到主动状态的过渡时期。
3.DMA操作周期在HLDA到达之后,8237开始进入数据传送周期,开始以DMA方式传送数据。一个完整的DMA传送周期包括S1、S2、S3和S4共四个状态。如果是慢速的存储器或I/O设备,可以由READY引脚输入低电平,当S3结束的下降沿采样READY为低电平时,就在S3和S4之间插入Sw状态(见图6.9(c)),以达到速度的匹配。对于存储器至存储器之间的数据传送,每传送一个数据,需先从源存储器单元读出数据,将它存入暂存器,再写入目的存储器单元中,这样传送一个数据要八个状态。因此,状态标注采用两位数标注,从存储器读出要用S11、S12、S13和S14共四个状态,写入存储器用S21、S22、S23和S24共四个状态(见图6.9(b))。图6.98237操作时序图6.98237操作时序图6.98237操作时序一个DMA有效周期时序是:8237收到有效的HLDA响应信号后进入S1时,立即输出地址允许信号AEN,这标志着8237获得了系统总线控制权和DMA周期的开始。8237在S1期间把高8位地址A15~A8送到数据总线DB7~DB0上,并发出ADSTB地址选通信号。在ADSTB的下降沿(在S2内),把高8位地址存入地址锁存器,再由地址允许信号AEN把高8位地址送上地址总线A15~A8。低8位地址A7~A0由8237直接或经驱动器输出到地址总线A7~A0上。对于一般的DMA在S2发出DACK信号,通知请求DMA服务的设备,即DACK信号可以用作I/O端口的片选信号。因为,DMAC从地址总线上发出的地址已被用来访问存储器。若是M→I/O或I/O→M的传送方式,对I/O设备的寻址就用DACK担任。随后,若是DMA读操作,就发出存储器读命令MEMR;若是DMA写操作,则发出I/O读命令IOR读取要传送的数据。在S3状态中8237发出写命令,把读出的数据写入指定的地址单元。对于DMA读操作发出I/O写命令IOW;对于DMA写操作发出MEMW命令。若编程选用扩展写命令,则写入操作和读出操作同时开始。在S2期间同时发出MEMR和LOW或IOR和MEMW。在存储器和I/O设备之间传送数据时,数据不读入8237,而是保持在数据线DB7~DB0上。所以,写周期一开始,即可从数据总线上直接写到存储器或I/O端口。也就是说DMA通道提供了直接传送数据的功能。对于存储器至存储器的传送,不发I/O读写命令。每传送一个字节用八个状态,前四个状态发出MEMR命令,把数据从源地址存储器读入8237暂存器,后四个状态发出MEMW命令,把暂存器中的数据写入目的存储器。对于成组或请求传送,连续传送多个数据,其地址码是连续变化的。对于大多数传送来说,保存在地址锁存器中的高8位地址是不变的,只有当低8位地址发生进位或借位时,才会改变高8位地址。为了加快传送速度,只有对地址锁存器中的A15~A8内容进行修改时,才去执行S1状态,否则可以不进入S1状态。在S3后沿,8237检测READY输入信号。若READY为低电平时,8237插入Sw状态;若READY为高电平时,就进入S4状态。S4状态结束后,8237已完成数据传送,因此,对应的读写信号变为无效。S4状态结束后,若8237还处于DMA操作,即开始另一个DMA传送周期。若DMA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《岩石的组成》(说课稿)2023-2024学年教科版四年级科学下册
- 宿州2025年安徽宿州市书画院引进高层次专业人才笔试历年参考题库附带答案详解
- 中央2025年中国民航大学劳动合同制人员招聘7人笔试历年参考题库附带答案详解
- 2023七年级英语下册 Unit 3 How do you get to school Section B 第5课时(3a-3b)说课稿 (新版)人教新目标版
- 2025年度市场营销权转让协议书
- 二零二五年度无争议离婚协议财产清算及子女抚养协议
- 2025年度金融资产估值与评估合作协议
- 土地征用补偿纠纷调解合同范本(2025年度)
- 2025年度生态稻田土地承包经营协议书
- 2025年度房地产开发项目代理合作协议
- 【市质检】泉州市2025届高中毕业班质量监测(二) 生物试卷(含答案解析)
- 六年级2025寒假特色作业
- 2025年江苏辖区农村商业银行招聘笔试参考题库含答案解析
- 人教版六年级数学下册完整版教案及反思
- 少儿财商教育讲座课件
- (八省联考)云南省2025年普通高校招生适应性测试 物理试卷(含答案解析)
- 2025药剂科工作人员工作计划
- 春节节后安全教育培训
- 2025年新高考数学一轮复习第5章重难点突破02向量中的隐圆问题(五大题型)(学生版+解析)
- 水土保持方案投标文件技术部分
- 印刷品质量保证协议书
评论
0/150
提交评论