DMA控制器定计数器.docx

上传人:b****3 文档编号:1079452 上传时间:2022-10-16 格式:DOCX 页数:40 大小:160.68KB
下载 相关 举报
DMA控制器定计数器.docx_第1页
第1页 / 共40页
DMA控制器定计数器.docx_第2页
第2页 / 共40页
DMA控制器定计数器.docx_第3页
第3页 / 共40页
DMA控制器定计数器.docx_第4页
第4页 / 共40页
DMA控制器定计数器.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

DMA控制器定计数器.docx

《DMA控制器定计数器.docx》由会员分享,可在线阅读,更多相关《DMA控制器定计数器.docx(40页珍藏版)》请在冰豆网上搜索。

DMA控制器定计数器.docx

DMA控制器定计数器

第一讲:

第六章 DMA控制器和定时/计数器

回顾:

微型计算机与外部设备之间的数据传送控制方式

本讲重点:

DMA的基本概念,DMA控制器芯片8237的性能概述,内、外部结构,工作周期,工作方式,通道的优先级及数据传输速率。

讲授内容:

6.1DMA控制器Intel8237

一、DMA概述

我们已经介绍了微机系统中各种常用的数据输入输出方法,有程控法(包括无条件及条件传送方式)和中断法,这些方法适用于CPU与慢速及中速外设之间的数据交换。

但当高速外设要与系统内存或者要在系统内存的不同区域之间,进行大量数据的快速传送时,就在一定程度上限制了数据传送的速率。

以Intel8088CPU为例,CPU从内存(或外设)读数据到累加器,然后再写到外设端口(或内存)中,若包括修改内存地址,判断数据块是否传送完,Intel8088CPU(时钟接近5MHz)传送一个字节约需要几十微秒的时间,由此可大致估计出用程控及中断的方式来进行数据传送,其数据传送速率大约为每秒几十KB字节。

为了提高数据传送的速率,人们提出了直接存储器存取(DMA)的数据传送

控制方式,即在一定时间段内,由DMA控制器取代CPU,获得总线控制权,

来实现内存与外设或者内存的不同区域之间大量数据的快速传送。

图6-1DMAC的工作电路

典型的DMAC的工作电路如图6-1。

DMA数据传送的工作过程大致如下:

1外设向DMAC发出DMA

传送请求。

2DMAC通过连接到CPU

的HOLD信号向CPU提出DMA

请求。

3CPU在完成当前总线操作

后会立即对DMA请求做出响

应。

CPU的响应包括两个方面:

一方面,CPU将控制总线、数据

总线和地址总线浮空,即放弃对

这些总线的控制权;另一方面,

CPU将有效的HLDA信号加到

DMAC上,用此来通知DMAC,CPU已经放弃了总线的控制权。

4待CPU将总线浮空,即放弃了总线控制权后,由DMAC接管系统总线

的控制权,并向外设送出DMA的应答信号。

5由DMAC送出地址信号和控制信号,实现外设与内存或内存不同区域之

间大量数据的快速传送。

6DMAC将规定的数据字节传送完之后,通过向CPU发HOLD信号,撤

消对CPU的DMA请求。

CPU收到此信号,一方面使HLDA无效,另一方面

又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。

需要注意的是,在内存与外设之间进行DMA传送期间,DMAC控制器只

是输出地址及控制信号,而数据传送是直接在内存和外设端口之间进行的,并

不经过DMAC;对于内存不同区域之间的DMA传送,则应先用一个DMA存

储器读周期将数据从内存的源区域读出,存入到DMAC的内部数据暂存器中,

再利用一个DMA存储器写周期将该数据写到内存的目的区域中去。

二、DMA控制器芯片Intel8237的性能概述

Intel8237是8086/8088微机系统中常用的DMAC芯片,有如下性能:

1.含有4个相互独立的通道,每个通道有独立的地址寄存器和字节数寄存器,

而控制寄存器、状态寄存器为四个通道所共用。

2.每个通道的DMA请求可以分别被允许/禁止。

3.每个通道的DMA请求有不同的优先权,可以可以通过程序设置为固定的或

者是旋转的方式。

4.通道中地址寄

图6-38237的内部结构组成

存器的长度为16位,因而一次DMA传送的最大数据块的长度为64K字节。

