直接存储器存取DMA.ppt

上传人:牧羊曲112 文档编号:6318956 上传时间:2023-10-16 格式:PPT 页数:75 大小:1.55MB
返回 下载 相关 举报
直接存储器存取DMA.ppt_第1页
第1页 / 共75页
直接存储器存取DMA.ppt_第2页
第2页 / 共75页
直接存储器存取DMA.ppt_第3页
第3页 / 共75页
直接存储器存取DMA.ppt_第4页
第4页 / 共75页
直接存储器存取DMA.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《直接存储器存取DMA.ppt》由会员分享,可在线阅读,更多相关《直接存储器存取DMA.ppt(75页珍藏版)》请在三一办公上搜索。

1、第六章 直接存储器存取DMA,6.1 DMA的工作原理及工作过程 6.2 DMA控制器及8237DMA控制器 6.3 8237A的初始化编程 6.4 DMA的应用举例,6.1.1 DMA的传送原理 DMA方式用硬件实现存储器与存储器之间或存储器与I/O设备之间直接进行高速数据传送,不需要CPU的干预。这种方式通常用来传送数据块。DMA传送包括:RAMI/O端口的DMA读传送;I/O端口 RAM的DMA写传送;RAMRAM的存储单元传送。,6.1 DMA的工作原理及工作过程,DMA传送的基本特点是不经过CPU,不破坏CPU内各寄存器的内容,直接实现存储器与I/O设备之间的数据传送。在IBM PC

2、系统中,以DMA方式传送一个字节的时间通常是1个总线周期,即5个时钟周期。CPU内部的指令操作只是暂停这个总线周期,然后继续操作,指令的操作次序不会被破坏。所以DMA传送的方式特别适合用于外部设备与存储器之间高速成批的数据传送。图6-1是实现DMA传送的基本原理图,图中以系统总线为界,左侧位于主机板内,其中有DMA控制器;右侧有存储器(部分存储器在主机板内)、外设和外设接口,它们通过I/O插槽与系统总线相接。,图6-1 DMA传送的基本原理图,6.1.2 DMA的工作过程,图 6-2 DMA的传送过程,从图中可以看出,系统总线分别受到CPU和DMAC这两个器件的控制,即CPU可以向地址总线、数

3、据总线和控制总线发送信息,DMAC也可以向地址总线、数据总线和控制总线发送信息。但是,在同一时间,系统总线只能受一个器件控制。当CPU控制总线时,DMAC必须与总线脱离;而当DMAC控制总线时,CPU必须与总线脱离。因此,CPU与DMAC之间必须有联络信号。,1.DMA的传送过程 DMA传送的工作过程如下:(1)I/O端口向DMA控制器发出DMA请求,请求数据传送。(2)DMA控制器在接到I/O端口的DMA请求后,向CPU发出总线请求信号,请求CPU脱离系统总线。(3)CPU在执行完当前指令的当前总线周期后,向DMA控制器发出总线响应信号。(4)CPU随即和系统的控制总线、地址总线及数据总线脱

4、离关系,处于等待状态,由DMA控制器接管这3个总线的控制权。,(5)DMA控制器向I/O端口发出DMA响应信号。(6)DMA控制器把进行DMA传送涉及到的RAM地址送到地址总线上。如果进行I/O端口RAM传送,DMAC向I/O端口发出I/O读命令,向RAM发出存储器写命令;如果进行RAMI/O端口传送,DMAC向RAM发出存储器读命令,向I/O端口发出I/O写命令,从而完成一个字节的传送。(7)当设定的字节数传送完毕,DMA传输过程结束后,也可以由来自外部的终止信号迫使传输过程结束。当DMA传送结束后,DMA控制器就将总线请求信号变成无效,并放弃对总线的控制,CPU检测到总线请求信号无效后,也

