第6章-DMA技术(含前五章部分作业讲解)-副本_第1页
第6章-DMA技术(含前五章部分作业讲解)-副本_第2页
第6章-DMA技术(含前五章部分作业讲解)-副本_第3页
第6章-DMA技术(含前五章部分作业讲解)-副本_第4页
第6章-DMA技术(含前五章部分作业讲解)-副本_第5页
已阅读5页,还剩113页未读, 继续免费阅读

下载本文档

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

文档简介

第6章-DMA技术(含前五章部分作业讲解)---副本第一页,共120页。背景:程序控制方式和中断方式都需CPU的干预。对于高速、大批量的数据传输,若由CPU一条一条执行指令来完成数据交换,效率低下。原理:DMA(DirectMemoryAccess,直接内存传输)方式下,通过专用接口,让存储器与高速外设之间直接交换数据,而无需CPU的干预;并且内存地址的修改、传送开始和结束控制都由硬件电路实现,大大提高了传输速度。特点:用硬件控制代替软件控制。实现硬件控制的器件称为DMA控制器(DMAC)。它是DMA传输的核心器件。应用场合:高速、大批量的数据传输。

6.1DMA概述2第二页,共120页。6.1.1DMA传送特点DMA传送方式下,数据的传送不经过CPU,由DMA控制器来实现内存和外设,外设和外设之间的直接快速传送。DMA传送用于需要高速大批量数据传送的系统中,以提高数据的吞吐率。DMA传送方式的优点是以增加系统硬件的复杂性和成本为代价的。RAMCPU外设DMA控制器总结:DMA传送与其他传送方式相比,不同之处主要体现在控制源、传送路径、控制方式。第三页,共120页。1.申请阶段I/ODMACDMA请求DREQ①CPU总线请求HRQ②6.1.2DMA传送过程a.外设向DMAC发出DMA请求信号DREQ:当外设有DMA需求且准备就绪,向DMAC发出DMA请求信号DREQ。b.DMAC向CPU发总线请求信号HRQ:DMAC收到DMA请求后,通过CPU的HOLD引脚向CPU发出总线请求信号HRQ。

第四页,共120页。2.响应阶段c.CPU收到总线请求后,若允许DMA传输,则会在当前总线周期结束后发出DMA响应信号HLDA。CPU释放总线控制权(三组总线置高阻态);CPU向DMAC发HLDA信号,通知DMAC,CPU已释放了总线控制权。I/ODMAC请求DREQ①请求HRQ②

回答DMACK④CPU(包括总线裁决)

回答HLDA③第五页,共120页。3.数据传送阶段d.DMAC向外设发DMA请求回答信号DACK。 DMAC获得总线的控制权,向外设发DMAC的应答信号DACK,通知外设可以开始进行DMA传输。e.DMAC送出地址和控制信号,进行外设与内存间的数据传输。4.传送结束阶段e.数据传送完毕,DMAC传送外设“过程结束”信号。数据传输完毕后,DMAC通过CPU的HOLD引脚发出撤销总线请求信号。CPU收到该信号后,使HLDA无效,同时收回对总线的控制权。状态:DMAC脱离总线,CPU重新控制总线。一次DMA传送只需执行一个DMA周期,其时间相当于一次总线写周期的时间。4/19/20236第六页,共120页。DMA的传送过程当外设有DMA需求且就绪,向DMAC发请求信号DREQ。DMAC收到请求后,通过HOLD引脚向CPU发总线请求信号HRQ。CPU若允许DMA传输,则释放总线控制权,并发响应信号HLDA。DMAC收到HLDA并获得总线控制权后,向外设发应答信号DACK,通知其可以开始进行DMA传输。DMAC送出地址和控制信号,进行外设与内存间的数据传输。数据传输结束后,DMAC通过的HOLD引脚发撤销总线请求。CPU收到请求后,使HLDA无效,同时收回总线控制权。7第七页,共120页。DMA传送示例下面以图8-2为例来简要说明DMA操作方式的工作过程。假定8086CPU工作于最小模式,且是将存储器中的数据传送给外部设备。在DMA操作之前,DMA控制器作为系统的一个接口部件,接受CPU送来的操作命令,也即对DMA控制器进行初始化,以规定传送类型(存储器和外设之间)、操作方式(单字节传送)、传送方向、内存的首地址、传送的字节数等。在完成初化编程之后,DMA控制器就准备好进行DMA操作,传送一个字节数据的过程如下(在图8-2中以括号内的序号表示)。第八页,共120页。

(1)接口已作好接收数据准备,向DMA控制器发出DMA请求信号DRQ。(2)DMA控制器向CPU发总线请求信号HRQ,该请求信号送到CPU的HOLD引脚。(3)CPU在完成当前总线周期操作之后(若总线处于空闲状态,则立即做出响应),使地址总线、数据总线及部分控制总线引脚处于高阻态(也即和系统总线处于隔离状态),并向DMA控制器发总线请求的响应信号HLDA,把总线控制权交给DMA控制器。第九页,共120页。

(4)DMA控制器将地址(A19~A0)送地址总线,该地址用来寻址内存储单元。(5)DMA控制器向I/O接口发DMA请求的响应信号DACK,该信号通常作为接口接受数据的控制信号。(6)DMA控制器向存储器发读控制信号,在该信号的控制下,由A19~A0指定的内存单元内容被送入数据总线。第十页,共120页。图8-2用DMA方式传送单个数据第十一页,共120页。

