第十二章8237DMA控制器 为了提高数据传送的速率,人们提出了直接存储器存取(DMA) 的数据传送控制方式,即在一定时间段内,由DMA控制器取代 CPU,获得总线控制权,来实现内存与外设或者内存的不同区域之 间大量数据的快速传送 典型的DMAC的 工作电路如右图 A控制器0 所示。 数据状态/控制 地址寄存器 端口:端口 计数器 HLDA 存储器 控制/状态寄存器 Ready IMA请求 發帮 DMA 青求 IMA响应 寄存器 触发器 输入设备
第十二章 8237DMA控制器 为了提高数据传送的速率,人们提出了直接存储器存取(DMA) 的数据传送控制方式,即在一定时间段内,由DMA控制器取代 CPU,获得总线控制权,来实现内存与外设或者内存的不同区域之 间大量数据的快速传送。 典型的DMAC的 工作电路如右图 所示
DMA数据传送的工作过程 (1)外设向DMAC发出DMA传送请求。 (2)DMAC通过连接到CPU的HOLD信号向CPU提出DMA请求 (3)CPU在完成当前总线操作后会立即对DMA请求做出响应。 CPU的响应包括两个方面:一方面,CPU将控制总线、数据总线和 地址总线浮空,即放弃对这些总线的控制权;另一方面,CPU将有 效的HLDA信号加到DMAC上,用此来通知DMAC,CPU已经放弃 了总线的控制权。 (4)待CPU将总线浮空,即放弃了总线控制权后,由DMAC接管 系统总线的控制权,并向外设送出DMA的应答信号 (5)由DMAC送出地址信号和控制信号,实现外设与内存或内存 不同区域之间大量数据的快速传送。 (6)DMAC将规定的数据字节传送完之后,通过向CPU发HOLD 信号,撤消对CPU的DMA请求。CPU收到此信号,一方面使 HLDA无效,另一方面又重新开始控制总线,实现正常取指令、分 析指令、执行指令的操作
DMA数据传送的工作过程: (1) 外设向DMAC发出DMA传送请求。 (2)DMAC通过连接到CPU的HOLD信号向CPU提出DMA请求。 (3)CPU在完成当前总线操作后会立即对DMA请求做出响应。 CPU的响应包括两个方面:一方面,CPU将控制总线、数据总线和 地址总线浮空,即放弃对这些总线的控制权;另一方面,CPU将有 效的HLDA信号加到DMAC上,用此来通知DMAC,CPU已经放弃 了总线的控制权。 (4)待CPU将总线浮空,即放弃了总线控制权后,由DMAC接管 系统总线的控制权,并向外设送出DMA的应答信号。 (5)由DMAC送出地址信号和控制信号,实现外设与内存或内存 不同区域之间大量数据的快速传送。 (6)DMAC将规定的数据字节传送完之后,通过向CPU发HOLD 信号,撤消对CPU的DMA请求。CPU收到此信号,一方面使 HLDA无效,另一方面又重新开始控制总线,实现正常取指令、分 析指令、执行指令的操作
注意:在内存与外设之间进行DMA传送期间,DMAC控制器只是 输出地址及控制信号,而数据传送是直接在内存和外设端口之间进 行的,并不经过DMAC; 对于内存不同区域之间的DMA传送,则应先用一个DMA存储 器读周期将数据从内存的源区域读出,存入到DMAC的内部数据暂 存器中,再利用一个DMA存储器写周期将该数据写到内存的目的 区域中去
注意:在内存与外设之间进行DMA传送期间,DMAC控制器只是 输出地址及控制信号,而数据传送是直接在内存和外设端口之间进 行的,并不经过DMAC; 对于内存不同区域之间的DMA传送,则应先用一个DMA存储 器读周期将数据从内存的源区域读出,存入到DMAC的内部数据暂 存器中,再利用一个DMA存储器写周期将该数据写到内存的目的 区域中去
1218237的组成和工作原理 121.1DMA控制器芯片Inel8237的性能概述 Inte8237是8086/8088微机系统中常用的DMAC芯片,有如下性能 (1)含有4个相互独立的通道,每个通道有独立的地址寄存器和字 节数寄存器,而控制寄存器、状态寄存器为四个通道所共用。 (2)每个通道的DMA请求可以分别被允许禁止。 (3)每个通道的DMA请求有不同的优先权,可以通过程序设置为 固定的或者是循环(旋转)的方式 (4)通道中地址寄存器的长度为16位,因而一次DMA传送的最大 数据块的长度为64K字节。 (5)8237有4种工作方式,分别为:单字节传送、数据块传送、请 求传送、级连方式。 (6)允许用输入信号来结束DMA传送或重新初始化。 (7)8237可以级连以增加通道数
12.1 8237 的组成和工作原理 12.1.1 DMA控制器芯片Intel 8237的性能概述 Intel8237是8086/8088微机系统中常用的DMAC芯片,有如下性能: (1)含有4个相互独立的通道,每个通道有独立的地址寄存器和字 节数寄存器,而控制寄存器、状态寄存器为四个通道所共用。 (2)每个通道的DMA请求可以分别被允许/禁止。 (3)每个通道的DMA请求有不同的优先权,可以通过程序设置为 固定的或者是循环(旋转)的方式。 (4)通道中地址寄存器的长度为16位,因而一次DMA传送的最大 数据块的长度为64K字节。 (5)8237有4种工作方式,分别为:单字节传送、数据块传送、请 求传送、级连方式。 (6)允许用输入信号来结束DMA传送或重新初始化。 (7)8237可以级连以增加通道数
DMA方式的适用场合 (1)硬盘和软盘的输入/输出 (2)快速通信通道输入/输出 (3)多处理机和多程序数据块传送 (4)扫描操作(图象显示) (5)高速数据采集。 特点 DMA方式适用于成组传送数据的场合,每次传送之前要对 DMAC进行初始化,CPU要对DMAC写入20-30个字节的控制字。 缺点: (1)DMA期间,CPU不占总线,因而不能做其它工作。 (2)CPU对DMAC初始化占有额外时间。 (3)增加硬件,提高成本,使电路复杂。 因此对于数据块短,需频繁DMAC初始化的场合,CPU来得 及处理的情况,就不必采用DMA方式
DMA方式的适用场合 (1)硬盘和软盘的输入 / 输出 (2)快速通信通道输入 / 输出 (3)多处理机和多程序数据块传送 (4)扫描操作(图象显示) (5)高速数据采集。 特点: DMA方式适用于成组传送数据的场合,每次传送之前要对 DMAC进行初始化, CPU要对DMAC写入20----30个字节的控制字。 缺点: (1)DMA期间,CPU不占总线,因而不能做其它工作。 (2)CPU对DMAC初始化占有额外时间。 (3)增加硬件,提高成本,使电路复杂。 因此对于数据块短,需频繁DMAC初始化的场合,CPU来得 及处理的情况,就不必采用DMA方式
12128237的结构与引脚 减量器 增量器 I/0 EOP 缓冲 RESET 暂时字节数 暂时地址 寄存器〔16〕 寄存器〔16 READY |输出缓冲十 CLK 定 AErI 和 控制读缓冲 读写缓冲 ADSTB 命令 基地址基字计行现行宇 控制 16)数(16)地址 〔16):〔16) MEMR 工oW 写线冲读缓冲 内部数f据总」线 DREQ I/0 DREQ 命令〔8 缓冲 HRQ 优先权 HLDA 控制屏(4读写 DACKO -DACK3 方式状态(8】临时(8 请求〔4 〔4×6)
12.1.2 8237的结构与引脚
8237的方框图如上页所示,主要包含以下几个部分: 四个独立的DMA通道 每个通道都有一个16位的基地址寄存器、一个16位的基字 节数计数器、一个16位的当前地址寄存器和一个16位的当前字 节数计数器及一个8位的方式寄存器,方式寄存器接收并保存来 自于CPU的方式控制字,使本通道能够工作于不同的方式下 2.定时及控制逻辑电路 对在DMA请求服务之前,CPU编程对给定的命令字和方 式控制字进行译码,以确定DMA的工作方式,并控制产生所需 要的定时信号; 3.优先级编码逻辑 对通道进行优先级编码,确定在同时接收到不同通道的 DMA请求时,能够确定相应的先后次序。通道的优先级可以通 过编程确定为是固定的或者是循环的
8237的方框图如上页所示,主要包含以下几个部分: 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内部寄存器的类型和数量如下表所示,其中,凡数量 为4个的寄存器,则每个通道一个,凡数量只有一个的,则为各 通道所公用。 5.8237的数据引线,地址引线都有三态缓冲器,因而可以接 也可以释放总线
4.共用寄存器 除了每个通道中的寄存器之外,整个芯片还有一些共用的 的寄存器:包括1个16位的地址暂存寄存器,1个16位的字节数 暂存寄存器,1个8位的状态寄存器,1个8位的命令寄存器,1 个8位的暂存寄存器,1个4位的屏蔽寄存器和1个4位的请求寄 存器等。 8237内部寄存器的类型和数量如下表所示,其中,凡数量 为4个的寄存器,则每个通道一个,凡数量只有一个的,则为各 通道所公用。 5.8237的数据引线,地址引线都有三态缓冲器,因而可以接 也可以释放总线
寄存器名 长度(Bt)数量 基地址寄存器 16 基字节数寄存器 16 当前地址寄存器 11 4444 当前字节数寄存器 16 地址暂存寄存器 16 字节数暂存寄存器 16 状态寄存器 命令寄存器 暂存寄存器 方式寄存器 屏蔽寄存器 888644 请求寄存器
寄存器名 长度(Bit ) 数量 基地址寄存器 16 4 基字节数寄存器 16 4 当前地址寄存器 16 4 当前字节数寄存器 16 4 地址暂存寄存器 16 1 字节数暂存寄存器 16 1 状态寄存器 8 1 命令寄存器 8 1 暂存寄存器 8 1 方式寄存器 6 4 屏蔽寄存器 4 1 请求寄存器 4 1
40 IOR lOW MEMR MEMW A NC EOP READY HLDA ADSTB A AEN 8237 HRQ Vcc CS DB CLK DB RESET DB2 DACK2 DB3 DACK3 DB4 DREQ3 DACKo DREQ2 DACK1 DREQ1 DB5 DREQo一 DB6 GND 20 21 DB7
1 4 0 8237 2 0 21 IOR IOW MEMR MEMW N C READY HLDA ADSTB AEN HRQ C S CLK RESET DACK2 DACK3 DREQ3 DREQ2 DREQ1 DREQ0 GND A7 A6 A5 A4 EOP A3 A2 A1 A0 Vcc D B0 D B1 D B2 D B3 D B4 DACK0 DACK1 D B5 D B6 D B7