当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第6章直接存储器存取DMA
第六章直接存储器存取DMA第六章直接存储器存取DMA6.1DMA的工作原理及工作过程6.2DMA控制器及8237DMA控制器6.38237A的初始化编程6.4DMA的应用举例第六章直接存储器存取DMA6.1.1DMA的传送原理DMA方式用硬件实现存储器与存储器之间或存储器与I/O设备之间直接进行高速数据传送,不需要CPU的干预。这种方式通常用来传送数据块。DMA传送包括:RAM→I/O端口的DMA读传送;I/O端口→RAM的DMA写传送;RAM→RAM的存储单元传送。6.1DMA的工作原理及工作过程第六章直接存储器存取DMADMA传送的基本特点是不经过CPU,不破坏CPU内各寄存器的内容,直接实现存储器与I/O设备之间的数据传送。在IBMPC系统中,以DMA方式传送一个字节的时间通常是1个总线周期,即5个时钟周期。CPU内部的指令操作只是暂停这个总线周期,然后继续操作,指令的操作次序不会被破坏。所以DMA传送的方式特别适合用于外部设备与存储器之间高速成批的数据传送。图6-1是实现DMA传送的基本原理图,图中以系统总线为界,左侧位于主机板内,其中有DMA控制器;右侧有存储器(部分存储器在主机板内)、外设和外设接口,它们通过I/O插槽与系统总线相接。第六章直接存储器存取DMA图6-1DMA传送的基本原理图CPU8088总线逻辑回答请求DMA控制器8237系统总线存储器I/O接口I/O接口主机板第六章直接存储器存取DMA6.1.2DMA的工作过程图6-2DMA的传送过程CPUDMAC总线请求DREQDACK总线响应I/ODMA请求DMA响应CBDBAB第六章直接存储器存取DMA从图中可以看出,系统总线分别受到CPU和DMAC这两个器件的控制,即CPU可以向地址总线、数据总线和控制总线发送信息,DMAC也可以向地址总线、数据总线和控制总线发送信息。但是,在同一时间,系统总线只能受一个器件控制。当CPU控制总线时,DMAC必须与总线脱离;而当DMAC控制总线时,CPU必须与总线脱离。因此,CPU与DMAC之间必须有联络信号。第六章直接存储器存取DMA1.DMADMA传送的工作过程如下:(1)I/O端口向DMA控制器发出DMA请求,请求数据传送。(2)DMA控制器在接到I/O端口的DMA请求后,向CPU发出总线请求信号,请求CPU脱离系统总线。(3)CPU在执行完当前指令的当前总线周期后,向DMA控制器发出总线响应信号。(4)CPU随即和系统的控制总线、地址总线及数据总线脱离关系,处于等待状态,由DMA控制器接管这3个总线的控制权。第六章直接存储器存取DMA(5)DMA控制器向I/O端口发出DMA响应信号。(6)DMA控制器把进行DMA传送涉及到的RAM地址送到地址总线上。如果进行I/O端口→RAM传送,DMAC向I/O端口发出I/O读命令,向RAM发出存储器写命令;如果进行RAM→I/O端口传送,DMAC向RAM发出存储器读命令,向I/O端口发出I/O写命令,从而完成一个字节的传送。(7)当设定的字节数传送完毕,DMA传输过程结束后,也可以由来自外部的终止信号迫使传输过程结束。当DMA传送结束后,DMA控制器就将总线请求信号变成无效,并放弃对总线的控制,CPU检测到总线请求信号无效后,也将总线响应信号变成无效,于是,CPU重新控制三总线,继续执行被中断的当前指令的其他总线周期。第六章直接存储器存取DMA2.DMADMA用硬件在外设与内存之间直接进行数据交换。通常系统的数据和地址总线以及一些控制信号线(如IO/、RD、WR等)是由CPU管理的,在DMA方式下,就要求CPU让出总线(也就是将这些总线置为高阻状态),而由DMA控制器(DMAC)接管总线。通常,大部分DMA都有三种DMA传送方式。(1)单字节传送方式。每次DMA传送只传送一个字节的数据,传送后释放总线,CPU至少控制一个完整的总线周期,然后测试DMA请求线DREQ,若有效,再进入DMA周期。第六章直接存储器存取DMA在这种方式中要注意:①DMA响应信号DACK有效前,DREQ必须保持有效。②若DREQ在传送过程中一直保持有效,则在两次传送之间必须释放总线。(2)成组传送方式。一个DMA请求可以传送一组信息。在DMAC初始化时,由编程决定这一组信息的字节数,只要在DACK有效之前DREQ保持有效即可。一旦DACK有效,不管DREQ是否有效,DMAC一直不放弃总线控制权,直到整个数组传送完。(3)请求传送方式。请求传送方式又称查询传送方式。该方式的传送类似成组传送方式,但每传送一个字节后,DMAC就检测DREQ:若无效,则挂起;若有效,则继续DMA传送,直到外加信号强制DMAC中止操作。第六章直接存储器存取DMA3.DMADMA具有下列特点:(1)它使主存既可被CPU访问,又可被外设直接访问。(2)当传送数据块时,主存地址的确定、传送数据的计数控制等都用硬件电路直接实现。(3)主存中要开设专用缓冲区,及时供给和接收外设的数据。(4)DMA传送速度快,可使CPU和外设并行工作,提高了系统的效率。(5)DMA在开始前和结束后要通过程序和中断方式进行预处理和后处理。第六章直接存储器存取DMA6.2DMA控制器及8237DMA控制器6.2.18237A的外部引脚8237A是微机系统中实现DMA功能的大规模集成电路控制器。PC/XT使用一片8237A,PC/AT使用两片8237A,在高档微机中常使用多功能芯片取代8237A,但多功能芯片中的DMA控制器与8237A的功能基本相同。第六章直接存储器存取DMA1.8237A的内部结构和引脚功能8237A是具有4个独立DMA通道的可编程DMA控制器(DMAC),它使用单一的+5V电源、单相时钟和40引脚双列直插式封装。在实际应用中,8237A必须与一片8位锁存器一起使用,才能形成一个完整的4通道DMA控制器。8237A经初始化后,可以控制每一个通道在存储器和I/O口之间以最高1.6M波特的速率传送最多达64KB的数据块,而不需要CPU的介入。第六章直接存储器存取DMA8237A的基本功能如下:(1)一个芯片中有4个独立的DMA通道。(2)每一个通道的DMA请求都可以被允许或禁止。(3)每个通道的DMA请求有不同的优先级,既可以是固定优先级,也可以是循环优先级。(4)每个通道一次传送的最大字节数为64KB。(5)8237A提供4种传送方式:单字节传送方式、数据传送方式、请求传送方式和级联传送方式。第六章直接存储器存取DMA图6-38237A内部结构控制寄存器HRQHLDA状态寄存器CLK请求触发器屏蔽触发器方式寄存器基地址寄存器当前地址寄存器基本字节寄存器当前字节寄存器请求寄存器屏蔽寄存器IORMEMRIOWMEMWREADY暂存寄存器AENHOLDHLDACLKADSTBDREQ0DACK0通道1DREQ1DACK1通道2DREQ2DACK2通道3DREQ3DACK3DB7~DB0A3~A0A7~A4通道0第六章直接存储器存取DMA(1)DMA通道。8237A内部包含4个独立通道,每个通道包含2个16位的地址寄存器、2个16位的字节数寄存器、2个16位的方式寄存器、1个DMA请求触发器和1个DMA屏蔽触发器。此外,4个通道共用1个8位控制器、1个8位状态寄存器、1个8位暂存器、1个8位屏蔽寄存器和1个8位请求寄存器。第六章直接存储器存取DMA(2)读/写逻辑。当CPU对8237A初始化或对8237A寄存器进行读操作时,8237A就像I/O端口一样被操作,读/写逻辑接收IOR或IOW信号。当IOR为低电平时,CPU可以读取8237A内部寄存器的值;当IOW为低电平时,CPU可以将数据写入8237A的内部寄存器中。在DMA传送期间,系统由8237A控制总线。此时,8237A分两次向地址总线上送出要访问的内存单元20位物理地址中的低16位,8237A输出必要的读/写信号,这些信号分别为I/O读信号IOR,I/O写信号IOW,存储器读信号MEMR和存储器写信号MEMW。第六章直接存储器存取DMA(3)控制逻辑。在DMA周期内,控制逻辑通过产生相应的控制信号和16位要存取的内存单元地址来控制DMA的操作步骤。初始化时,通过对方式寄存器进行编程,使控制逻辑可以对各个通道的操作进行控制。第六章直接存储器存取DMADREQ21234NC5READY6HLDA7ADSTB8AEN9HRQ1011CLK12RESET13DACK214DACK315DREQ31617DREQ118DREQ019GND20IORIOWMEMRMEMWCS8237A40A739A638A53736A435A334A233A132A031VCC30DB029DB128DB227DB326DB425DACK024DACK123DB522DB621DB7EOP图6-48237A引脚图第六章直接存储器存取DMA各个信号说明如下:CLK:时钟输入端,通常接到8234时钟发生器的输出引脚,用来控制8237A内部操作定时和DMA传送时的数据传送速率。8237A的时钟频率为3MHz,8237A-5的时钟频率为5MHz,后者是8237A的改进型,工作速度比较高,但工作原理及使用方法与8237A相同。CS:片选输入端,低电平有效。第六章直接存储器存取DMARESET:复位输入端,高电平有效。当RESET有效时,屏蔽寄存器被置1(4个通道均禁止DMA请求),其他寄存器均清0,8237A处于空闲周期,所有控制线都处于高阻状态,并禁止4个通道的DMA操作。复位后必须重新初始化;否则8237A不能进入DMA操作。READY:“准备就绪”信号输入端,高电平有效。当所选择的存储器或I/O端的速度比较慢,需要延长传输时间时,使READY端处于低电平,8237A就会自动地在存储器读和存储器写周期中插入等待周期。当传输完成时,READY端变为高电平,以表示存储器或I/O设备准备就绪。第六章直接存储器存取DMAADSTB:地址选通输出信号,高电平有效。当此信号有效时,8237A当前地址寄存器的高8位经数据总线DB7~DB0锁存到外部地址锁存器中。AEN:地址允许输出信号,高电平有效。AEN把外部地址锁存器中锁存的高8位地址输出到地址总线上,与芯片直接输出的低8位地址一起共同构成内存单元的低16位地址。MEMR:存储器读信号,低电平有效,输出,只用于DMA传送。在DMA读周期期间,用于从所寻址的存储器单元中读出数据。MEMW:存储器写信号,低电平有效,输出,只用于DMA传送。在DMA写周期期间,用于将数据写入所寻址的存储器单元中。第六章直接存储器存取DMAIOR:I/O读信号,低电平有效,双向。当CPU控制总线时,它是输入信号,CPU读8237A内部寄存器;当8237A控制总线时,它是输出信号,与MEMW相配合,控制数据由I/O端口传送至存储器。IOW:I/O写信号,低电平有效,双向。当CPU控制总线时,它是输入信号,CPU写8237A内部寄存器(初始化)。当8237A控制总线时,它是输出信号,与MEMR相配合,把数据从存储器传送至I/O端口。第六章直接存储器存取DMAEOP:DMA传送过程结束信号,低电平有效,双向。当DMA控制的任一通道计数结束时,会从EOP引脚输出一个低电平,表示DMA传输结束。而当外部向DMA控制输入EOP信号时,DMA传送过程将被强迫结束,无论是从外部终止DMA过程,还是内部计数结束引起DMA过程终止,都会使DMA控制器的内部寄存器复位。DREQ0~DREQ3:DMA请求输入信号,有效电平可由编程设定。这4条DMA请求线是外设为取得DMA服务而送到各个通道的请求信号。在固定优先级的情况下,DREQ0的优先级最高,DREQ3的优先级最低。在优先级循环方式下,某通道的DMA请求被响应后,随即降为最低级。8237A用DACK信号作为对DREQ的响应,因此在相应的DACK信号有效之前,DREQ信号必须维持有效。第六章直接存储器存取DMADACK0~DACK3:DMA对各个通道请求的响应信号,输出
本文标题:第6章直接存储器存取DMA
链接地址:https://www.777doc.com/doc-3358926 .html