(7)DMA控制器向接口发写控制信号,在该信号及DACK信号的共同作用下,将数据总线上的内容写入接口中的数据寄存器,并通过接口将数据传送给外设,至此完成了一个字节数据的传送。(8)DMA控制器撤销对CPU的总线请求信号。(9)CPU撤销总线请求的响应信号并恢复对总线的控制。如果数据块未传送完,则又从第二步开始重复上述过程。第十二页,共120页。6.2DMA操作2.DMA操作方式单字节方式连续方式请求方式1.DMA操作类型数据传送数据校验数据检索第十三页,共120页。数据传送DMA读:把数据由存储器传送到外设。DMA写:把外设输入的数据写入存储器。存储器到存储器:实现内存区域到内存区域的读写。1DMA的操作类型

DMA读写操作均是针对存储器而言。14第十四页,共120页。数据校验DMA过程一样,只是不发送读写控制信DMA校验:不进行数据传送,而是对数据块内部的每个字节进行校验。数据检索 查找关键字或者关键字节。

第十五页,共120页。单字节方式:

通道启动一次,只传送一个数据,传送完就释放系统总线交还CPU。

请求方式:

每传送一个字节之后,要检测(询问)DREQ是否有效,若无效,则释放总线,若有效,继续传送直至字节计数器为0。连续方式:

启动一次可把整个数据块传送完,并且,当前字节计数器减到0,产生EOP信号,释放总线。

2DMA的传送方式第十六页,共120页。单字节传送方式每传送完一个字节数据,DMA控制器放弃总线控制权。传送下一个字节时,再重新申请使用总线。特点:DMA控制器不会长时间占用总线。CPU可在每个DMA周期结束后立即控制总线。CPU与DMA控制器轮流控制系统总线,因此不会对系统运行产生较大影响。缺点:DMA传输效率低。2DMA的传送方式17第十七页,共120页。允许DMADMAC发总线请求CPU响应DMA放弃总线DMAC控制传一个字节放弃总线中断请求NDMA放弃总线NYYDMA请求?块结束否?18第十八页,共120页。数据块传输方式DMA控制器获得总线控制权后,可连续传输多个字节。只有当字节全部传送完毕,或被外部强制停止,它才释放总线控制权。优点:传输效率高。缺点:DMA传输期间CPU长时间不能控制总线,若一次传输的数据较多,会对系统产生影响。19第十九页,共120页。20第二十页,共120页。请求传输方式类似数据块传输方式。不同之处在于:每传输一个字节后,DMA控制器对外设的DMA请求信号DREQ进行测试;若DREQ无效,则停止DMA传输,归还总线控制权。优点:实现灵活,DMA操作可由外设利用DREQ信号控制发送过程。21第二十一页,共120页。允许DMADMAC发出总线请求CPU响应DMA放弃总线DMAC控制传一个字节放弃总线中断请求YY放弃总线NNYDMA请求?块结束?DMA请求?N22第二十二页,共120页。级联传输方式将多个DMAC连在一起,一个为主,其余为从。从片收到外设的DMA请求后,不是向CPU申请总线,而是向主片申请,再由主片向CPU申请。23第二十三页,共120页。6.3DMA控制器被动态(受控器):未取得总线控制权,受CPU的控制。主动态(主控器):接管并取得总线控制权,取代CPU而成为系统的主控者。

一.DMAC在系统中的工作状态特点:有处理器的功能第二十四页,共120页。DMA控制器2种工作状态被动工作状态:CPU对DMAC进行控制和指挥。例如:向DMAC写入内存传送区的首地址、传送字节数和控制字。此时,DMAC相当于一个外设接口,称为总线从模块或受控器。主动工作状态:进行DMA传输时,DMAC取代CPU,获得总线控制权,成为总线的主控者,向存储器和外设发信号。此时,DMAC称为总线主模块或主控器。25第二十五页,共120页。返回本章首页

二.总线控制权在DMAC和CPU之间的转移两类握手信号:DMAC和I/O设备之间DREQDACKDMAC和CPU之间HRQHLDA4/19/202326第二十六页,共120页。传送顺序R/WI/ODMACCPUI/ORAMDMAC①DREQ②HRQ③HLDA④DACK由被动态进入主动态

(总裁)经总线裁决后认可,进入总线保持状态,CPU失去总线控制权经判优及屏蔽处理后I/ODMACRAMCPUDMAR/W①DREQ②HRQ③HLDA④DACK第二十七页,共120页。DMAC和CPU对总线的连接与脱开过程:28第二十八页,共120页。6.4DMAC-82371.8237-DMAC的特点:(1)四个独立通道(可对4个I/O设备进行DMA服务)(2)64KB寻址与计数能力(3)数据传输率1.5Mb/s

