三、基本的DMA控制器
1.DMA控制器的基本组成
一个DMA控制器,实际上是采用DMA方式的外围设备与系统总线之间的接口电路,
这个接口电路是在中断接口的基础上再加DMA机构组成.习惯上将DMA方式的
接口电路称为DMA控制器。下页图示出了一个最简单的DMA控制器组成示意图。
一个最简单的
DMA
控制器由以下逻辑部件组成:
�
(1)内存地址计数器 用于存放内存中要交换的数据的地址。在DMA传送前,须通过
程序将数据在内存中的起始位置(首地址)送到内存地址计数器。而当DMA传送时,
每交换一次数据,将地址计数器加“1”,从而以增量方式给出内存中要交换的一
批数据的地址。�
(2)字计数器 用于记录传送数据块的长度(多少字数)。其内容也是在数据传送之前由
程序预置,交换的字数通常以补码形式表示。在DMA传送时,每传送一个字,
字计数器就加“1” ,当计数器溢出即最高位产生进位时,表示这批数据传送完毕,
于是引起DMA控制器向CPU发中断信号。�
(3)数据缓冲寄存器 用于暂存每次传送的数据(一个字)。当输入时,由设备(如磁盘)
送往数据缓冲寄存器,再由缓冲寄存器通过数据总线送到内存。反之,输出时,
由内存通过数据总线送到数据缓冲寄存器,然后再送到设备。�
(4)“DMA请求”标志 每当设备准备好一个数据字后给出一个控制信号,使“DMA请
求” 标志置“1”。该标志置位后向“控制/状态”逻辑发出DMA请求,后者又向CPU
发出总线使用权的请求(HOLD),CPU响应此请求后发回响应信号HLDA,“控制
/状态”逻辑接收此信号后发出DMA响应信号,使“DMA请求”标志复位,为交换
下一个字做好准备。�
(5)“控制/状态”逻辑 由控制和时序电路以及状态标志等组成,用于修改内存地址计
数器和字计数器,指定传送类型(输入或输出),并对“DMA请求”信号和CPU响应
信号进行协调和同步。�
(6)中断机构 当字计数器溢出时(全0),意味着一组数据交换完毕,由溢出信号触发
中断机构,向CPU提出中断报告。这里的中断与上一节介绍的I/O中断所采用的
技术相同,但中断的目的不同,前面是为了数据的输入或输出,而这里是为了报
告一组数据传送结束。因此它们是I/O系统中不同的中断事件。
2.DMA数据传送过程�
DMA的数据块传送过程可分为三个阶段:传送前预处理;正式传送;传送后处
理。�
预处理 由CPU执行几条输入输出指令,测试设备状态,向DMA控制器的设备
地址寄存器中送入设备号并启动设备,向内存地址计数器中送入起始地址,向字
计数器中送入交换的数据字个数。在这些工作完成后,CPU继续执行原来的主程