最通俗易懂的DMA技术_第1页
最通俗易懂的DMA技术_第2页
最通俗易懂的DMA技术_第3页
最通俗易懂的DMA技术_第4页
最通俗易懂的DMA技术_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第9 9章章 DMADMA技术技术第9章 微型计算机概论9.1 DMA技术概述9.2 DMA控制器8237A 9.3 8237A的应用举例 第第9 9章章 DMADMA技术技术9.1 DMA技术概述 DMA方式就是直接存储器存取(Direct Memory Access)工作方式。用DMA传输数据时,在高速I/O设备与存储器之间,直接开辟高速的数据传输通道,CPU不在直接参与数据交换,而是通过DMA的一种专门接口逻辑电路即DMA控制器来负责管理。数据的DMA方式如图9-1所示。图9-1 DMA数据传输示意图第第9 9章章 DMADMA技术技术9.1.1 DMA的传送原理图9-2 DMA传输原

2、理图第第9 9章章 DMADMA技术技术9.1.1 DAM的传送原理(续1) DMA传输的过程大致是:首先由CPU向DMA控制器布置数据传输任务,并启动外设,外设准备好数据后通过I/O接口向DMA控制器发DRQ信号,表示外设已准备好数据,请求进行数据传输;DMA控制器收到DRQ信号后进行优先级的判别和屏蔽位的检测,若外设的DRQ请求获得允许,DMA控制器向CPU发送HRQ信号,请求使用总线;CPU在当前指令执行完后向DMA控制器发送HLDA信号,同时CPU让出总线,DMA控制器收到HLDA信号后通过接口向发送DRQ请求信号的外设发DACK信号,表示其DMA请求已获得允许,外设收到DACK信号后

3、,开始数据的传送,并以中断的方式通知CPU,传输结果由CPU负责处理。第第9 9章章 DMADMA技术技术9.1.1 DAM的传送原理(续2) 在外设和内存之间传送一个数据块时,一个完整的DMA操作的工作过程通常包括初始化、DMA数据传送和DMA传输结束三个阶段。DMA数据传输流程如图9-3所示。 图9-3 DMA数据传输流程图第第9 9章章 DMADMA技术技术9.1.2 DMA的工作方式 根据DMA控制器对总线的控制方式不同,DMA的数据传送一般有以下四种方式: (1) 单字节传送:每次DMA请求只传送一个字节数据,每传送完一个字节,DMA控制器中的字节计数寄存器的值减1,当前地址寄存器加

4、1或减1(根据编程确定),然后撤除DMA控制器对CPU的请求信号,释放总线返回给CPU,这样CPU至少可以获得一个总线周期。 (2)数据块传送:每次DMA请求获得CPU响应后,DMA控制器就连续占用多个总线周期,传送一个数据块,待规定长度的数据块传完后或外部作用要求强行结束DMA传送时,才撤除DMA请求信号,释放总线。 第第9 9章章 DMADMA技术技术9.1.2 DMA的工作方式(续1) (3) 请求传送:请求传送方式和数据块传送方式类似,每次传送也可以传送多个字节,但是在每传送完一个字节后,DMA控制器都要检测由I/O接口发出的DMA请求信号是否有效,一旦DMA请求无效就释放总线;如果一

5、组数据没传送完毕,释放总线后,DMA控制器仍然继续检测DMA请求端,一旦DMA请求有效,马上恢复DMA传送 。 (4)级联传送:从片DMA控制器的总线请求信号与主片的DMA请求信号DREQ相连,从片的总线请求允许信号HLDA与主片的DMA请求允许信号DACK相连;主片的总线请求信号与CPU的HOLD相连,主片总线请求允许信号HLDA与CPU的HLDA相连。 第第9 9章章 DMADMA技术技术9.1.3 DMA控制器的功能和结构 DMA控制器的功能: (1)响应外设的请求,向CPU发出总线请求信号。 (2)CPU放弃对总线控制时,DMA控制器应能接管总线控制权。 (3)获得总线控制权后,要往地

6、址总线发送地址信号。 (4)DMA期间,应能发读/写控制信号。 (5)决定本次传送的字节数,判断本次DMA传送是否结束。 (6)DMA过程结束时,将总线控制权归还给CPU。第第9 9章章 DMADMA技术技术9.1.3 DAM控制器的功能和结构(续1)图9-4 DMA控制器基本结构第第9 9章章 DMADMA技术技术9.2 DMA控制器8237A 8237A的具体功能如下: (1)每片8237A内部有4个独立的DMA通道,每个通道可分别进行数据传送,一次传送的最大长度可达64KB; (2)每个通道的DMA请求都可以允许和禁止,具有不同的优先级,并且每个通道的优先级可以是固定的,也可以是循环的;