(4)有级联方式和多种操作模式第二十九页,共120页。8237的外部引脚图:第三十页,共120页。8237A的外部引脚及其功能特性8237A的外部引脚共有40个,各引脚功能特性如下:CLK:时钟频率,为输入信号。它控制DMA数据传送的速率及8237A内部操作的定时。CS:片选信号,为输入信号。低电平有效。RESET:复位信号,为输入信号,高电平有效。4/19/202331第三十一页,共120页。READY:准备就绪信号,为输入信号,高电平有效。ADSTB:地址选通信号,为输出信号,高电平有效。AEN:地址允许信号,为输出信号,高电平有效。MEMR:寄存器读信号,为输出信号,低电平有效。当此信号有效时,被选中的寄存器单元的内容被读到数据总线上。4/19/202332第三十二页,共120页。MEMW:寄存器写信号,为输出信号,低电平有效。当此信号为低电平时,数据总线上的内容被写入被选中的寄存器单元。IOR:I/O设备读信号,为双向信号,低电平有效。

IOW:I/O设备写信号,双向信号,低电平有效。EOP:DMA传输结束信号,双向信号,低电平有效。4/19/202333第三十三页,共120页。DREQ:DMA请求信号,属输入信号,有效电平由程序选定。DACK:DMA响应信号,属于输出信号,有效电平由程序选定。HRQ:总线请求信号,属于输出信号,高电平有效。4/19/202334第三十四页,共120页。HLDA:总线响应信号,属于输入信号,高电平有效。

A7~A4:高4位地址线,双向信号在进行DMA传输时提供高4位地址。A3~A0:低4位地址线(主动态);寄存器端口寻址(被动态)。DB7~DB0:8位双向数据线(被动态);高8位地址线(主动态)。4/19/202335第三十五页,共120页。2.8237的内部逻辑结构共用寄存器:命令寄存器、状态寄存器、请求寄存器、屏蔽寄存器、方式寄存器、暂存寄存器通道寄存器(0,1,2,3)基地址寄存器、当前地址寄存器、基字节计数器,当前字节计数器第三十六页,共120页。82C37A内部逻辑框图4/19/202337第三十七页,共120页。2.内部逻辑结构(1)I/O设备的请求信号DREQ0-3

由I/O向DMAC发出,DREQ0优先级最高。

(2)DMAC回答I/O的信号DACK0-3

注意:系统允许多个DREQ信号同时有效,即可以几个I/O同时提出申请,但同一个时间,只能有一个DACK信号有效。(3)总线请求和应答信号:HRQ和HLDA(4)读写控制信号:IOR-、IOW-、MEMR-、MEMW-;(5)地址线A0-7(6)双向数据线DB0-7:既是数据线,又是16位地址线的高8位。第三十八页,共120页。三、8237A内部寄存器3种基本传送方式3种DMA传送类型2种工作时序2种优先级排队1种传送地址和字节数1种RAM-RAM之间传送(3:3:2:2:1:1)通过编程可完成。第三十九页,共120页。三、8237A内部寄存器及编程(1)通道寄存器(0,1,2,3)

读通道当前地址寄存器(16bit)

读通道当前字节计数器(16bit)

写通道基地址与当前地址寄存器(16)

写通道基字节计数器与当前字节计数器(16)(2)共用寄存器工作方式寄存器命令寄存器状态寄存器屏蔽寄存器1.内部寄存器第四十页,共120页。寄存器组4/19/202341第四十一页,共120页。8237A内部共有10种寄存器,对这些寄存器进行读、写操作共有16个端口,记为DMA+0~DMA+15,使用地址A3~A0进行寻址。每个通道有2个专用的地址,其余8个地址由各通道共用。其地址分配情况如下表。8237A内部寄存器的地址分配42第四十二页,共120页。端口通道I/O端口地址寄存器读(IOR)写(IOW)DMA+0000H当前地址寄存器基地址与当前地址寄存器DMA+1001H当前字节计数器基字节与当前字节寄存器DMA+2102H当前地址寄存器基地址与当前地址寄存器DMA+3103H当前字节计数器基字节与当前字节寄存器DMA+4204H当前地址寄存器基地址与当前地址寄存器DMA+5205H当前字节计数器基字节与当前字节寄存器DMA+6306H当前地址寄存器基地址与当前地址寄存器DMA+7307H当前字节计数器基字节与当前字节寄存器4个通道专用的8个地址43第四十三页,共120页。各通道共用的8个地址端口通道I/O端口地址寄存器读(IOR)写(IOW)DMA+8公用08H状态寄存器命令寄存器DMA+909H——请求寄存器DMA+100AH——单通道屏蔽寄存器DMA+110BH——工作方式寄存器DMA+120CH——

清除先/后触发器命令*DMA+130DH暂存寄存器

总清命令*DMA+140EH——