5.8237有4种工

作方式,分别为:

单字节传送、数据块传送、请求传送、级连方式。

6.允许用输入

信号来结束DMA

传送或重新初始

化。

7.8237可以级连以增加通道数。

 

三、8237的内部组成与结构

8237的方框图如图6-3所示,主要包含以下几个部分:

1.四个独立的DMA通道

每个通道都有一个16位的基地址寄存器,一个16位的基字节数计数器,

一个16位的当前地址寄存器和一个16位的当前字节数计数器及一个8位的方

式寄存器,方式寄存器接收并保存来自于CPU的方式控制字,使本通道能够

工作于不同的方式下;

2.定时及控制逻辑电路

对在DMA请求服务之前,CPU编程对给定的命令字和方式控制字进行译

码,以确定DMA的工作方式,并控制产生所需要的定时信号;

3.优先级编码逻辑

对通道进行优先级编码,确定在同时接收到不同通道的DMA请求

时,能够确定相应的先后次序。

通道的优先级可以通过编程确定为是固定的或者是旋转的。

4.共用寄存器

除了每个通道中的寄存器之外,整个芯片还有一些共用的的寄存器:

包括

1个16位的地址暂存寄存器,1个16位的字节数暂存寄存器,1个8位的状态

寄存器,1个8位的命令寄存器,1个8位的暂存寄存器,1个4位的屏蔽寄存

器和1个4位的请求寄存器等,我们将对这些寄存器的功能与作用,作较为详

细的介绍。

8237内部寄存器的类型和数量如表6-1所示,其中,凡数量为4个的寄存器,则每个通道一个,凡数量只有一个的,则为各通道所公用。

表6-18237的内部寄存器

寄存器名

长度(Bit)

数量

寄存器名

长度(Bit)

数量

基地址寄存器

基字节数寄存器

当前地址寄存器

当前字节数寄存器

地址暂存寄存器

字节数暂存寄存器

16

16

16

16

16

16

4

4

4

4

1

1

状态寄存器

命令寄存器

暂存寄存器

方式寄存器

屏蔽寄存器

请求寄存器

8

8

8

6

4

4

1

1

1

4

1

1

5.8237的数据引线,地址引线都有三态缓冲器,因而可以接也可以释放总线。

四、8237的工作周期

在设计8237时,规定它具有两种主要的工作周期(或工作状态),即空闲

周期和有效周期,每一个周期又是由若干时钟周期所组成的。

1.空闲周期(ladecycle)

当8237的任一通道都无DMA请求时,则其处于空闲周期或称为SI状态,

空闲周期由一系列的时钟周期组成,在空闲周期中的每一个时钟周期,8237只

做两项工作:

●采样各通道的DREQ请求输入线,只要无DMA请求,则其始终停留在SI状态;

●由CPU对8237进行读/写操作,即采样片选信号,只要信号变为有效的低电平,则表明CPU要对8237进行读/写操作,当8237采样为低电平而DREQ也为低,即外部设备没有向8237发DMA请求的情况下,则进入CPU对8237的编程操作状态,CPU可以向8237的内部寄存器进行写操作,以决定或者改变8237的工作方式,或者对8237内部的相关寄存器进行读操作,以了解8237的工作状态。

CPU对8237进行读/写操作时,由地址信号A3~A0来选择8237内部的不同

寄存器(组),由读/写控制信号及来控制读/写操作。

由于8237内部的

地址寄存器和字节数计数器都是16位的,而数据线是8位的,所以在8237的

内部,有一个高/低字节触发器,称为字节指针寄存器,由它来控制8位信息是

写入16位寄存器的高8位还是低8位,该触发器的状态交替变化,当其状态为0时,进行低字节的读/写操作;而当其状态为1时,则进行低字节的读/写操作。

2.有效周期(ActiveCycle)

当处于空闲状态的8237的某一通道接收到外设提出的DMA请求DREQ

时,它立即向CPU输出HRQ有效信号,在未收到CPU回答时,8237仍处于

编程状态,又称初始状态,记为S0状态。

经过若干个S0状态后,当8237收到来自于CPU的HLDA应答信号后,则进入工作周期,或称为有效周期,或者说8237由S0状态进入了S1状态。

