微型计算机接口技术CAI-CHAP05章_第1页
微型计算机接口技术CAI-CHAP05章_第2页
微型计算机接口技术CAI-CHAP05章_第3页
微型计算机接口技术CAI-CHAP05章_第4页
微型计算机接口技术CAI-CHAP05章_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

第5章

DMA控制器

本章知识要点:DMA的功能和操作过程

DMA控制器8237A的结构功能和工作原理

DMA在微机系统中的应用5.1DMA基本概念

DMA方式就是直接存储器存取(DirectMemoryAccess)工作方式。它是高速/O设备与存储器之间进行成批数据交换最直接的传输通道。在这种方式下,CPU不再直接参与数据交换,而是通过DMA的一种专门接口逻辑电路即DMA控制器来负责管理。

5.1.1DMA的操作步骤

DMA控制器初始化DMA数据传送

DMA传送结束

5.1.2DMA控制器的功能

能接收从外设发出的DMA请求,并向CPU发送总线请求信号(HOLD)。

当CPU响应请求,发送响应信号(HLDA)后,能接管对总线的控制,进入DMA操作方式。

能发出存储器地址,确定数据传送的地址单元,并能自动修改地址指针。

能识别数据传送的方向,发出读或写控制信号。

能确定传送数据的字或字节,判断传送是否结束。

发送DMA操作的结束信号。

5.1.3DMA方式的主要应用场合

硬盘和软盘I/O快速通信通道I/O多处理机和多程序数据块传送

扫描操作

快速数据采集

5.2可编程DMA控制器8237A5.2.18237A的内部结构

1.控制逻辑单元

定时和控制逻辑单元

命令控制逻辑单元

优先权控制逻辑单元2.内部寄存器地址寄存器字节寄存器控制寄存器

方式寄存器

状态寄存器

屏蔽寄存器

请求寄存器

暂存寄存器

5.2.28237A的外部引脚及其功能

5.2.38237A的工作方式

1.单字节传输方式

单字节传输方式下,每当DMA请求信号DREQ有效,并且是DMA掌握数据总线时,8237A就完成一个字节数据的传输。每传输一个数据,当前字节计数器的值就减l,而当前地址寄存器的值增1或减1,在其之后8237A释放系统总线,由CPU接管总线管理权。这样,在每个DMA总线周期之后,至少要允许一个CPU总线周期。

2.块传输方式

块传输方式下,当8237A获得总线控制权时,它便以DMA方式传送整批数据,直到当前字节计数器的值减为0。若要强行中断DMA传输过程,则只需要在端输出一个负脉冲或由外部设备往端送入一个低电平脉冲即可。

3.请求传输方式

请求传输方式和块传输方式基本相同,所不同的只是在8237A每传输一个字节后,都要对DREQ端进行测试,如若DREQ一直有效,8237A便传输整批数据,直到当前字节计数器的值为0,最后输出有效结束信号;若测试到DREQ为无效信号时,则暂停数据传输,8237A交回总线控制权;而此时测试过程仍然在进行,如若测试到

DREQ又变为有效信号,则在原来的基础上继续进行DMA的数据传输。

4.级连传输方式

级连传输方式是把几片8237A进行级连,构成主从式DMA系统。连接时,把从片的HRQ端和主片的DREQ端相连,从片的HLDA端和主片的DACK端相连,主片的HRQ和HLDA连接到系统总线上。级连时,要特别注意把主、从片的方式寄存器都要设置为级连输出方式。

5.2.48237A内部寄存器及其作用

1.地址寄存器

基地址寄存器用于存放本通道DMA传送数据时的地址初始值,它可以在编程时由输出语句OUT进行设置。当前地址寄存器的内容在CPU对地址寄存器用OUT指令进行初始设置时被写入。每进行一次DMA数据传输后,当前地址寄存器的值都会自动改变。

2.字节数寄存器

基本字节寄存器用于存放DMA传输时一次所能传输的字节数,它可以在编程时用OUT指令进行设置。当前字节计数器的内容在CPU对基本字节寄存器用OUT命令进行初始设置时被写入。每进行一次DMA传输,当前字节计数器的值就会自动减1,当其值由0000H变为0FFFFH时,当前字节计数器会向总线上发出计数结束信号。3.方式寄存器

4.控制存储器

5.状态寄存器

6.请求寄存器

7.屏蔽寄存器

8.先/后触发器

由于地址寄存器和字节计数器都是16位的,而8237A的数据总线只有8位,因此对于这两个寄存器的初始化设置,必须经过两次数据传输才能完成,一次送给高8位,一次送给低8位。9.8237A各寄存器的端口地址

8237A操作端口地址与命令A3A2A1A0地址寄存器1000018H读状态寄存器1000108H写控制寄存器1001109H写DMA请求标志寄存器1010100AH写DMA屏蔽标志寄存器1011100BH写方式寄存器1100100CH清除先/后寄存器1101010DH读暂存器1101100DH发复位命令1110100EH清除屏蔽标志1111100FH综合屏蔽命令5.3

8237A在微机系统中的应用

5.3.1微机系统的DMA系统结构

PC/AT的DMA系统是把两个8237A串联在一起,构成主从复合结构,主片通过通道0与从片级连。因此它支持7个通道的DMA传输,当该通道响应时它本身并不提供地址和控制信号,而由从片请求的通道提供这些信号。

由于8237A只能提供16位的存储器地址,所以对应每一个通道,需要一个8位寄存器来提供高8位地址,形成24位存储器地址,这样才能访问16MB的系统存储空间。

5.3.2编程实例

1.8237A的初始化和测试