清四通道屏蔽寄存器命令*DMA+150FH——四通道屏蔽寄存器注意:*为软命令。44第四十四页,共120页。(1)基值地址寄存器(DMA+0,+2,+4,+6)存放DMA传送的内存首址,在初始化时由CPU写入,传送中基值地址不变16位CPU连续两字节按先低字节后高字节顺序写入只写,不可读在“自动预置方式”下的作用它存放着与当前地址寄存器相联系的初始值。CPU同时写入基地址寄存器和当前地址寄存器。但基地址寄存器的值不会修改,且不能读出。2.寄存器编程4/19/202345第四十五页,共120页。(2)当前地址寄存器(DMA+0,+2,+4,+6)存放DMA传送地程中的内存地址.初值与基值地址相同,每次传送地址会自动加1(减1),可读可写。16位长CPU连续两字节按先低字节后高字节顺序写入和读出若8237A编程为自动初始化,则在每次DMA操作结束发出信号后,该寄存器自动恢复为它的初始值。重载初始值的条件(联想8253)“自动预置方式”出现EOP#信号4/19/202346第四十六页,共120页。(3)基值字节计数器(DMA+1,+3,+5,+7)16位只写不读。基本字节计数器用来存放每次DMA操作需要传送的字节总数,其值比实际需传送的字节数少1。初值也是在编程时由CPU写入的,而且初值也被同时写入当前字节计数器。在DMA传送时,每传送1个字节,当前字节计数器就值就自动减1,当由0减到FFFFH时,产生计数结束信号。第四十七页,共120页。(4)当前字节计数器(DMA+1,+3,+5,+7)16位存放DMA传送过程中没有传送完的节数,每传送一个字节后减1,传送完毕,产生EOP-。CPU连续两字节按先低字节后高字节顺序写入和读出实际传送比编程写入的字节数大1(举例)原因是:从0减1到FFFFH时才发出终止信号当它的值由零减为FFFFH时,将发出信号,表明DMA操作结束。它的值可由CPU读出。在自动初始化方式时,有效时自动装入初始值(即基地址寄存器的值)。第四十八页,共120页。D7D6D5D4D3D2D1D0模式选择00:请求方式01:单字节方式10:连续方式11:级联方式地址增量D5=1地址减1D5=0地址加100=校验01=DMA写:I/O→RAM10=DMA读:RAM→I/O11=无效类型选择通道选择00=0通道01=1通道10=2通道11=3通道自动预置D4=1:自动D4=0:非自动格式:(5)工作方式寄存器(DMA+11)

功能:用于控制DMA传送的操作方式,传送类型以及自动预置。第四十九页,共120页。说明:

单字节方式:通道启动一次,只传送一个字节数据,传送完就释放系统总线交还CPU,并且:当前地址寄存器+1(-1)当前字节计数器-1

连续传送:启动一次可把整个数据块传送完,并且,当前字节计数器减到0,产生EOP-信号,释放总线。请求传送:

与连续方式类似,其不同点在于每传送一个字节之后,要检测(询问)DREQ是否有效,若无效,则释放总线,若有效,继续传送直至字节计数器为0。

第五十页,共120页。

例:PC系列软盘R/W操作选择DMA通道2,单字节传送,地址增1,不用自动预置,其R/W操作方式字为:

I/O→RAM读盘(DMA写)=01000110B(46H)RAM→I/O写盘(DMA读)=01001010B(4AH)

因此,从软盘上读一个扇区的数据存放到内存区方式字为46H,写一个扇区的数据到软盘为4AH。

问:校验盘?第五十一页,共120页。(6)屏蔽寄存器(DMA+10,+15)功能:用来禁止或允许通道的DMA请求。有二种格式.对应的端口不一样①单个通道屏蔽寄存器(DMA+10)每次只能屏蔽一个通道.

格式:D7D6D5D4D3D2D1D0未用屏蔽位=1屏蔽=0不屏蔽通道选择00=选0通道01=选1通道10=选2通道11=选3通道第五十二页,共120页。②4个通道屏蔽寄存器(DMA+15)可同时屏蔽4个通道(但对由软件设定的DMA请求位不能屏蔽)格式:D7D6D5D4D3D2D1D0未用通道3通道2通道1通道0=1屏蔽=0不屏蔽第五十三页,共120页。【例】

为了支持软盘读写操作,DMA初始化时都必须开放通道2,以便响应软盘的DMA请求。试采用单通道屏蔽和4通道屏蔽两种方式来进行实现。(已知单通道屏蔽寄存器和4通道屏蔽寄存器对应的地址分别为0AH和OFH)

解:(1)使用单通道屏蔽方式MOVAL,00000010B;开放通道2OUT0AH,AL(2)使用4通道屏蔽方式MOVAL,00001011B;开放通道2OUT0FH,AL54第五十四页,共120页。DMA请求寄存器就是用于由软件启动DMA请求,如:RAM→RAM,这种软件请求DMA传输必须是连续传输方式。格式:D7D6D5D4D3D2D1D0未用请求位1=有请求0=无请求通道选择00=0通道01=1通道10=2通道11=3通道例如:若用软件请求使用通道1进行DMA传送,则请求寄存器写入05H即可。第五十五页,共120页。(7)请求寄存器(DMA+9)(8位,只写)用来软件启动DMA请求。一般DMA请求由硬件通过DREQ引脚发出。但也可通过软件来启动DMA请求。软件请求必须是块传输方式,传送结束后EOP信号自动清除请求位。D7D6D5D4D3D2D1D0请求位1:有请求0:无请求通道选择00:通道001:通道110:通道211:通道3未使用56第五十六页,共120页。(8)命令寄存器(DMA+8)用来控制8237A的操作,由CPU写入,由RESET清除,只写不读。格式:D7D6D5D4D3D2D1D0D0:存储器间传送 D4:优先级编码D1:通道地址保持 D5:写入选择D2:工作允许 D6:DREQ极性D3:时序选择 D7:DACK极性第五十七页,共120页。第五十八页,共120页。D5:滞后写和扩展写D5=0为滞后写,表示写脉冲滞后读脉冲一个时钟。D5=1为扩展写,表示读、写脉冲同时产生。扩展写增加了写命令宽度。压缩时序下(D3=1)该位无意义。D4:优先级D4

=0为固定优先权,DREQ0

最高,DREQ3