7、 (3)每个DMA通道具有4种传送方式:单字节传送方式,数据块传送方式,请求传送方式和级联方式。第第9 9章章 DMADMA技术技术9.2.1 8237A的内部结构和引脚图9-5 8237A的内部结构 8237A是一个多功能可编程的DMA控制器,主要由控制逻辑单元、缓冲器和内部寄存器这3个基本部分组成,其内部结构如图9-5所示。 第第9 9章章 DMADMA技术技术9.2.1 8237A的内部结构和引脚(续1) 控制逻辑单元 定时和控制逻辑单元。它根据初始化编程时所设置的工作方式寄存器的内容和命令,在输入时钟信号的定时控制下,产生8237A内部的定时信号和外部的控制信号。 命令控制单元。其主要

8、作用是在DMA处于空闲周期时,即CPU控制总线时,将CPU在编程初始化时送来的命令字进行译码;在8237A进入DMA服务时,对设定DMA操作类型的工作方式字进行译码。 优先权控制逻辑单元。这个单元用来裁决4个通道的优先权次序,解决多个通道同时请求DMA服务时的冲突问题。第第9 9章章 DMADMA技术技术9.2.1 8237A的内部结构和引脚(续2) 缓冲器 8237A内部包含两个I/O缓冲器和一个输出缓冲器。其作用是将8237A的数据线和地址线与系统总线相连,从而保证8237A可以接管总线也可以释放总线。 内部寄存器第第9 9章章 DMADMA技术技术9.2.1 8237A的内部结构和引脚(

9、续3) 8237A是一款采用双列直插式封装的芯片,有40条引脚。其引脚如图9-6所示。 图9-6 8237A引脚图第第9 9章章 DMADMA技术技术9.2.1 8237A的内部结构和引脚(续4) 重要的引脚 ADSTB:地址选通信号输出端,高电平有效。在DMA传送期间,此信号用于将DB7DB0输出的当前地址寄存器中高8位地址送到外部锁存器,与8237A芯片直接输出的低8位地址A7A0共同构成内存单元地址的偏移量。 AEN:地址允许信号输出端,高电平有效。AEN为高电平时,允许8237A将高8位地址输出至地址总线,同时使与CPU相连的地址锁存器无效,即禁止CPU使用地址总线。AEN为低电平时,

10、8237A被禁止,CPU占用地址总线。 IOR:I/O读信号,是双向、低电平有效的三态信号。在CPU控制总线期间,它为输入信号,低电平有效时,CPU读取8237A内部寄存器的值;在DMA传送期间,它为输出信号,与MEMW相配合,控制数据由外设传送到存储器。第第9 9章章 DMADMA技术技术9.2.2 8237A的工作周期和时序 8237A有两种工作周期,即空闲周期和有效周期,每一个周期由多个时钟周期组成。8237A中设定了七种独立的状态SI、S0、S1、S2、S3、S4和SW。图9-7 8237A的DMA传输时序第第9 9章章 DMADMA技术技术9.2.3 8237A的工作方式和传送类型

11、工作方式 单字节传输方式 块传输方式 请求传输方式 级联传输方式第第9 9章章 DMADMA技术技术9.2.3 8237A的工作方式和传送类型(续1) 传送类型 (1)读传送:从指定的存储器单元读出数据写入到响应的I/O设备。 (2)写传送:从I/O设备读出数据写入到指定的存储器单元 (3)校验传送:一种伪传送操作,用于对读传送和写传送功能进行校验 。 (4)存储器到存储器的传送:此方式可实现存储器内部不同区域之间的传送 。第第9 9章章 DMADMA技术技术9.2.4 8237A的内部寄存器及编程控制字 基地址寄存器(16位):存放DMA传送的内存首址,在初始化时由CPU写入,传送中基地址寄

12、存器的值不会修改,而且不能读出。 当前地址寄存器(16位):用于保存DMA传送过程中当前地址值,每次DMA传送后其内容自动增1或减1。 基字节寄存器(16位):存放DMA传送的总字节数,在初始化时由CPU写入,传送中基字节寄存器的值不会修改,而且不能读出。 当前字节寄存器(16位):当前字节计数器用于保存DMA传送过程中当前要传送的字节数,每次DMA传送后其内容自动减1,当它的值由零减为FFFFH时,将发出EOP信号,表明DMA操作结束。 第第9 9章章 DMADMA技术技术9.2.4 8237A的内部寄存器及编程控制字(续1)图9-8 8237A状态字格式 状态寄存器(8位):用来存放823