S0状态是DMA服务的第一个状态,在这个状态下,8237已接收了外设的

请求,向CPU发出了DMA请求信号HRQ,但尚未收到CPU对DMA请求的

应答信号HLDA;而S1状态则是实际的DMA传送工作状态,当8237接收到CPU

发来的HLDA应答信号时,就可以由S0状态转入S1状态,开始DMA传送。

在内存与外设之间进行DMA传送时,通常一个S1周期由4个时钟周期组

成,即S1、S2、S3、S4,但当外设速度较慢时,可以插入SW等待周期;而在内

存的不同区域之间进行DMA传送时,由于需要依次完成从存储器读和向存储

器写的操作,所以完成每一次传送需要8个时钟周期,在前四个周期S11、S12、

S13、S14完成从存储器源区域的读操作,后四个时钟周期S21、S22、S23、S24完成

向存储器目的区域的写操作。

五、8237的外部结构

8237是具有40个引脚的双列直插式集成电路芯片,其引脚如图6-4所示:

1.CLK:

时钟信号输入引脚,对于标准的8237,其输入时钟频率为3MHz,对于8237-2,其输入时钟频率可达5MHz。

2.:

芯片选择信号,输入引脚。

3.RESET:

复位信号,输入引脚,用来清除8237中的命令、状态请求和临时寄存器,且使字节指针触发器复位并置位屏蔽触发器的所有位(即使所有通道工作在屏蔽状态),在复位之后,8237工作于空闲周期SI。

4.READY:

外设向8237提供的高电平有效的“准备好”信号输入引脚,若8237

在S3状态以后的时钟下降沿检测到READY为低电平,则说明外设还未准备好

下一次DMA操作,需要插入SW状态,直到READY引脚出现高电平为止。

5.DREQ0~DREQ3:

DMA请求信号输入引脚,对应于四个独立的通道,DREQ

的有效电平可以通过编程来加以确定,优先级可以固定,也可以旋转。

6.DACK0~DACK3:

对相应通道DREQ请求输入信号的应答信号输出引脚。

7.HRQ:

8237向CPU提出DMA请求的输出信号引脚,高电平有效。

8.HLDA:

CPU对HRQ请求信号的应答信号输入引脚,高电平有效。

9.DB0~DB7:

8条双向三态数据总线引脚。

在CPU控制系统总线时,可以通过DB0~DB7对8237编程或读出8237的内部状态寄存器的内容;在DMA操作期间,由DB0~DB7输出高8位地址信号A8~A15,并利用ADSTB信号锁存该地址信号。

在进行内存不同区域之间的DMA传送时,除了送出A8~A15地址信号外,

还分时输入从存储器源区域读出的数据,送入8237的暂存寄存器中,等到存储

器写周期时,再将这些数据通过这8个引脚,由8237的暂存寄存器送到系统数

据总线上,然后写入到规定的存储单元中去。

10.A3~A0:

4条双向三态的低位地址信号引脚。

在空闲周期,接收来自于CPU

的四位地址信号,用以寻址8237内部的不同的寄存器(组);在DMA传送时,输出要访问的存储单元或者I/O端口地址的低4位。

11.A7~A4:

4条三态地址信号输出引脚。

在DMA传送时,输出要访问的存储

单元或者I/O端口地址的中4位。

12.:

低电平有效的双向三态信号引脚。

在空闲周期,它是一条输入控制

信号,CPU利用这个信号读取8237内部状态寄存器的内容;而在DMA传送时,

它是读端口控制信号输出引脚,与相配合,使数据由外设传送到内存。

13.:

低电平有效的双向三态信号引脚,其功能与相对应。

14.:

低电平有效的双向三态信号引脚,用于DMA传送,控制存储器

的读操作。

15.:

低电平有效的双向三态信号引脚,用于DMA传送,控制存储器

的写操作。

16.AEN:

高电平有效的输出信号引脚,由它把锁存在外部锁存器中的高8位

地址送入系统的地址总线,同时禁止其它系统驱动器使用系统总线。

17.ADSTB:

高电平有效的输出信号引脚,此信号把DB7~DB0上输出的高8位

地址信号锁存到外部锁存器中。

18.:

双向,当字节数计数器减为0时,在上输出一个有效的低电平脉冲,表明DMA传送已

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1