最低。D4=1为循环优先权,刚服务过的通道优先权变为最低。D3

:时序类型D3=0为普通时序,传输一个字节需3个时钟周期。D3=1为压缩时序。对于高速外设,可将时序压缩到2个周期。59第五十九页,共120页。D2:启动与停止8237A工作D2

=0启动;D2

=1停止。一般为0,即启动工作。该位设置影响所有通道。D1和D0:控制内存到内存的传输。仅当D0=1(允许M→M传输)时D1才有意义。实现M→M传输,需先把源区数据送入8237A的暂存寄存器,然后再送到目的区。即:每次M→M传输需2个DMA周期。一般用通道0的地址寄存器存放源地址,用通道1的地址寄存器和字节计数器存放目的地址和字节数。传输时,目的地址可自动加/减1,而源地址可通过设置D1=1使其保持不变,这样可使同一数据传输到整个目标内存区域。60第六十页,共120页。【例4-2】

PC机中的8237A按如下要求工作:禁止存储器到存储器传送,采用正常时序,滞后写入,固定优先级,允许8237A工作,DREQ信号高电平有效,而DACK信号低电平有效。已知写命令寄存器对应的地址为08H,请给出写命令的程序段。

解:命令字:00000000H写命令字代码段:

MOVAL,00HOUT08H,AL61第六十一页,共120页。(9)状态寄存器(DMA+8)功能:提供哪些通道已到终止计数、哪些通道有DMA请求等状态信息供CPU使用。格式:D7D0CH3CH2CH1CH0CH3CH2CH1通道0请求服务过程结束

有尚未处理的DMA请求,写1.已接收到终止计数信号,写1.第六十二页,共120页。(10)暂存寄存器(DMA+13)在M→M的传输中,用于暂存从源地址读出的数据。复位时清除该寄存器的内容。M→M的传输需用到2个通道:通道0的地址寄存器存放源地址。通道1的地址寄存器存放目标地址。M→M传输,每传输一字节需8个时钟周期(2个DMA周期):前4个时钟周期,从通道0读出源数据送入暂存寄存器。后4个时钟周期,将暂存寄存器中的数据写入通道1指示的目标内存区域。63第六十三页,共120页。(11)软命令(有三条)软命令:指只要对特定的地址进行一次写操作,命令就会生效,而与写入的具体内容无关。软命令直接由地址和控制信号译码实现,无需数据线。一般需要CS、IOW和内部寄存器地址同时有效。DMA操作中有总清命令、清四通道屏蔽寄存器命令、清先/后触发器命令3种软命令。(1)清先/后触发器命令(DMA+12)(2)总清除命令(DMA+13)(3)清屏蔽寄存器命令(DMA+14)64第六十四页,共120页。总清命令与硬件Reset信号功能相同。功能1:使DMA控制器内部的命令寄存器、状态寄存器、请求寄存器、暂存寄存器和先/后触发器清0。功能2:使屏蔽寄存器全置1,即禁止所有的DMA请求。命令形式:OUTODH,AL;AL可为任意值65第六十五页,共120页。清四通道屏蔽寄存器命令功能:使4个通道的屏蔽位均清0,即:允许4个通道的DMA请求。命令形式:OUTOEH,AL;AL可为任意值66第六十六页,共120页。清先/后触发器命令8237A内部有一个“先/后触发器”,其值为0时访问16位寄存器的低字节;为1时访问高字节。该触发器复位时清0,以后每访问一次,其状态自动翻转,即可按照先低字节、后高字节的顺序写入初值。命令形式:OUTOCH,AL;AL可为任意值67第六十七页,共120页。8237A工作周期分为2类:空闲周期和有效周期。空闲周期Si复位后8237A处于空闲周期。此时,8237A处于被动状态,CPU可对其进行初始化;或虽已初始化,但尚未有DMA请求。有效周期8237A获得外设的DMA请求后,从空闲周期转入有效周期。此时,它作为主控芯片,控制DMA的传输过程。有效周期由S0~S45个周期组成。四、DMA控制器的工作时序68第六十八页,共120页。DMA的7种状态周期Si,S0,S1,S2,S3,S4及SW1.空闲周期Si

上电后,未编程前,还没有DMA请求,进入空闲周期Si,DMA处于被动工作方式,CPU可对DMAC编程。2.过渡状态S0

若检测到DREQ请求,DMAC即向CPU发出总线请求信号HRQ。DMAC从SI状态跳入S0状态,并重复执行,直到收到HLDA信号(CPU)进入S1状态,DMAC从被动态→主动态。第六十九页,共120页。3.DMA有效周期(S1~S4)①在CPU的回答信号HLDA到达后,DMAC进入有效周期开始传送数据。②

