理论教育 DMA传输和DMA控制器简介

DMA传输和DMA控制器简介

时间:2023-11-04 理论教育 版权反馈
【摘要】:DMA传输方式由方式寄存器给出,并由电平敏感的DREQ信号控制。比如,作为半同步总线,8086可对被访问MEM/IO的等待请求作出响应,那么,在DMA传输期间,DMAC对这些请求应作出类似的响应。此外,一般DMAC还可对DMA传输的时序进行控制,如总线周期长度、命令长度等。

DMA传输和DMA控制器简介

1.DMA传输的特点及DMAC的功能

DMA传输具有响应快、传输速度快及CPU管理开销小的特点,所以它是高速传输数据一个较好的选择,比如SCSI总线传输、高速串行传输都采用DMA控制器。

DMA传输需要硬件DMA控制器的支持,随着LSI和VLSI的发展,现在的DMAC芯片与其他接口芯片的价格差不多。

DMAC在系统中具有两种功能,一方面,它作为系统的从设备,它的工作要受CPU的管理,CPU可利用程序查询或程序中断(即DMAC可向CPU请求中断)的方法来管理DMAC的工作。另一方面,DMAC具有总线主设备的功能。它可以请求总线并得到总线控制权,和CPU一样控制信息在总线上的传输——DMA传输。当一次传输或若干次传输完毕时,它就把总线移交给CPU,DMAC又变成从设备。这是DMAC与一般的接口芯片的重大区别。正是由于它具有双重角色,所以对它的引脚信号要分清哪些是作为主设备(MASTER)的信号,哪些是作为从设备(SLAVE)的接口信号,哪些是主设备和从设备都要用的信号。

2.DMAC的分类

(1)专用DMAC和通用DMAC

专用DMAC是和它所管理的I/O接口统一设计的专用数据通道。它和I/O接口紧密连接,并且DMA传输时,总线上只有存储器操作。

通用DMAC可用于任何I/O的DMA传输,只要把I/O的请求线与DMAC的DREQ相连,再给DMAC适当的工作参数就可以了。目前市场上销售的都是通用DMAC。

(2)单地址DMAC和双地址DMAC

双地址DMAC的传送和CPU传送完全一样。访问存储器和访问I/O操作周期的信号和时序都一样。一次DMA传输需要两个总线周期:读源口(MEM或I/O)、写目的口(I/O或MEM)。

双地址DMAC最重要的优点是可以和CPU共享一套地址译码系统,因而接口简单。

单地址DMAC的存储器访问周期和CPU的一样,但I/O操作周期采用“隐寻址”方式,这和CPU的I/O“显寻址”完全不同。因此,它不能使用CPU的I/O地址译码器。它有如下特点。

·主要用于存储器和I/O设备间的传送,且一次传送只需一个总线周期,即读源口和写目的口是在同一个周期内实现的。

·传送的数据宽度和DMAC数据总线宽度无关,只与系统数据总线宽度有关。比如,8237的数据总线是8位,若系统总线是32位,它可以实现32位的DMA传输。

·因为I/O既要与CPU连接,又要与DMAC接口,所以I/O接口电路比较复杂,一般要专门设计。

目前市场上销售的DMAC既有单地址的(如8237/8257、MC6844),也有双地址的(如Z80-DMA、MC68440/68450)。

图8.7和图8.8以存储器到I/O传送为例说明单地址DMAC和双地址DMAC的传输过程的差别。图8.9是单地址DMA传输的时序图。

图8.7 单地址DMAC传输(单周期)

图8.8 双地址DMAC的传输过程(双周期)

图8.9 单地址DMA传输时序

图8.10是既满足CPU访问又满足单地址DMAC访问的I/O接口电路。在具体应用中,其中的MUX往往可以简化,详情见例8.2。

图8.10 单地址DMA传输的I/O接口设计

3.DMA传输过程

读者可设想一个从MEN到I/O的传送例子,仔细描述其传送过程。DMA传输过程请参看主教材《微机原理与接口技术(第3版)》中第8章8.3.4节中“DMA传送方式”。

4.DMAC的工作方式(或操作类型)

DMAC的基本工作就是数据传送,也可以说它是只有一条指令的CPU,即数据传送,且存储器采用自动变址方式,I/O采用固定地址方式(对双地址DMAC)或隐含寻址方式(对单地址DMAC)。

因为DMAC既不需取指令,又不需指令译码,也不需地址计算,它只有指令执行周期,且可以连续执行,因此传输速度极快。

数据传输只对MEM、I/O进行,因此有以下组合:

①MEM→I/O;

②I/O→MEM;

③MEM→MEM;

④I/O→I/O。

大多数DMAC可实现上述①、②、③3种操作,有的还可实现第4种操作。

DMAC的工作类型由命令寄存器给出。

5.DMA传输方式

DMA传输方式是指DMA占用总线后,进行多少次传输以及本次传输的结束方式(释放总线)。DMA有如下几种传输方式。

①单次操作。DMAC占用总线后,只进行一次传输,即释放总线(对具有单/双缓存的I/O接口)。

②按需传输〔或突发传输(burst)〕。在这种方式下,申请到总线,传输的数据数目依I/O接口内可传输的数据数目而定,这种I/O接口内的数据缓存一般是FIFO,它可存储多个数据。

③连续(块)传输方式,或称“独占方式”。即一旦申请到总线,就要把给定数据块传输完,否则,不释放总线。即使不传输任何数据,宁可让总线空闲,也不放弃总线控制。这种方式常用于存储器到存储器传输,或者I/O内有相当大容量缓存的场合。

