第8章 DMA控制器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
wk.baidu.com
8.1.3 DMA操作步骤
3.DMA传送结束
DMA传送完毕时,可利用字 节计数器为0的信号由DMA控制 器发出一信号使微处理器中用 作总线请求的引线HOLD端被禁 止,从而结束DMA控制。
8.2 可编程DMA控制器8237A
8.2.1 8237A主要特性 8.2.2 8237A内部结构 8.2.3 8237A的引脚及功能 8.2.4 8237A方式控制字 8.2.5 内部寄存器的寻址 8.2.6 软件命令
(2)若CPU响应请求,则发出DMA响应信号后,DMA控制器能接管对总线 的控制,进入DMA操作方式。
(3)DMA控制器具有存储器寻址功能,并能自动修改地址指针。 (4)根据数据传送的方向,由DMA控制器向外设或存储器发出相应的读 或写等控制信号。 (5)DMA控制器控制传送数据的字节数,并根据传送字节数的状态判断 DMA传送是否结束。 (6)当数据传送完成后,DMA控制器发出DMA操作的结束信号,释放总线 控制权给CPU,使CPU恢复正常工作。
DMA控制器(简称DMAC)是专用于控制数据的输入和输出的硬件。 DMA方式可实现:
数据存储器RAM → I/O端口的DMA读传送、I/O端口 → 数据存储器RAM的DMA写传送、数据存储器RAM → 数据存储器RAM的存储单元传送。 在DMA传送期间,CPU释放系统总线的控制权,由DMA控制器接管。在 DMA控制器的控制下,数据直接在存储器和I/O设备之间传送。 DMA方式是采用请求-响应方式工作,它的优先权高于中断方式的优 先级别。
8.2.4 8237A方式控制字
2.当前地址寄存器
当前地址寄存器为16位,用于存放DMA传送访问的存储器地址。 该寄存器的初值是在CPU编程时和基地址寄存器同时写入的。 在DMA传送时,每传送一个字节,寄存器的内容自动加1或减1, 以提供下一次传送的地址值。 当前地址寄存器的内容可由CPU以连续两字节方式写入或读出。 若设置成自动预置方式,则在有效,DMA传送结束后,将基地址寄存 器的内容重新赋给当前地址寄存器,恢复其初值。
8.1.1 直接存储器存取DMA概念
8.1.2 DMA控制器组成与功能
一个DMA控制器,实际上是采用DMA方式的外围设备与系统总线之间的接口电 路,这个接口电路是在中断接口的基础上再加DMA机构组成习惯上将DMA方式的接 口电路称为DMA控制器。
DMA控制器在存储器与I/O设备之间传送数据时,是具有控制作用器件,DMA 控制器具有对存储器和I/O端口存取数据的能力。
8.1.3 DMA操作步骤
2.DMA数据传送
DMA数据传送步骤如下(以输入操作为例): (1)外设发出选通脉冲,把输入数据送入数据缓冲寄存器,并使DMA请求触 发器置“1”; (2)DMA请求触发器向控制/状态端口发出准备就绪信号,同时向DMA控制器 发出DMA请求信号; (3)DMA控制器向CPU发出HOLD请求; (4)CPU在完成了现行机器周期后,即响应DMA请求,发出HLDA信号,并由 DMA控制器发出DMA响应信号,使DMA请求触发器复位。此时,CPU浮动它的总线, 使之进入高阻状态,于是由DMA控制器或相应的外围设备接管系统总线; (5)DMA控制器控制系统总线,发出存储器地址,并在数据总线上给出数据, 随后在其R/W线上发出“读”或“写”的命令; (6)数据沿着数据总线直接在I/O设备与存储器之间传送; (7)每传送一个字节,DMA控制器的地址寄存器加1,从而得到下一个地址, 字节计数寄存器则减1。如此循环,直到字计数器的值为0,数据传送完毕。
8.2.5 内部寄存器的寻址
8.2.6 软件命令
对于内部寄存器,8237A还提供了软件命令以清除某些 寄存器。
软命令就是只要对特定的地址进行一次写操作命令就生 效,而与写入的具体数据无关。
软件命令共有三条:
1、主清除命令 2、清字节指针触发器命令 3、清屏蔽寄存器命令
8.3 8237A程序设计
8.2.4 8237A方式控制字
4.工作方式寄存器
工作方式寄存器用于控制某个通道的DMA传送方式和传送方向。 D7D6:这两位决定DMA传送方式。分为请求工作方式、单字节方式、成组传送 方式和级联方式四种。
8.2.4 8237A方式控制字
5.命令寄存器
命令寄存器为8位寄存器,4个通道公用。用于控制8237A的操作,其内容 由CPU写入,进行初始化编程或写入新的命令,而用复位信号RESET或软件清除 命令来清除它的内容。该寄存器只能写,不能读。
第8章 DMA控制器
8.1 DMA基本概念 8.1.1直接存储器存取DMA概念 8.1.2 DMA控制器组成与功能 8.1.3 DMA操作步骤
8.2 可编程DMA控制器8237A 8.2.1 8237A主要特性 8.2.2 8237A内部结构 8.2.3 8237A的引脚及功能 8.2.4 8237A方式控制字 8.2.5内部寄存器的寻址 8.2.6软件命令
MOV AL, 04
;命令字,禁止8237A工作
OUT DMA+08, AL
;命令字送命令寄存器
OUT DMA+0DH,AL
;总清命令,8237A进入空闲周期
;全“1”检测
MOV AL, 0FFH
BEG:MOV BL, AL ;暂存AX到BX
MOV BH, AL
MOV CX, 8 ;循环测试8个寄存器
8.状态寄存器
状态寄存器为8位寄存器,用于存放8237A内部的状态信息,提供哪些 通道已到终止计数,哪些通道有DMA请求等状态信息供CPU使用,只能由 CPU读取。该寄存器只能读出,不能写入。
8.2.4 8237A方式控制字
9.暂存寄存器
暂存寄存器为8位寄存器。在存储器至存储器传送方式中,用于 暂时存放由源地址单元读出的数据,再由暂存器写至目的单元。在一 个字节传送完后,暂存器保存着刚传送的字节。RESET信号清除暂存 寄存器的内容。
MOV DX, DMA ;FF写入0-3号通道的基地址或字节数寄存器
8.3.1 8237A初始化编程 【例8-1】
LP1:OUT DX, AL ;写入低8位
OUT DX, AL ;再写入高8位
IN AL, DX ;读出写入的低8位
MOV AH, AL ;保存到AH
IN AL, DX ;读出写入的高8位
8.2.2 8237A内部结构
8.2.2 8237A内部结构
1.控制逻辑单元
定时和控制逻辑单元 命令控制单元 优先权控制逻辑单元
2.缓冲器
两个I/O缓冲器 一个输出缓冲器
8.2.2 8237A内部结构
3.内部寄存器
8.2.3 8237A的引脚及功能
8.2.4 8237A方式控制字
8237A每个通道有5个寄存器 工作方式寄存器 基地址寄存器 当前地址寄存器 基字节数寄存器 当前字节数计数器
8.2.4 8237A方式控制字
7.屏蔽寄存器
用来禁止或允许通道的DMA请求。当屏蔽位置位时。禁止本通道的DREQ进入。 若通道编程为不自动预置,则当该通道遇到 EOP 信号时,它所对应的屏蔽位置 位。
屏蔽字有两种格式,即写1位屏蔽位的屏蔽字和写4位屏蔽位的屏蔽字。
8.2.4 8237A方式控制字
8237A有4个通道共用的寄存器 命令寄存器 状态寄存器 请求寄存器 屏蔽寄存器 暂存器
8.2.4 8237A方式控制字
1.基地址寄存器和基字节数寄存器
两个寄存器均为16位。 用于存放DMA操作所需访问的存储器起始地址和传送字节数的初值。 两个寄存器的内容是在初始化编程时,由CPU以连续两字节方式与 对应的当前寄存器同时写入,在DMA传送期间,值保持不变。 两个寄存器的内容只能写入不能读出。在自动预置方式时,两个寄 存器的内容用于DMA传送结束时,恢复当前地址寄存器和当前字节计数 器。
CMP BX, AX ;读出的与写入的比较
JE LP2
;相等,则转LP2,转入下一寄存器
HLT
;不相等,则出错,系统停止
LP2:INC DX
;寄存器口地址+1,指向下一个寄存器
8.3.1 8237A初始化编程 【例8-1】
【例8-1】初始化8237A。对PC系列的DMA控制器8237A进行检测用。测试程
序对4个通道的8个16位寄存器先后写入全“1”和全“0”,再读出比较其是否一
致。若不一致,则出错,停机。(设程序中的变量DMA地址是00H)。
;检测前,禁止DMA控制器工作
8.2.4 8237A方式控制字
5.命令寄存器
旋转优先权示意
8.2.4 8237A方式控制字
6.请求寄存器
DMA请求可由I/O设备发出,也可由软件产生。请求寄存器是用于由软件来 启动DMA请求的。软件请求DMA传输操作必须是成组传输方式,并且在传送结束 后,EOP 信号会清除相应请求位。
每执行一次软件请求DMA传送,都要对请求寄存器编程一次。RESET信号清 除整个请求寄存器。软件请求位是不可屏蔽的。该寄存器只能写,不能读。
8.1.2 DMA控制器组成与功能
1.硬件组成
(1)存储器地址寄存器 (2)传送字节计数器 (3)控制与状态寄存器 (4)数据缓冲寄存器 (5)其他电路
8.1.2 DMA控制器组成与功能
2.DMA控制器功能
(1)接收从外设发来的DMA请求到DMA控制器,然后由DMA控制器向CPU发 出DMA请求信号。
8.2.1 8237A主要特性
使用单一的+5V电源,单相时钟,40条引脚,双列直插式封装。 具有4个独立的通道,每个通道都具有64K存储器寻址能力,一次传 送的最大长度可达64K字节。可以在存储器和外设之间传送数据,也可 以在存储器之间进行传送。 每一通道的DMA请求都可以分别允许和禁止。每一通道的DMA请求的 优先权,可由编程规定为固定方式或旋转方式。 有4种工作方式:单字节传送方式、数据块传送方式、请求传送方式、 级联方式。 可以用级联的方式扩展通道数,最多可达16个DMA通道。 有一条结束DMA传送的输入信号来结束DMA传送或重新初始化。
8.3.1 8237A初始化编程 8.3.2 8237A应用实例
8.3.1 8237A初始化编程
初始化编程主要包括:
(1)输出主清除命令,使8237A处于复位状态,以接收新命令; (2)写入工作方式寄存器,以确定8237A工作方式和传送类型; (3)写入命令寄存器,以控制8237A的工作; (4)根据所选通道,输入相应通道当前地址寄存器和基地址寄存 器的初始值; (5)输入当前字节计数器和基字节数寄存器的初始值; (6)写入屏蔽寄存器; (7)写入请求寄存器,便可由软件启动DMA传送。否则,经过(1) -(6)步编程后,由通道DREQ启动DMA传送的过程。
8.2.4 8237A方式控制字
3.当前字节计数器
当前字节计数器为16位。 在DMA传送中,当前字节计数器保存当前所要传送的字节数,其初 值是CPU编程时和基字节数寄存器同时写入的。每传送一个字节,寄存 器的内容减1,减至0时,将产生一个终止计数脉冲输出。 该寄存器的内容可由CPU以连续二字节方式写入或读出。若设置成 自动预置方式,在DMA传送结束,产生 EOP 有效信号后,将基字节数 寄存器的内容置新赋给当前字节计数器,恢复其初值。
8.1.3 DMA操作步骤
1.DMA控制器的预置(初始化)
DMA操作之前,必须把一些信息,如传送方向、存储器首地址、传 送字节数等预置入DMA控制器。
指定数据传送方向,即指定I/O设备要对存储器“读”还是“写”, 这就要指定其控制/状态寄存器中相应的控制位的值;
数据应传送至何处,这就要指定其地址的初值(即首地址); 传送字节数即有多少数据(字数)需要传送,也就是要指定其字计 数寄存器的初值。 预置DMA控制器初值的工作,是由CPU执行指令来完成的,即把DMA 控制器内部相应的寄存器看作是I/O端口,用输出指令把这些内容存放 到相应的寄存器中去。
8.3 8237A程序设计 8.3.1 8237A初始化编程 8.3.2 8237A应用实例
8.1 DMA基本概念
8.1.1直接存储器存取DMA概念 8.1.2 DMA控制器组成与功能 8.1.3 DMA操作步骤
8.1.1 直接存储器存取DMA概念
DMA是用硬件实现计算机内存储器与I/O设备之间直接进行数据传送, 而不再通过CPU进行传送,传送期间也无须CPU干预。
相关文档
最新文档