一个完整的有效周期包括S1,S2,S3和S4四个周期,如果存储器或I/O速度跟不上,可在S3和S4之间插入等待周期SW。第七十页,共120页。S1:更新高8位地址8237A用DB7~DB0送出高8位地址A15~A8,同时使ADSTB和AEN有效,使得高8位地址首先送入锁存器,然后再从锁存器送入总线系统。由于传输一段连续的数据块时,存储器地址总是相邻的,其高8位地址往往不变,这样在传输下一个字节时就无需更新高8位地址,此时S1可省略。只有低8位向高8位进位时才会再次更新高8位地址,故每传送256个字节才出现一个S1周期。71第七十一页,共120页。S2:发DACK寻址I/O设备,并输出16位RAM地址和读信号8237A向外设发DACK信号,启动外设工作,同时发出16位RAM地址线。如果为读内存操作,则向存储器发MEMR信号。如果为读外设操作,则向外设发IOR信号。72第七十二页,共120页。S3:发写操作的控制信号如果是向内存写操作,则向存储器发MEMW信号。如果是向外设写操作,则向外设发IOW信号。S3状态结束时,若Ready信号无效,则插入一个等待周期Sw,延续S3的各种状态。S3或Sw状态结束时,若Ready信号有效,则进入S4周期。S4:结束本次一个字节的传输如果整个数据块DMA传输结束,则后面紧接着是Si周期。如果还有下一个字节需要传输,则再次重复S1~S4的过程。73第七十三页,共120页。SISIS0DREQS0S1S2S3S4HLDAI/OSWSW数据传输状态空闲状态请求应答态被动态主动态未就绪连续方式图6.48237内部状态流程图就绪就绪单字节方式第七十四页,共120页。扩展写信号SISIS0S1S2S3S4S2S3S4SISIS0CLKDREQHRQHLDAA8~A15有效地址有效地址AENADSTBDB0~DB7A0~A7DACKIORMEMRIOWMEMW图6.38237A-5的DMA时序第七十五页,共120页。6.5DMA系统

要实现DMA传送除了DMA控制器以外还要有相应的辅助设备来组成完整的系统一个完整的DMA系统包括以下几部分:8237ADMA控制器地址锁存器DMA页面地址寄存器总线控制器总线仲裁器第七十六页,共120页。77第七十七页,共120页。一、DMAC有效地址的生成

有效地址:是指当DMAC取得总线控制权后,作为系统主控制器,它如何向存储器和I/O设备发地址信号。1.如何提供存贮器的地址

(1)DMAC只能提供16位地址:①A0~A7(低8位)

②

DB0~DB7(高8位)(2)PC/XT地址总线20位:①DMAC提供16位A0~A15②页面地址寄存器4位(A16~A19)(3)PC/AT地总24位①DMAC提供16位②页面地址寄存器8位(A16~A23)第七十八页,共120页。地址总线20位A0~A7由DMAC地址总线产生

A8~A15由DMAC数据总线产生

A16~A19经页面地址寄存器产生最后,DMAAEN-信号选通20位地址,给系统地址总线,即内存地址。8237A在系统中有效地址的生成:64K0#1#2#3#A0~78237ADMAC74LS244

74LS373页面74LS670A8~15A16~1984D0~7DMAAENG8第七十九页,共120页。8237的页面寄存器

由于8237只能输出16位地址,所以在其控制下进行的DMA传送的最大寻址空间为216

。

对于更大的DMA传送地址空间,则必须设法提供除此16位地址以外的高位地址。

例如在IBM

PC/XT微机系统中,内存地址为20位(A19~A0),所以高4位地址(A19~A16)不能由8237提供。第八十页,共120页。为此,系统中专门为每个DMA通道增设了一个4位I/O端口,在数据块传送之前可单独对其编程,用以提供高4位地址。

这4位I/O端口也称DMA页面寄存器。IBMPC/XT的页面寄存器是由一个寄存器堆(74LS670)构成,内含4个4位寄存器,可用来存放4个DMA通道的高4位地址A19~A16。

它与8237送出的16位地址一起形成20位地址A19~A0,用这20位地址信息即可寻址全部1MB存储单元。IBMPC/XT中分配的页面寄存器的端口地址为:

通道1——83H;通道2——81H;通道3——82H。

由于在该系统中8237的通道0是用于对动态RAM刷新操作,而动态RAM刷新时不需要使用页面寄存器,因而也就不需要分配通道0的页面寄存器端口地址。第八十一页,共120页。如何提供I/O设备的地址?DMAC是如何对I/O设备进行寻址?DMA提供DACK信号来取代I/O设备地址选择逻辑,使申请DMA传送并被认可的设备在DMA传送过程中保持为有效设备。在对I/O进行读写数据时,只要DACK-信号和IOR-(或IOW-)信号同时有效,就能完成对I/O设备端口的读/写操作。而与I/O设备的端口地址无关。第八十二页,共120页。74LS670(612)

DMA页面寄存器

锁存器