13、7A控制器DMA传送前后的状态信息,DMA传送结束后,CPU通过对状态寄存器执行输入命令读入状态字。低4位表示4个通道的终止计数状态,高4位反映每个通道的DMA请求情况(为1表示有请求)。 第第9 9章章 DMADMA技术技术9.2.4 8237A的内部寄存器及编程控制字(续2)图9-9 8237A模式寄存器的格式 模式寄存器(8位):用于存放相应通道的工作模式、地址增减、是否自动预置、传输类型及通道选择,在CPU对8237A初始化编程时设定。 第第9 9章章 DMADMA技术技术9.2.4 8237A的内部寄存器及编程控制字(续3)图9-10 8237A控制寄存器的格式 控制寄存器(8位):

14、用于存放控制字。由CPU编程写入,用来设定8237A的操作类型、工作方式、传送方向和有关参数,而且可以用复位信号和软件命令清除。第第9 9章章 DMADMA技术技术9.2.4 8237A的内部寄存器及编程控制字(续4)图9-11 8237A请求寄存器的格式 请求寄存器(8位):用于软件启动DMA请求。第第9 9章章 DMADMA技术技术9.2.4 8237A的内部寄存器及编程控制字(续5)图9-12 8237A屏蔽字格式 屏蔽寄存器(8位):用来禁止或允许通道的DMA请求。第第9 9章章 DMADMA技术技术9.2.4 8237A的内部寄存器及编程控制字(续6) 暂存寄存器(8位):在存储器至

15、存储器传送期间,用来暂存从源地址单元读出的数据。当数据传送完成时,所传送的最后一个字节数据可以由CPU读出。用复位信号可清除此寄存器 。 软件命令(3条):用所谓软件命令就是只要对特定持址进行一次写操作,命令就生效,而与写入的具体数据无关。 (1)主清除命令 (2)清除先/后触发器(字节指示器)命令 (3)清屏蔽寄存器命令 第第9 9章章 DMADMA技术技术9.3 8237A的应用举例9.3.1 8237A的初始化编程8237A初始化编程的一般步骤:(1) 写主清除命令,使8237A处于复位状态 (2) 根据所选通道,写相应通道的基地址寄存器和当前地址寄存器的初始值。(3) 写相应通道的基字

16、节寄存器和当前计数器器的初始值。(4) 写模式寄存器,设置8237A的工作方式和数据传送类型。(5) 写屏蔽寄存器,设置要屏蔽的DMA通道。(6) 写控制寄存器,以设置8237A进行DMA传送时的工作时序、优先级方式等。(7) 写请求寄存器,可使用软件方法启动DMA传送;也可以使用硬件方法,等待8237A的某个通道的引脚信号DREQ端发出DMA传送请求。第第9 9章章 DMADMA技术技术9.3.1 8237A的初始化编程(续1)图9-13 8237A的内部端口及操作第第9 9章章 DMADMA技术技术9.3.1 8237A的初始化编程(续2) 【例9-1】设要从8237A的DMA通道3的外设

17、中输入32K(8000H)字节的数据块,送到起始地址为3000H的内部存储器中。DMA传送的要求是:增量传送、采用数据块连续传送方式、传送完不自动初始化,外设的DREQ和DACK高电平有效、正常时序、固定优先级。 分析:首先要确定端口地址,地址的低4位用于区分8237A的内部寄存器;高4位地址译码后,连接到选片端,假定选择的高4位为2。第第9 9章章 DMADMA技术技术9.3.1 8237A的初始化编程(续3) 模式寄存器的控制字应该设为: 屏蔽寄存器的格式字应该设为: 控制寄存器的格式字应该设为:第第9 9章章 DMADMA技术技术9.3.1 8237A的初始化编程(续4) 初始化程序如下

18、: MOV AL, 00H OUT 2DH,AL ; 写主复位命令 OUT 26H,AL ; 写通道3基地址低8位 MOV AL, 30H OUT 26H,AL ; 写通道3基地址高8位 MOV AL, 00H OUT 27H,AL ; 写入要传送的字节数低8位 MOV AL, 80H OUT 27H,AL ; 写入要传送的字节数高8位 MOV AL, 10000111B OUT 2BH,AL ; 写模式寄存器 MOV AL, 00000011B OUT 2AH,AL ; 写屏蔽寄存器 MOV AL, 10100000B OUT 28H,AL ; 写控制寄存器 第第9 9章章 DMADMA技术

19、技术9.3.2 8237A的应用举例 【例9-2】如图9-13为一个用于IBM PC系列机的DMA传送接口电路。每当外设准备好接受数据时,提出一次DMA请求,经过D触发器产生DRQ1有效信号。当微机系统允许DMA操作时,它就会输出DMA通道1响应信号,同时在DMA控制器输出I/O写信号的控制下,将内存50000H起始的数据经数据总线写入锁存器提供给外设。另外,DMA响应信号还使DRQ1请求信号无效,保证DMA请求信号保持到DMA响应为止,说明一次DMA传送结束。第第9 9章章 DMADMA技术技术9.2.3 8237A的应用举例(续1)图9-14 DMA读传送的接口电路第第9 9章章 DMAD