5、将总线响应信号变成无效,于是,CPU重新控制三总线,继续执行被中断的当前指令的其他总线周期。,2.DMA的传送方式 DMA用硬件在外设与内存之间直接进行数据交换。通常系统的数据和地址总线以及一些控制信号线(如IO/、RD、WR等)是由CPU管理的,在DMA方式下,就要求 CPU让出总线(也就是将这些总线置为高阻状态),而由DMA控制器(DMAC)接管总线。通常,大部分DMA都有三种DMA传送方式。(1)单字节传送方式。每次DMA传送只传送一个字节的数据,传送后释放总线,CPU至少控制一个完整的总线周期,然后测试DMA请求线DREQ,若有效,再进入DMA周期。,在这种方式中要注意:DMA响应信号

6、DACK有效前,DREQ必须保持有效。若DREQ在传送过程中一直保持有效,则在两次传送之间必须释放总线。(2)成组传送方式。一个DMA请求可以传送一组信息。在DMAC初始化时,由编程决定这一组信息的字节数,只要在DACK有效之前DREQ保持有效即可。一旦DACK有效,不管DREQ是否有效,DMAC一直不放弃总线控制权,直到整个数组传送完。(3)请求传送方式。请求传送方式又称查询传送方式。该方式的传送类似成组传送方式,但每传送一个字节后,DMAC就检测DREQ:若无效,则挂起;若有效,则继续DMA传送,直到外加信号强制DMAC中止操作。,3.DMA 的特点 DMA具有下列特点:(1)它使主存既可

7、被CPU访问,又可被外设直接访问。(2)当传送数据块时,主存地址的确定、传送数据的计数控制等都用硬件电路直接实现。(3)主存中要开设专用缓冲区,及时供给和接收外设的数据。(4)DMA传送速度快,可使CPU和外设并行工作,提高了系统的效率。(5)DMA在开始前和结束后要通过程序和中断方式进行预处理和后处理。,6.2 DMA控制器及8237DMA控制器,6.2.1 8237A的外部引脚 8237A是微机系统中实现DMA功能的大规模集成电路控制器。PC/XT使用一片8237A,PC/AT使用两片8237A,在高档微机中常使用多功能芯片取代8237A,但多功能芯片中的DMA控制器与8237A的功能基本

8、相同。,1.8237A的内部结构和引脚功能 8237A是具有4个独立DMA通道的可编程DMA控制器(DMAC),它使用单一的+5 V电源、单相时钟和40引脚双列直插式封装。在实际应用中,8237A必须与一片8位锁存器一起使用,才能形成一个完整的4 通道DMA控制器。8237A经初始化后,可以控制每一个通道在存储器和I/O口之间以最高1.6 M波特的速率传送最多达64 KB的数据块,而不需要CPU的介入。,8237A的基本功能如下:(1)一个芯片中有4个独立的DMA通道。(2)每一个通道的DMA请求都可以被允许或禁止。(3)每个通道的DMA请求有不同的优先级,既可以是固定优先级,也可以是循环优先