RAM20位地址(24位)CPU读RAM写RAMD0~7S0~7A0~3A0~3DB0~7A0~7A0~7IORIOW总线控制器S0~2总线裁决机构S0~1总线请求总线应答HRQHLDA数据传送线IORIOWEOPDACK0DACK1DACK2DACK3DREQ2DREQ3DREQ1DREQ0I/O设备读I/O设备写I/O设备计数终止I/O设备0I/O设备1I/O设备2I/O设备3DMA控制器图6.5PC系列DMA系统逻辑框图总线信号封锁A8-15A16-23MEMRMEMW第八十三页,共120页。二、PC微机的DMA系统1.PC/XT的DMA系统页面寄存器1#2#3#通道0#DRAM刷新保留软盘硬盘片内端口00~0FHA16~A19页面端口81~83HDMACA0~A15HRQ第八十四页,共120页。特点:①支持4个DMA通道传送②0通道用于RAM刷新;③通道1保留,用于同步通信,如网卡;④软盘2#,硬盘3#应用注意:(1)8位数据传送(2)每次DMA传送多达64KB(3)DMAC的端口地址00-0FH,即DMA+0--DMA+15页面地址寄存器的端口地址81H软盘FDD 82H硬盘HDD83H网卡第八十五页,共120页。2.PC/AT的DMA系统由2片8237DMAC构成,支持7个DMA通道传送。页面寄存器DMAC0#DMAC1#页面寄存器81H保留保留软盘保留A16~A23A0~A150#1#2#3#00~0FH4#5#6#7#保留C0~DEHA1~A16HRQA17~A2489-8BHHRQ第八十六页,共120页。说明:0#保留:因AT有专门的DRAM刷新电路3#保留:因HDD采用高速PIO传送,无须DMA支持。5#-7#均保留第八十七页,共120页。1.初始化编程注意事项(1)先通过命令寄存器禁止8237工作,或将要编程的通道屏蔽,编程完成后再允许芯片工作。(2)所有通道的方式字寄存器都要加载。(3)在上电期间,要对DMA芯片进行检测。三、DMAC的初始化编程第八十八页,共120页。8237A初始化编程的步骤:发送总清命令(复位)写基本地址和当前地址寄存器写基本字节和当前字节寄存器写工作方式寄存器写屏蔽寄存器写命令寄存器写请求寄存器89第八十九页,共120页。【例】利用8237A的通道0将外设54KB的数据块传送至内存5678H开始的区域(增量传送),采用块传输方式,非自动预置。外设的DREQ和DACK均高电平有效。已知8237A的端口地址为50H~5FH,试给出初始化程序段。解:(1)端口地址分析8237A的端口地址为50H~5FH,则相关寄存器的端口地址为:总清命令:5DH基地址和当前地址寄存器:50H基字节和当前字节寄存器:51H工作方式寄存器:5BH屏蔽寄存器(单通道):5AH控制寄存器:58H请求寄存器:59H90第九十页,共120页。(2)初始化编程OUT5DH,AL ;总清命令MOVAL,0 ;写基字节和当前字节寄存器(低字节)OUT50H,AL ;54K=D800HMOVAL,0D8H ;写基字节和当前字节寄存器(高字节)OUT50H,AL

MOVAL,78H ;写基地址和当前地址寄存器(低字节)OUT50H,ALMOVAL,56H ;写基地址和当前地址寄存器(高字节)OUT50H,AL

91第九十一页,共120页。MOVAL,1000

0100H;工作方式:块传输,地址增量OUT5DH,AL ;非预置,DMA写,通道0MOVAL,00000000H;通道0不被屏蔽OUT50H,AL ;使用单通道屏蔽寄存器MOVAL,1010

0000H;命令寄存器:DACK和DREQ高OUT58H,AL;启动8237A,非M→M传输MOVAL,00000100H;通道0有请求OUT59H,AL ;请求寄存器92第九十二页,共120页。6.5DMAC的应用举例一、DMAC与I/O设备连接(以软盘控制器为例)

DACK2

QDG

Q1CD1R2MHZ&1≥≥DIRLS245GABFDDD0~~D7RDWRDACKDRQFDCµPD765LS175LS240DREQ2DMAENIOWIORD0~~D7123至DMAC8237A-5第九十三页,共120页。说明:1.在DMA中请求允许信号DMAEN为有效,FDC软盘控制器可向DAM发送DREQ2请求。2.当DMA响应请求之后,发回答信号DACK2,同时,DACK2-建立起对FDC的R/W条件,即允许对FDC进行IOW-/IOR-操作。3.DMACK2-信号还将LS175清除,以便撤销DREQ2请求,释放系统总线准备下次DMA传送.4.D0-D7通过LS245直接与FDC的D0-D7相连。二、DMAC的编程(略)第九十四页,共120页。DMAC与微处理器80386连接图:第九十五页,共120页。6.6系统DMA资源的应用6.6.1DMA传输参数设置的内容及步骤1.向工作方式寄存器写入工作方式字确定所选用的通道号、DMA传输类型、传输方式、地址改变方式、是否自动预置。2.屏蔽所选用的通道3.置先/后触发器为0态执行清先/后触发器,使其处于0态,保证先低8位、后高8位的读/写顺序,为设置地址寄存器和字节计数寄存器做准备第九十六页,共120页。4.写起始地址寄存器把DMA传输的存储器首地址写入所选用通道号的起始地址寄存器。5.写页面地址寄存器把页面地址写入所选用通道号的页面地址寄存器。如果所访问的存储器不超过16位,就不写。6.写起始字节计数寄存器把要传输的字节数减1,写入所选用通道号的起始字节计数寄存器。7.解除所选通道的屏蔽初始值设置后,解除所选用通道号的屏蔽,开放该通道等待I/O设备的DMA请求。第九十七页,共120页。6.6.2DMA传输参数设置的程序举例

某数据采集系统所采集的400H个字节的数据,要求采用DMA系统中82C37A的通道1,传输到起始地址为F0000H的内存,内存地址+1,要求编写传输参数设置程序段。1.要求

按照DMA控制器的端口地址,将DMA传输参数写入DMAC内部相关的寄存器。2.分析第九十八页,共120页。3.DMA传输参数设置的汇编语言程序段:CLI ;关中断;设置工作方式MOVAL,01000101B

;工作方式命令OUT0BH,AL ;写入工作方式寄存器MOVAL,00000101B