20、MA技术技术9.2.3 8237A的应用举例(续2) 分析:假设采用IBM PC/XT中DMA通道1传送4KB数据到外设,下面是汇编语言源程序段,重点给出了对8237A通道1的编程部分。由于PC系列机中8237A的工作方式已经设定,即已写入命令字,所以,对通道1的编程主要是写入模式字、地址寄存器和页面寄存器、字节数寄存器,最后复位DMA屏蔽位允许通道工作。本例中采用程序查询方式检测传送是否完成。 其主体程序如下: MOV AL, 0 OUT 0CH,AL ; 清先/后触发器 MOV AL,01001001B ; 工作模式为单字节DMA读传 送,地址增量,禁止自动初始化第第9 9章章 DMADM

21、A技术技术9.3.2 8237A的应用举例(续3) OUT 0BH,AL POSH AX ; 延时 P0P AX MOV AL,0 OUT 02H,AL ; 送地址的低8位 MOV AL,0 OUT 02H,AL ; 送地址的高8位 MOV AL,05H ; 送最高4位地址 OUT 83H,AL ; 给页面寄存器 MOV AX,4096-1 第第9 9章章 DMADMA技术技术9.3.2 8237A的应用举例(续4) OUT 03H,AL ; 送字节数低8位到字节数寄 MOV AL,AH OUT 03H,AL ; 送字节数高8位到字节数寄存器 MOV AL,01 OUT 0AH,AL ; 送屏

22、蔽字,允许通道1的DMA请求 ; 其他工作 DSNDP: IN AL, 08H ; 读状态寄存器 AND AL, 02H ; 判断通道1是否传送结束 JZ DSNDP ; 没有结束,则循环等待 ; 传送结束,处理转换数据 第第9 9章章 DMADMA技术技术9.3.2 8237A的应用举例(续5) 【例9-3】IBM PC/XT机使用一片Intel 8237A和DMA页面寄存器74LS670、DMA地址锁存器74LS373、DMA地址驱动器74LS244等组成DMA控制电路,如图9-14所示。 8237A有4个DMA通道,在IBM PC/XT机系统板上通道0作为动态存储器DRAM刷新使用,其D

23、MA请求信号DREQ0来自计数器/定时器8253通道1的输出端OUT1;通道2和通道3分别用于软盘驱动器和内存之间的数据传输以及硬盘驱动器和内存之间的数据传输,其中DREQ2接至软盘适配器,DREQ3接至硬盘适配器;通道1用来提供其他传输功能,如网络通信功能,当使用串行同步通信适配器(SDLC卡)时,通道1用于同步通信,在内存与SDLC卡之间传输数据,其DREQ1可来自用户或SDLC通信卡。系统中采用固定优先级,即动态RAM刷新操作对应的优先级最高,硬盘和内存的数据传输对应的优先级最低。 第第9 9章章 DMADMA技术技术9.3.2 8237A的应用举例(续6)图9-15 IBM PC/XT

24、微型机的DMAC电路示意图第第9 9章章 DMADMA技术技术9.3.2 8237A的应用举例(续7) 分析:在IBM PC/XT机中,8237A对应的端口地址为000FH,由于8237A只提供16位地址,系统的高4位地址由页面寄存器(74LS670)提供,以形成整个微机系统需要的所有存储器地址。系统分配给页面寄存器的端口地址为80H83H。 在系统ROM-BIOS中有一段上电自测试程序,它对系统各部件进行测试,以确定系统部件是否无故障,然后对8237A的通道0通道4进行初始化。下面是ROM-BIOS对8237A进行测试和初始化的部分程序清单。 OUT 0DH, AL ; 发DMA总清除命令

25、MOV AL, 0FFH ; 通道寄存器测试初始值 第第9 9章章 DMADMA技术技术9.3.2 8237A的应用举例(续8) C16: MOV BL, AL ; 寄存器测试值写入BX MOV BH, AL MOV CX, 8 ; 准备测试DMAC的4个通道的地址 ;寄存器和计数寄存器07是否正常 MOV DX, 0 ; 通道寄存器地址送DX C17: OUT DX, AL ; 测试值低8位写入通道寄存器 OUT DX, AL ; 测试值高8位写入通道寄存器 MOV AL, 0101H IN AL , DX ; 读通道寄存器高8位 MOV AH, AL IN AL, DX ; 读通道寄存器低8位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论