第 8章 DMA控制器及其应用教学目标教学重点教学过程教学目标
了解 DMA传送的工作原理和其在系统中的两种工作状态
了解 DMA控制器 8237A的内部结构和内部寄存器
掌握 8237A的工作方式和控制字
掌握 8237A的编程方法教学重点
DMA传送的工作原理和其在系统中的两种工作状态
DMA控制器 8237A的内部结构和内部寄存器
8237A的工作方式和控制字
8237A的编程方法
8.1 概 述
DMA( Direct Memory Access)方式指主要依靠硬件实现主存与 I/O设备之间进行直接的数据传送,它是一般微机系统中都具备的一种 I/O设备与主存传送数据的控制方式,称为直接存储器存取方式。存储器与 I/O设备之间的数据传送在 DMA控制器(又称 DMAC)的管理下直接进行,而不经过 CPU。这种方式大大提高了传送数据的速率,但控制电路复杂,适于大批量高速度数据传送的场合。
8.1.1 DMA传送的工作原理
C P U
总线外 设存 储 器程 序 控 制 的 数 据 输 入 / 输 出
D M A 控 制 的 数 据 输 入 / 输 出
8.1.1 DMA传送的工作原理
C P U
8 0 8 8
总 线逻 辑存 储 器
D M A
控 制 器
8 2 3 7 A
I /O
接 口
I /O
设 备系统总线回答请求主 机 板
DMA传送操作过程如下
( 1)外设准备好数据后向 DMAC发出 DMA请求;
( 2) DMAC经过内部的判优和屏蔽处理后,向总线仲裁机构发出总线请求信号
HRQ,请求占用总线。即 DMAC将此请求传递到 CPU的总线保持端 HOLD,向
CPU提出 DMA请求;
( 3) CPU在完成当前总线周期后检测 HOLD,在非总线封锁条件下,对 DMA请求作出响应;一是 CPU将地址总线、数据总线、控制总线置高阻,放弃对总线的控制权;二是 CPU送出有效的总线响应信号 HLDA加载至 DMAC,告之可以使用总线;
( 4) DMAC接收到有效的总线响应信号后,向外设送出 DMA应答信号,通知外设做好数据传送准备,同时占用总线,开始对总线实施控制;
( 5) DMAC送出内存地址和对内存与外设的控制信号,控制外设与内存或内存与内存之间的数据传送;
( 6) DMAC通过计数控制将预定的数据传送完后,一方面,向外设发出传送结束信号,另一方面,向 CPU发出无效的 HOLD信号,撤消 CPU的 DMA请求;
( 7) CPU收到此信号后,送出无效的 HLDA,并重新开始控制总线,实现正常的总线控制操作。
在 DMA传送期间,HRQ信号和 HLDA信号一直有效,直至 DMA传送结束。
8.1.2 DMA控制器在系统中的两种工作状态
DMA控制器与其他外围接口控制器不同,它具有接管和控制系统总线的功能,即取代
CPU而成为系统的主控者。但在取得总线控制权之前,它也要受 CPU控制。 DMA控制器在系统中有两种工作状态:主动态与被动态;
并处在两种不同的地位:主控器与受控器。
8.1.2 DMA控制器在系统中的两种工作状态存 储 体地址译码器数据缓冲器控 制逻 辑电 路存 储 体
n 位 地 址
0
1 12?n
0
1
m
… …
CS W/R
m 位数 据
8.2 DMA控制器
当数据传送工作在 DMA方式时,其过程完全由一种硬件电路来实现的,这种硬件电路称为 DMA控制器( DMAC)。 DMAC具有接收外设 DMA请求、向 CPU发出总线请求、形成地址信号和控制信号、自动修改指针、发出结束信号等基本功能。
8.2 DMA控制器
8237A是一种高性能可编程 DMA控制器,它具有一下主要特性:
( 1)有四个独立 DMA通道,也可以采用级联方式对通道数目进行扩充。
( 2)各通道具有独立的允许 /禁止 DMA请求的控制功能和自动预置功能。
( 3)具有两种优先级可供选择:固定优先级和循环优先级。
( 4)各通道具有四种工作方式:单字节传送方式、数据块传送方式、请求传送方式和级联方式。
( 5)具有两种基本时序:正常时序和压缩时序。
8.2.1 8237A的内部结构和引脚
2.内部结构
8237A组成
8237A主要由三个基本控制逻辑单元、三个地址 /数据缓冲器单元和一组内部寄存器组成。
( 1)控制逻辑单元:包括定时和控制逻辑、命令控制逻辑和优先级控制逻辑。根据初始化编程所设置的工作方式寄存器的内容和命令,在输入时钟信号的控制下,定时和控制逻辑产生 8237A的内部定时信号和外部控制信号。在 CPU控制总线时,命令控制逻辑将 CPU在初始化编程送来的命令字进行译码,当 8237A进入 DMA服务时,命令控制逻辑对 DMA
的工作方式控制字进行译码。优先级控制逻辑用来裁决各通道的优先权 顺序,解决多个通道同时请求 DMA服务时可能出现的优先权竞争问题。
( 2)地址 /数据缓冲器单元包括 I/O缓冲器 1,I/O缓冲器 2和输出缓冲器。
( 3)内部寄存器,将在下一节详细讲解。
2 8237A的内部寄存器
1.基地址寄存器
2.当前地址寄存器
3.基字节计数寄存器
4.当前字节计数寄存器
5.控制寄存器
6.工作方式寄存器
7.屏蔽寄存器
8.请求寄存器
9.状态寄存器
10.暂存寄存器
3.8237A的工作方式
4,8237A的控制字和编程
8237A的控制字
2,8237A初始化编程
对 8237A初始化编程分为以下几个步骤:
( 1)发清除命令:向 DMA+0DH端口执行一次写操作,就可以复位内部寄存器。
( 2)写地址寄存:将传送数据块的首地址和末地址按照先低位后高位的顺序写入基地址寄存器和当前地址寄存器。
( 3)写字节计数器:将传送数据块的字节数 N(写入的值为 N-1)按照先低位后高位的顺序写入基字节计数器和当前字节计数器。
( 4)写工作方式寄存器:设置工作方式和操作类型。
( 5)写屏蔽寄存器:开放指定 DMA通道的请求。
( 6)写控制寄存器:设置和的有效极性,启动 8237A工作。
( 7)写请求寄存器:共有用软件请求 DMA传送(存储器与存储器之间的数据块传送)时,才需要写该寄存器。
8.3 8237A的应用举例
1.电路连接
2.程序清单
STACK SEGMENT PARA STACK
‘STACK’
DB 256 DUP(0);堆栈区 256个字节
STACK ENDS
DATA SEGMENT
DAM EQU 0
BUFFER DB 4 DUP(0FH);待传送的 4个字节数据
DATA ENDS
2.程序清单
CODE SEGMENT
START PROC FAR
ASSUME CS,CODE,DA,DATA
PUSH DS;保存 DS段地址
MOV AX,0
PUSH AX;保存返回地址的偏移量
MOV AX,DATA
MOV DS,AX;建立数据段地址
CLI;禁止全部中断申请
2.程序清单
MOV AL,89H ;工作方式:通道 1,读传送,禁止;自动预置,地址加 1,成组传送
OUT DMA+0BH,AL ;
写通道 1方式寄存器
OUT DMA+0CH,AL ;
清除字节指示器,计算缓冲区 20位绝对地址
MOV AX,DS;取数据段地址
MOV CL,4;移位次数
ROL AX,CL;循环左移 4次
MOV CH,AL;将 DS的高 4位存 CH
AND AL,0F0H ;去除 DS的高 4位
MOV BX,OFFSET BUF ;
获得缓冲区首地址偏移量
2.程序清单
ADD AX,BX ;
计算 16位绝对地址
JNC DMAIN;无进位则跳至 DMAIN
INC CH;有进位则 DS高 4位加 1
DMAIN,OUT DMA+2,AL;通道 2当前地址寄存器和基地址寄存器低 8位
MOV AL,AH
OUT DMA+2,AL;通道 2当前地址寄存器和基地址寄存器高 8位
MOV AL,CH
2.程序清单
AND AL,0FH ;取高
4位绝对地址
OUT 083H,AL;高 4位地址写入页面寄存器第三组
MOV AL,03H;通道 1基字寄存器低 8位
OUT DMA+3,AL;通道 1基字寄存器高 8位
OUT DMA+8,AL;命令字为 0,允许 DMA,正常时序,固定优先权;滞后写,高电平有效,低电平有效
2.程序清单
MOV AL,01H
OUTDMA+10,AL;清除通道 1屏蔽位,允许通道 1DMA请求
STI
START ENDP
CODE ENDS
ENDSTART
小 结
数据传送是微型计算机系统中大量进行的操作。存储器与存储器之间或存储器与 I/O设备之间的数据传送可以采用 DMA方式进行。 DMA传送过程由 DMA
控制器直接控制,借助于总线来完成,不受 CPU干预。因此,可以进行大量的、快速的数据传送。
DMA控制器具有接收外设 DMA请求、向 CPU发出总线请求、形成地址信号和控制信号、自动修改指针、发出结束信号等基本功能。 8237A是一种常用的高性能可编程 DMA控制器,用来对 DMA传送过程进行控制。它有多类型的可编程控制特性,从而可增进系统的优化和增大数据的吞吐量,并允许在程序控制下实现动态控制。