;单一屏蔽命令OUT0AH,AL ;写入单个屏蔽寄存器OUT0CH,AL

;清除先/后触发器软命令第九十九页,共120页。;设置内存地址寄存器和页面寄存器MOVAX,00H ;16位内存地址OUT02,AL ;写入低8位地址MOVAL,AHOUT02,AL ;写入高8位地址MOVAL,0FH

;页面地址为0FHOUT83H,AL ;写入页面地址第一百页,共120页。;设置传送字节计数器MOVAX,400H ;传输字节数DECAX ;字节数-1OUT03,AL ;写入低8位字节数MOVAL,AHOUT03,AL ;写入高8位字节数STI ;开中断;开放通道1MOVAL,00000001B

;开放通道1OUT0AH,AL;写入单个屏蔽寄存器第一百零一页,共120页。8237A在80X86系列微机上的应用

8237A在IBMPC/XT上的应用

IBMPC/XT机使用一片Intel8237A和DMA页面寄存器74LS670、DMA地址锁存器74LS373、DMA地址驱动器74LS244等组成DMA控制电路,如图8-11所示。

8237A有4个DMA通道,在IBMPC/XT机系统板上通道0作为动态存储器DRAM刷新使用,其DMA请求信号DREQ0来自计数器/定时器8253通道1的输出端OUT1;第一百零二页,共120页。

通道2和通道3分别用于软盘驱动器和内存之间的数据传输以及硬盘驱动器和内存之间的数据传输,其中DREQ2接至软盘适配器,DREQ3接至硬盘适配器;通道1用来提供其他传输功能,如网络通信功能,当使用串行同步通信适配器(SDLC卡)时,通道1用于同步通信,在内存与SDLC卡之间传输数据,其DREQ1可来自用户或SDLC通信卡。系统中采用固定优先级,即动态RAM刷新操作对应的优先级最高,硬盘和内存的数据传输对应的优先级最低。第一百零三页,共120页。图8-11IBMPC/XT微型机的DMAC电路示意图第一百零四页,共120页。

在IBMPC/XT机中,8237A对应的端口地址为00~0FH,由于8237A只提供16位地址,系统的高4位地址由页面寄存器(74LS670)提供,以形成整个微机系统需要的所有存储器地址。系统分配给页面寄存器的端口地址为80H~83H。在系统ROM-BIOS中有一段上电自测试程序,它对系统各部件进行测试,以确定系统部件是否无故障,然后对8237A的通道0~通道4进行初始化。下面是ROM-BIOS对8237A进行测试和初始化的部分程序清单。

OUT0DH,AL;发DMA总清除命令

MOVAL,0FFH;通道寄存器测试初始值第一百零五页,共120页。C16:MOVBL,AL;寄存器测试值写入BXMOVBH,ALMOVCX,8;准备测试DMAC的4个通道的地址寄存器和

;计数寄存器0~7是否正常

MOVDX,0;通道寄存器地址送DXC17:OUTDX,AL;测试值低8位写入通道寄存器

OUTDX,AL;测试值高8位写入通道寄存器

MOVAL,0101HINAL,DX;读通道寄存器高8位第一百零六页,共120页。MOVAH,ALINAL,DX;读通道寄存器低8位

CMPBX,AX;读出值和写入值相等吗?

JEC18;相等,则正确,转下一组寄存器

JMPERR01;不等,则有故障,转出错处理程序01C18:INCDX;DX指向下一个通道寄存器地址

LOOPC17;循环测试

NOTAL;用初始值0JZC16;对8个寄存器再测试一遍,如正常,表示第一百零七页,共120页。;DMAC的4个通道的基准和当前地址寄存器

;以及计数器都正常,这时可启动内存刷新

MOVAL,0FFH;准备做RAM刷新,将0FFFFH送DMAC的通

;道0(用于刷新)的基准和当前计数器,相当

;于置64K的计数值,因为刷新是对每个64K;存储体为单位进行

OUT1,AL;低8位写入通道0的字节数寄存器

OUT1,AL;高8位写入通道0的字节数寄存器

MOVAL,58H;通道0模式字:单字节读传送方式,

OUT0BH,AL;地址增量,自动设定第一百零八页,共120页。MOVAL,0;将0写入DMAC的命令寄存器,

OUT8,AL;选择如下控制方式:启动DMAC工作、

;固定优先级、正常时序、滞后写、

;DREQ高电平有效、DACK低电平有效、

;禁止存储器到存储器传输方式。OUT0AH,AL;清除通道0屏蔽字,允许DREQ0发来的刷新

;内存的DMA请求。至此,才进行DRAM存第一百零九页,共120页。;储器的周期刷新,而且一直进行下去

MOVAL,41H;通道1模式字:校验方式、单字节传送

OUT0BH,AL;模式,地址递增方式、关闭自动设定

MOVAL,42H;通道2模式字;设置同通道1OUT0BH,ALMOVAL,43H;通道3模式字;设置同通道1OUT0BH,AL……ERR01:HLT;如出错,则停机等待第一百一十页,共120页。DMA写传输假设采用IBMPC/XT中DMA通道1传送1KB数据到外设,内存起始地址为50000H,下面是汇编语言源程序段,重点给出了对8237A通道1的编程部分。由于PC系列机中8237A

温馨提示

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

最新文档

评论

0/150

提交评论