将8237A的4个通道的地址寄存器均设置为0FFFFH。通道0设置为单字节读传输;通道1~3设置为校验传输。校验传输是一种虚拟传输,不修改地址,也不真正传输数据,所以地址寄存器的内容不变。另外还设置了8237A的控制字,使8237A的DACK为低电平有效,DREQ为高电平有效,以固定优先级方式工作,并启动8237A。最后清除4个通道的屏蔽,使4个通道开始工作。

;DMA为通道0的地址寄存器端口地址

MOV AL,04 ;

MOV DX,DMA+8 ;指向8237A的控制寄存器

OUT DX,AL ;写入04,停止8237A工作

MOV DX,DMA+0DH ; OUT DX,AL ;发送主清除命令,使各寄存器复位

MOV CX,4 ;设置循环次数

MOV DX,DMA ;指向通道0地址寄存器WRITE:MOV AL,0FFH ;

MOV DX,AL ; MOV DX,AL ;向地址寄存器中写入0FFFFH INC DX ; INC DX ;指向下一通道

LOOP WRITE;循环,使4个通道的地址寄存器的内容为0FFFFH MOV DX,DMA+0BH ;指向8237A的方式寄存器

MOV AL,58H;设置通道0的工作方式:单字节传输,地址增1

OUT DX,AL ;自动预置

MOV AL,41H;设置通道1的工作方式:单字节校验,地址增1

OUT DX,AL;无自动预置

MOV AL,42H;设置通道2的工作方式:单字节校验,地址增1,

OUT DX,AL;无自动预置

MOV AL,43H;设置通道3的工作方式:单字节校验,地址增1,

OUT DX,AL;无自动预置

MOV DX,DMA+08H;指向8237A的控制寄存器

MOV AL,0;设置8237A控制字:DACK为低电平有效,DREQ OUT DX,AL;为高电平有效,固定优先级,启动8237A工作

MOV DX,DMA+0AH;指向8237A屏蔽寄存器

OUT DX,AL;请通道0屏蔽为

MOV AL,01 ; OUT DX,AL;请通道1屏蔽为

MOV AL,02 ; OUT DX,AL;请通道2屏蔽为

MOV AL,03 ; OUT DX,AL;请通道3屏蔽为将通过取出通道1-3地址寄存器的内容与0FFFFH比较,对各通道进行测试。

MOV CX,3 ;设置循环次数

MOV DX,DMA+2 ;指向通道3地址寄存器READ:IN AL,DX ;取低8位地址

MOV AH,AL ;送(AH) IN AL,DX ;取高8位地址

CMP AX,0FFFFH ;比较取出的16位地址是否为0FFFFH JINZ ERROR ;不等,则转出错处理

INC DX ; INC DX ;指向下一通道的地址寄存器

LOOP READ ;循环,继续测试

2.存储器之间的数据传送在8237A的控制下,把一个数据块从存储器一个区传送到另一个区是通过通道0和通道1完成的。其传送过程是DMA控制器利用一个DMA周期把从源块中读出的数据暂存在DMA控制器的暂存寄存器中,然后到下一DMA周期再将暂存寄存器中的数据写入目的块的存储单元中。当CPU读/写8237A的16位寄存器时,应先将先/后触发器清“0”,传送低字节;然后将先/后触发器置“1”,传送高字节。当CPU读/写8位寄存器之前,应将先/后触发器清“0”。通过主清除命令可以清除8237A中所有寄存器的内容。主清除后,必须重新对8237A进行初始化。0CH、0DH、0EH分别为将先/后触发器清“0”、主清除命令、清除屏蔽寄存器的命令端口,对这三个端口写入任意数据便可完成各自的功能。

利用8237A的通道0和通道1完成存储器之间数据传送的初始化过程如下:

MOV DX,DMA+0DH;指向8237A主清除命令端口

OUT DX,AL ;发送主清除命令

MOV AX,SOURCE ;取源数据块地址

MOV DX,DMA+00H;指向8237A通道0地址寄存器

OUT DX,AL ;源数据块地址低8位写入通道0地址寄存器

MOV AL,AH ;源数据块地址高8位送(AL)

OUT DX,AL ;源数据块地址高8位写入通道0地址寄存器

MOV AX,DST ;取目的数据块地址

MOV DX,DMA+02H;指向8237A通道1地址寄存器

OUT DX,AL

;目的数据块地址低8位写入通道1地址寄存器

MOV AL,AH ;目的数据块地址高8位送(AL)

OUT DX,AL

;目的数据块地址高8位写入通道1地址寄存器

MOV DX,DMA+03H ;指向8237A通道1字节数寄存器

MOV AX,1000 ;数据块长度写入通道1的字节数寄存器

OUT DX,AL MOV AL,AH

OUT DX,AL MOV DX,DMA+08H;指向8237A控制寄存器

MOV AL,1 ;发送控制字08H到控制寄存器,设置允许存储器

OUT DX,AL ;之间数据传送

MOV DX,DMA+0CH;指向8237A先/后触发寄存器

OUT DX,AL ;先/后触发寄存器清“0”

MOV DX,DMA+0BH;指向8237A方式寄存器

MOV AL,88H ;设置通道0为读传输方式

OUT DX,AL MOV DX,DMA+0CH;指向8237A先/后触发寄存器

OUT DX,AL ;先/后触发寄存器清“0”

MOV DX,DMA+0BH;指向8237A方式寄存器

MOV AL,85H ;设置通道1为写传输方式

OUT DX,AL MOV DX,DMA+0CH;指向8237A先/后触发寄存器

OUT DX,AL ;先/后触发寄存器清“0”

MOV DX,DMA+0FH;指向8237A综合屏蔽寄存器

MOV AL,0CH ;屏蔽通道2和通道3

OUT DX,AL MOV DX,DMA+0CH;指向8237A先/后触发寄存器

OUT DX,AL ;

温馨提示

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

评论

0/150

提交评论