DMA传输方式由方式寄存器给出,并由电平敏感的DREQ信号控制。

6.判优逻辑

当有多个DMA通道同时工作时,它们之间的优先顺序由判优逻辑决定。一般来说,传输速度快的通道应安排在高优先级位置,而低速传送通道安排在低优先级位置。

判优逻辑用硬件实现(能用软件判优吗?);可以用串行判优(如Z80-DMA)或并行判优(如8237);优先顺序可以是固定的,也可以采用同等优先或循环优先。这与中断判优大体是一样的。

7.时序控制(www.daowen.com)

既然在DMA传输期间,DMAC取代了CPU的位置,那么它应具备CPU同样的传输联络功能,如异步联络、半同步联络等。比如,作为半同步总线,8086可对被访问MEM/IO的等待请求作出响应,那么,在DMA传输期间,DMAC对这些请求应作出类似的响应。

此外,一般DMAC还可对DMA传输的时序进行控制,如总线周期长度、命令长度等。

8.链接方式

为进一步减小CPU对传送管理的开销,DMAC大都具有“自动初始化”(AUTO-RELOAD或AUTO-REINITIALIZATION)功能,即在“块结束”时,自动恢复原先的传输参数,重新开始下一块的传送,也可实现更复杂的块连接,如“数组连接”和“环链连接”等。

9.DMAC的中断源

DMAC在块结束时,可向CPU请求中断,表明“传送结束,还有任务么?”。

其他中断源有DREQ中断、“检索成功中断”等。

10.内部寄存器

对单地址DMAC,只需给出如下参数。

(1)命令寄存器

·工作方式。

·DMA传输方式、优先权方式、自动初始化、存储器地址生成方式等。

·存储器起始地址。

·传输块长。

·通道屏蔽(被屏蔽的通道不能请求总线)。

·时序控制。

·中断控制。

(2)状态寄存器

·现行地址寄存器。

·现行块长寄存器。

·块结束状态(检索状态、DREQ状态)。

11.DMA控制器芯片8237

(1)对外引脚信号

由于DMA既可作从设备,又可作主设备,所以其对外引脚信号也具有双重特色。

·A0~A3:双向三态。从设备时为输入,作为CPU访问该片的地址,说明它有16个端口地址。主设备时为输出,作为20位存储器地址的低4位。

·A4~A7:单向输出。主设备时作为20位存储器地址的低8位中的高4位。

·:从设备时的片选信号。

·DB0~DB7:双向三态。从设备时为CPU访问的数据线;主设备时为存储器地址的高8位地址线,也可作为数据线,地址和数据分时复用。8237最多只能提供16位内存地址。

· :主设备时存储器读/写信号,单向输出。

·读/写信号,双向。从设备时为输入,由CPU对其进行读/写;主设备时为输出,由DMAC对I/O设备进行读/写。

·HRQ:向CPU发出的总线请求信号,高有效。

·HLDA:由CPU发回的总线响应信号,高有效。

·DREQ0~DREQ3:外设对4个独立通道发来的DMA请求信号,高电平或低电平有效由程序设定。固定优先时DREQ0优先级最高,DREQ3优先级最低。

·DACK0~DACK3:DMAC各通道发给外设的DMA响应信号。高电平或低电平有效由程序设定。若几个通道同时发出DMA请求,在同一时刻只能允许一个通道发出响应信号。

·此外还有ADSTB(高8位地址锁存)、AEN(地址允许,输出)、READY(准备就绪)、(传输结束,双向)。

(2)内部结构

8237内部主要有定时和控制逻辑,优先级控制逻辑,地址、数据缓冲器,I/O缓冲器,命令控制逻辑,内部寄存器组(包括公共寄存器组和通道寄存器组)。与用户编程有关的是内部寄存器组。

8237内部有4个独立通道,共有20多个寄存器。每个通道都有各自的4个寄存器(包括起始地址、当前地址寄存器,起始块长、当前块长寄存器)。各个通道公用的寄存器有工作方式寄存器、命令寄存器、状态寄存器、屏蔽寄存器、请求寄存器、暂存寄存器等。通过对这些寄存器进行编程可实现3种DMA操作类型和3种操作方式等操作功能。

(3)工作方式

·每一通道都有3种工作类型:读传输(MEM→I/O)、写传输(I/O→MEM)、传输校验(verify)。

·每一通道的DMA传输方式都有3种:单次方式、按需(突发传输)方式、块传输方式。根据需要可采用级联方式(通道扩充)。

·在DMA传输块结束时,输出有效,可用它产生中断请求;在DMA传输期间,也可以从外部产生,以强制结束DMA传输。

(4)初始化

由于DMAC内部寄存器较多,初始化较复杂,所以这里从略。有兴趣的读者可参阅主教材《微机原理与接口技术(第3版)》及有关资料。

(5)存储器和I/O地址的生成

·存储器地址的生成。由于8237引脚的限制,每个通道在DMA传输时只能提供16位存储器地址(A0~A7和DB0~DB7),对于16位以上(A16~A19或A16~A23等)的地址由DMA页面地址寄存器产生。

·I/O设备寻址。由于没有地址信号提供I/O地址,所以8237采用I/O隐寻址。隐寻址采用的方法是:8237通过DACK信号来取代I/O设备的地址选择,使申请DMA传输并被响应的设备在DMA传输过程中保持为有效设备。DACK代替了芯片选择功能。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