9、级。(4)每个通道一次传送的最大字节数为64 KB。(5)8237A提供4种传送方式:单字节传送方式、数据传送方式、请求传送方式和级联传送方式。,图 6-3 8237A内部结构,(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位请求寄存器。,(3)控制逻辑。在DMA周期内,控制逻辑通过产生相应的控制信号和16位要存取的内存单元地址来控制DMA的操作步骤。初始化时,通过对

10、方式寄存器进行编程,使控制逻辑可以对各个通道的操作进行控制。,图6-4 8237A引脚图,RESET:复位输入端,高电平有效。当RESET有效时,屏蔽寄存器被置1(4个通道均禁止DMA请求),其他寄存器均清0,8237A处于空闲周期,所有控制线都处于高阻状态,并禁止4个通道的DMA操作。复位后必须重新初始化;否则8237A不能进入DMA操作。READY:“准备就绪”信号输入端,高电平有效。当所选择的存储器或I/O端的速度比较慢,需要延长传输时间时,使READY端处于低电平,8237A就会自动地在存储器读和存储器写周期中插入等待周期。当传输完成时,READY端变为高电平,以表示存储器或I/O设备

11、准备就绪。,DACK0DACK3:DMA对各个通道请求的响应信号,输出的有效电平可由编程设定。8237A接收到通道请求后,向CPU发出DMA请求信号HRQ,当8237A获得CPU送来的总线允许信号HLDA后,便产生DACK信号,送到相应的I/O端口,表示DMA控制器响应外设的DMA请求,从而进入DMA服务过程。HRQ:8237A输出给CPU的总线请求信号,高电平有效。当外设的I/O端口要求DMA传送时,向DMA控制器发送DREQ信号,如果相应的通道屏蔽位为0,即DMA请求未被屏蔽,则DMA控制器的HRQ端输出为有效电平,从而向CPU发出总线请求。,HLDA:总线响应信号,高电平有效,是CPU对

12、HRQ信号的应答信号。当CPU接收到HRQ信号后,在当前总线周期结束之后让出总线,并使HLDA信号有效。A3A0:地址总线低4位,双向。当CPU控制总线时,它们是地址输入线。CPU用这4条地址线对DMA控制器的内部寄存器进行寻址,完成对DMA控制器的编程。当8237A控制总线时,由这4条线输出要访问的存储单元的最低4位地址。A7A4:地址线,输出,只用于在DMA传送时,输出要访问的存储单元的低8位地址中的高4位。,DB7DB0:8位双向数据线,与系统数据总线相连。在CPU控制总线时,CPU可以通过I/O读命令从DMA控制器中读取内部寄存器的内容,送到DB7DB0,以了解8237A的工作情况。也

13、可以通过I/O写命令对DMA控制器的内部寄存器进行编程。在DMA控制器控制总线时,DB7DB0输出要访问的存储单元的高8位地址(A15A8),并通过ADSTB锁存到外部地址锁存器中,和A7A0输出的低8位地址一起构成16位地址。,8237A仅支持64 KB寻址,为了访问超过64 KB范围的其他地址空间,系统中增设了页面寄存器。在PC/XT微机系统中,每一通道的页面寄存器是4位寄存器。当一个DMA操作周期开始时,相应的页面寄存器内容就放到系统地址总线A19A16上,和8237A送出的16位低地址一起,构成20位物理地址。,6.2.2 8237A的工作方式 DMA控制器8237A依靠它的可编程特性

14、可以实现对多种DMA传送方式的控制。用程序的方法置入控制字(或称命令字)可以设置和改变DMA传送方式。置入控制寄存器的控制字控制着与整个DMA控制器有关的工作方式。置入各通道内方式寄存器的控制器的控制字控制着本通道的工作方式。8237A在DMA传送时有4种工作方式。,1 单字节传送方式 单字节传送方式是编程为一次只传送一个字节,数据传送后字节计数器减量,地址要相应修改(增量或减量取决于编程),HRQ变为无效,释放系统总线。若传送使字节数减为零,TC产生或者终结DMA传送,或重新初始化。在这种方式下,DREQ 信号必须保持有效,直至DACK 信号变为有效,但是若DREQ有效的时间覆盖了单字节传送

15、所需要的时间,则8237A在传送完成一个字节后,先释放总线,然后再产生下一个DREQ,完成下一个字节的传送。在8080/8086系统中,这样的方法在两次DMA传送之间,CPU至少执行一个机器周期。,2 成组传送方式 在成组传送方式下,8237A DREQ启动后,开始连续地传送数据,直至字节计数器减到零,产生TC,或者由外部输入有效的EOP信号来终结DMA传送。在这种方式下,DREQ 信号需要维持到数据块传送完成或终结操作。,4 级联方式 级联方式用于通过级联以扩展通道。第二级的HRQ和HLDA信号连到第一级的DREQ和DACK上,如图6-5所示。第二级各个片子的优先权等级与所连的通道相对应。在

16、这种工作情况下,第一级只起优先权网络的作用,除了由某一个二级的请求向CPU输出HRQ信号外,并不输出任何其他信号,实际的操作是由第二级的片子完成的,若有需要,还可以由第二级扩展到第三级等等。,6.2.3 8237A的内部寄存器,表6-1 8237A内部寄存器,1.控制寄存器,图6-6 控制寄存器格式,(1)D0:规定8237A是否工作在存储器传送方式。8237A约定:当进行存储器之间的数据传送时,由通道0提供源地址,通道1提供目的地址并进行字节计数。每传送一个字节需要两个总线周期,第1个总线周期先将源地址单元的数据读入8237A的暂存器,第2个总线周期再将暂存器的内容放到数据总线上,然后在写信

17、号的控制下,写入目的地址单元。,(2)D1:在存储器向存储器传送时,起控制作用。(3)D2:用来启动和停止8237A的工作。(4)D3:8237A可以有两种工作时序,一种是正常时序,一种是压缩时序。如果系统各部分速度比较高,便可以工作于压缩时序,这样可以提高DMA数据的传输速率。,(5)D4:选择各通道DMA请求的优先级。当D4=0时为固定优先级,即通道0优先级最高,通道3的优先级最低;当D41时为循环优先级,即在每次DMA服务之后,各个通道的优先级都发生变化。比如,某次传输前的优先级次序为2301,那么在通道2进行一次传输之后,优先级次序成为3012。如果这时通道3没有DMA请求,而通道0有

18、DMA请求,那么,在通道0完成DMA传输后,优先级次序成为1230。DMA的优先级排列顺序只是用来决定同时请求DMA服务的通道的响应次序,而任何一个通道一旦进入DMA服务后,其他通道必须等到该通道的服务结束后,才可以进行DMA服务。,2.方式寄存器 8237A的每个通道都有一个方式寄存器,4个通道的方式寄存器共用一个端口地址,方式选择命令的格式如图6-7所示。方式字的最低两位进行通道选择,写入命令字之后,8237A将根据D1和D0的编码把方式寄存器的D7D2位送到相应通道的方式寄存器中,从而确定该通道的传送方式和数据传送类型。8237A各通道的方式寄存器是6位的,CPU不可寻址。,图6-7 方

19、式寄存器格式,(1)DMA传送方式。8237A提供4种传送方式,每个通道可以用其中之一进行工作。单字节传送方式。每次DMA操作只传送一个字节的数据,然后自动地把总线控制权交给CPU,让CPU占用至少一个总线周期。若又有DMA请求信号,8237A重新向CPU发出总线请求,等获得总线控制权后,再传送下一个字节数据。数据块传送方式。进入DMA操作后,连续传送数据直到整个数据块全部传送完毕。,请求传送方式。该方式与数据块传送方式类似,只是在每传送一个字节后,8237A都对DMA请求信号DREQ进行测试。若检测到端变为无效电平,则马上暂停传输,但测试过程仍然进行,当DREQ又变为有效电平时,就在原来的基

20、础上继续进行传输,直到传送结束。级联传输方式。为了实现DMA系统扩展,几个8237A可以进行级联。,(2)DMA数据传送的类型。方式选择命令字的D3位和D2位确定数据传送的类型,即写传送、读传送和校验传送。写传送是将数据从I/O端口读出并写入存储单元。读传送是将数据从存储单元读出并写入I/O端口。校验传送是一种虚拟传送,8237A本身并不进行数据传送,而只是像DMA读传送或DMA写传送那样产生时序和地址信号,但存储器和I/O端口的读/写控制信号无效。校验传送一般在器件测试时使用。当D4位为1时,通道有“自动重装功能”。D5位控制“当前地址寄存器”的工作方式,规定地址是增量修改还是减量修改。,3

21、.地址寄存器 每个通道有一个16位的基地址寄存器和一个16位的当前地址寄存器。基地址寄存器存放本通道DMA传输时所涉及到的存储区首地址或末地址,这个初始值是在初始化编程时写入的,同时也被写入当前地址寄存器。当进行DMA传送时,由当前地址寄存器向地址总线提供本次DMA传送时的内存地址(低16位)。当前地址寄存器的值在每次DMA传输后自动加1或减1,为传送下一个字节作好准备。在整个DMA传送期间,基地址寄存器的内容保持不变。当通道初始化选择“自动重装”功能时,一旦全部字节传送完毕,基地址寄存器的内容自动重新装入当前地址寄存器。,5.状态寄存器 状态寄存器的格式如图6-8所示。状态寄存器的高4位表示

22、当前4 个通道是否有DMA请求,低4位指出4个通道的DMA传送是否结束,供CPU查询。它与控制器共用一个端口地址。,图6-8 状态寄存器的格式,6.请求寄存器和屏蔽寄存器,请求寄存器和屏蔽寄存器是4个通道公用的寄存器,使用时应写入请求命令和屏蔽命令字,其格式如图6-9所示。8237A根据请求寄存器的D2D0位,将相应通道的请求触发器置“1”,使用通道提出“软件DMA请求”。8237A根据屏蔽寄存器的D2D0位,将相应通道的屏蔽触发器置“1”(或清“0”)。当一个通道的屏蔽触发器置1后,它将屏蔽来自引脚DREQ的硬件DMA请求,同时,也屏蔽来自请求寄存器的软件DMA请求。因此,在对通道初始化之前

23、,应使屏蔽触发器置“1”,而在初始化之后,应使屏蔽触发器清“0”。,图 6-9 请求寄存器和屏蔽寄存器,7.多通道屏蔽寄存器 8237A允许使用一个屏蔽字一次完成对4个通道的屏蔽置,格式如图6-10所示。其中,D0D3对应于通道03的屏蔽触发器,若某一位为1,则对应通道的屏蔽触发器置1。,图 6-10 多通道屏蔽寄存器,8.先/后触发器 8237A只有8根数据线,而基地址寄存器和基本字节寄存器都是16位,在预置初值时需要分两次进行,每次写入一个字节。先/后触发器是为初值的写入顺序而设置的,在使用先/后触发器时,先将其清“0”,然后按先低位,后高位的顺序写字节。,9.暂存寄存器 暂存寄存器为4通

24、道共用的8位寄存器。在DMA控制器实现存储器到存储器的传送方式时,它暂存中间数据,CPU可以读取暂存寄存器中的内容,其值为最后一次传送的数据。,6.3 8237A的初始化编程,6.3.1 8237A的寻址及连接 8237A内部共占用16个I/O端口地址,由地址码的A3A0控制,恰好对应00001111的16种组合。表6-2给出了端口地址的分配关系。,需要说明以下两点:(1)地址0H7H(00000111)分配给4个通道的地址初值寄存器和地址计数器、字节数值寄存器和字节计数器。每个寄存器都是16位,无论是写入还是读出都需要两次。内部逻辑中有个字节指向触发器F接成计数方式工作。若F触发器为0,则读

25、、写时指向低位字节;若F为1,则读、写时指向高位字节。每次读、写后F改变状态。表6-2还指出,对地址0CH(1100)执行输出指令(AL寄存器可为任意值),将使F触发器初始化为0。,(2)16个I/O端口地址中,除分配给内部编址寄存器的外,还有几个用于形成软件命令。这些命令是:对8237A总清等效于外接RESET信号,占用地址1101;对请求寄存器清零,占用地址1110;还有已经提到的对字节指向触发器F的清零。这3种命令都是用输出指令实施的。指令中AL寄存器的内容不起作用,可为任意值。,6.3.2 8237A的初始化 8237A的初始化编程:(1)命令字写入控制寄存器。在初始化时必须设置寄存器

26、,以确定其工作时序、优先级方式、DREQ和DACK的有效电平及是否允许工作等。在PC系列机中,当BIOS初始化时,已将通道的控制寄存器设定为00H,禁止存储器到存储器的传送,允许读、写传送,正常时序,固定优先级,不扩展写信号,DREQ高电平有效,DACK低电平有效。因此在PC微机系统中,如果借用DMA CH1进行DMA传送,则在初始化编程时,不应再向控制寄存器写入新的命令字。,(2)屏蔽字写入屏蔽寄存器。当某通道正在进行初始化编程时,接收到DMA请求,可能本初始化结束,8237A就开始进行DMA传送,从而导致出错。因此,初始化编程时,必须先屏蔽未初始化的通道,在初始化结束后再解除对该通道的屏蔽

27、。(3)方式字写入方式寄存寄器。规定通道传送类型及工作方式。(4)置0先/后触发器。对端口地址DMA+0CH执行一条输出指令,从而产生一个写命令,即可置0先/后触发器,为初始化基地址寄存器和基本字节寄存器作准备。,(5)写入基地址和基本字节寄存器。把DMA操作所涉及到的存储区首地址或末地址写入地址寄存器,把要传送的字节数减1,写入基本字节寄存器。这几个寄存器都是16位的,因此写入要分两次进行;先写低8位,后写高8位。(6)解除屏蔽。初始化空间通道的屏蔽寄存器写入D2D00的命令,将相应通道的屏蔽触发器置0,准备响应DMA请求。(7)写入请求寄存器。如果采用软件DMA请求,在完成通道初始化之后,

28、在程序的适当位置向请求寄存器写入D2D0=1命令,即可使相应通道进行DMA传送。,6.4 DMA的应用举例,18237A在IBM PC/AT系统中的应用,286微机系统使用两片8237A级联,如图6-11所示。它提供了7个DMA通道,通道03支持8位数据传送,通道57支持16位数据传送。PC/AT有专门的动态RAM刷新电路,硬盘驱动器,通道4作为两个DMA控制器的级联,其余均保留备用。PC/AT DMAC寄存器I/O端口地址如表6-3所示。,图6-11 IBM PC/AT的DMA控制电路,图6-12 扩大8327A寻址范围示意图,在进行DMA读/写传送之前,程序要把DMA传送所涉及到的RAM单

29、元的高8位物理地址写入到相关通道的页面寄存器中,把RAM单元低16位物理地址写入到相关通道的基本地址寄存器中,把DMA传送的实际字节数减1,写入到相关通道的基本字节寄存器中,从而做好初始化准备。一旦I/O端口有DMA请求,并且DMAC控制系统三总线之后,由相关通道的DMA应答信号控制把页面寄存器的内容送到地址总线高8位,由DMAC把相关通道的低16位地址经过外部地址锁存和驱动送到低16位地址总线上,选择某一存储单元。在PC/AT系统中,页面寄存器采用的三态输出存储器映像器74612来实现。在高档微机中,DMAC和相关页面寄存器都被兼容的多功能芯片所取代。页面寄存器的I/O端口地址见表6-4。,

30、2.编程举例 若要利用通道0,由外设(磁盘)输入32 KB的一个数据块,传送至内存8000H开始的区域(增量传送),采用块传送的方式,传送完不自动初始化,外设的DREQ和DACK都为高电平有效。要编程,首先要确定端口地址。地址的低4位用以区分8237A的内部寄存器,高4位地址A7A4经译码后连至片选端CS,假定选中时高4位为5。,(1)方式控制字。,(2)屏蔽控制字。,(3)命令字。,初始化程序如下:OUT 5DH,AL;输出主清除命令MOV AL,00H OUT 50H,AL;输出基和现行地址的低8位MOV AL,80HOUT 50H,AL;输出基和现行地址的高8位MOV AL,00HOUT 51H,ALMOV AL,80HOUT 51H,AL;给基和现行字节数赋值MOV AL,84HOUT 5BH,AL;输出工作方式字MOV AL,00HOUT 5AH,AL;输出屏蔽控制字MOV AL,0A0HOUT(58H),AL;输出命令字,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号