第8章 可编程DMA控制器8237A
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
配合可组成各种操作命令。
(3)优先级编码电路:该电路根据CPU对8237A初始化 时送来的命令,对同时提出DMA请求的多个通道进行排队判 优,来决定哪一个通道的优先级别为最高。对优先级的管理 有固定优先级和循环优先级两种方式,无论采用哪种优先级 管理,一旦某个优先级高的设备在服务时,其它通道的请求 均被禁止,直到该通道的服务结束时为止。 ( 4 )数据和地址缓冲器组: 8237A 的引脚 A7~A4 、 A3~A0 为 地址线;引脚DB7~DB0在从态时传输数据信息,在主态时传 送地址信息。这些数据引线和地址引线都与三态缓冲器相连, 因而可以接管或释放总线。 (5)内部寄存器:8237A内部有4个DMA通道,每个通道都 有一个16位的基地址寄存器、基字计数器、当前地址寄存器 和当前字计数器,以及一个 6 位的工作方式寄存器。片内还 各有一个可编程的命令寄存器、屏蔽寄存器、请求寄存器、 状态寄存器和暂存寄存器,以及不可编程的字数暂存器和地 址暂存器等。
(3)请求传送方式 在这种方式下, 8237A 可以进行连续的数据传送,只有出 现以下三种情况之一时才停止传送:
字节数计数器减到0,产生一个终止计数T/C信号;
由外界送来一个有效的信号; 外界的DRQ信号变为无效(外设来的数据已传送完)。 (4)级联方式 采用这种方式可以将多个8237A级联起来,以扩展系统中
的 DMA 通道数量。如图 8-3 所示,是 2 个 8237A 级联情况示意。
第一级8237A DREQ 微 处 理 器 DACK HRQ HDLA DREQ DACK
第二级8237A HRQ HDLA
HRQ HDLA
图8-3 二级8237A的级联示意图
2. 8237A的传送类型 8237A主要完成三种不同的传送: (1)I/O接口到存储器的传送
(2)存储器到I/O接口的传送
(3)存储器到存储器的传送 3. 8237A的优先级处理 8237A有两种优先级方案可供编程选择: ( 1 )固定优先级:规定每个通道的优先级是固定的,即通 道0的优先级最高,依次降低,通道3的优先级最低。 (2)循环优先级:规定刚被服务的通道的优先级为最低, 依次循环。这样,就可以保证4个通道都有机会被服务。 若3个通道已被服务,则剩下的通道一定是优先级最高的。
A7-A4
命令 控制逻辑 写缓冲器 读缓冲器 D1-D0 命令寄存器 (8) 屏蔽寄存器 (4) 请求寄存器 (4) 内部数据总线 I/O缓冲 DB7-DB0 方式寄存器 (4×6) 状态寄存器 (8) 暂存寄存器 (8)
MEMW IOR IOW
HRQwk.baidu.comHLDA DREQ3 0 DACK30
4 4
2. 8237A内部寄存器
(1)当前地址寄存器 (2)当前字节计数寄存器
(3)基地址寄存器
(4)基字节计数寄存器 (5)工作方式寄存器 (6)命令寄存器 (7)状态寄存器
(8) 请求寄存器
(9)屏蔽寄存器 (10)暂存寄存器
(11)软件命令
8.5
8237A的编程及应用
1. 8237A编程的一般步骤 在进行 DMA 传输之前, CPU 要对 8237A 进行初始化编程, 设定工作模式及参数等。通常,其编程内容主要包括以下 几步: (1)输出总清除命令,使8237A处于复位状态,做好接收 新命令的准备; (2)根据所选通道,写入相应通道的基地址寄存器和当前 地址寄存器的初始值; (3)写入基字节计数寄存器和当前字节计数寄存器的初始 值; ( 4 )写入方式控制寄存器,以确定8237A的工作方式和传 送类型; (5)写入屏蔽寄存器; (6)写入命令寄存器,以控制8237A的工作; (7)写入请求寄存器。
优 先 级 编 码
图8-1 8237A内部结构
图8-1中各主要部件的功能分析如下:
(1)时序与控制逻辑:当8237A处于从态工作方式时,时序
与控制逻辑电路接受系统送来的时钟、复位、片选和读 / 写 控制等信号,完成相应的控制操作;当 8237A 处于主态工作 方式时则向系统发出相应的控制信号。 (2)命令控制逻辑:8237A处于从态工作方式时,命令控 制逻辑接收CPU送来的寄存器选择信号A3~A0,选择8237A内部 相应的寄存器;主态时,对工作方式寄存器的最低两位D1D0 进行译码,以确定DMA的操作类型。寄存器选择信号A3~A0与、
第8章 可编程DMA控制器8237A
本章主要教学内容
可编程DMA控制器8237A的内部结构和引 脚功能
8237A的工作方式及编程方法
可编程计数/定时器接口芯片8253的编程结 构与使用方法
8253在PC机上的具体应用
8.1 可编程DMA控制器8237A概述
数据传送方式除了查询方式和中断方式以外还有DMA控制 方式。利用DMA方式传送数据时,数据的传送过程完全由硬件 电路控制,这种电路称为DMA控制器(DMAC),它可以在DMA方 式下起到CPU的作用。DMAC的功能就是在存储器和I/O设备之间 进行高速、成批的数据传输。在8086系统中,DMAC选用的是可 编程器件Intel 8237A,它含有4个独立的DMA通道,可以用来 实现内存到接口、接口到内存及内存到内存之间的高速数据传
送,最高数据传送速率可达1.6MB/s,在此过程中CPU不再干预,
这样可大大减少数据传送的中间过程,提高了数据的传送速度。
8.1.1 8237A的内部结构及引脚
在DMA控制器取得系统总线的控制权后,系统就完全在它 的控制下进行工作,此时DMA为总线主模块,这种工作方式通 常称为主态方式;另外, DMA 又可以和其它接口一样,接受
2. 8237A的引脚
IOR
IOW MEMR MEMW NC READY HLDA ADSTB AEN HQR CS CLK RESET DACK 2 DACK 3 DREQ 3 DREQ 2 DREQ1 DREQ 0 GND
8237A是一种具备40个
引脚的双列直插式DIP封 装的芯片,如图8-2所示。
【例8.1】已知某系统采用一片8237A来设计DMA传输电路, 给定8237A的基地址为00H。利用通道0从磁盘将一个1K字 节的数据块传送到内存06000H开始的区域中,每传送一个 字节,地址增 1 ,采用数据块连续传送方式,禁止自动预 置,外设的 DMA 请求信号 DREQ 和响应信号 DACK 均为高 电平有效。 对8237A的初始化程序如下: DMA EQU 00H OUT DMA+0DH,AL MOV AX,6000H OUT DMA+00H,AL MOV AL,AH OUT DMA+00H,AL MOV AX,0400H DEC AX OUT DMA+01H,AL MOV AL,AH OUT DMA+01H,AL
8.4 8237A的内部寄存器功能及格式 1. 8237A内部寄存器的种类 8237A的内部有10种不同类型的寄存器。各类寄存器 的名称、位数、寄存器个数及其主要功能见表8-1所示。
名称 当前地址寄存器 当前字节计数寄存器 基地址寄存器 基字节计数寄存器 工作方式控制寄存器 命令寄存器 状态寄存器 请求寄存器 屏蔽寄存器 暂存寄存器 位数 16 16 16 16 8 8 8 4 4 8 数量 4 4 4 4 4 1 1 1 1 1 功能 保存在DMA传送期间的地址值,可读写 保存当前字节数,初始值比实际值少1,可读写 保存当前地址寄存器的初始值,只能写 保存相应通道当前字节计数器的初值 保存相应通道的方式控制字,由编程写入 保存CPU发送的控制命令 保存8237A各通道的现行状态 保存各通道的DMA请求信号 用于选择允许或禁止各通道的DMA请求信号 暂存传输数据,仅用于存储器到存储器的传输
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
8237A A
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
A7 A6 A5 A4 EOP A3 A2 A1 A0 VCC DB0 DB1 DB 2 DB3 DB 4 DACK 0 DACK1 DB5 DB 6 DB 7
4. 8237A的传送速率 一般情况下, 8237A 进行一次 DMA 传送需要 4
个时钟周期(不包括插入的等待周期)。例如,PC机的
时 钟 周 期 约 为 210ns , 则 一 次 DMA 传 送 需 要 210 ns×4+210 ns=1050 ns,多加一个210 ns是考虑到认为插 入一个等待周期的缘故。 另外,8237A为了提高传输速率,可以在压缩定时 状态下工作。在压缩定时下,每一个DMA总线周期仅用 2个时钟周期来实现,从而大大地提高了传送速率。
CPU 对它的读 / 写操作,这时 DMA控制器就成了总线从模块,
这种工作方式通常称为从态方式。8237A的编程结构和引脚信 号与这两方面的情况有关。
1. 8237A的内部结构
8237A的内部结构如图8-1所示,它主要由时序与控制逻辑、 命令控制逻辑、优先级编码电路、数据和地址缓冲器组以及内 部寄存器等5个部分组成。
,也有可能由CPU读取DMA控制器的状态。这时8237A如同一般
I/O端口设备一样,是系统总线的从设备,这是8237A工作的从方 式。
1. 8237A传送工作方式 (1)单字节传送方式 这种工作方式的特点是每申请一次只传送一个字节。数 据传送后字节计数器自动减量(增量或减量取决于编程)。传 送完这一个字节后 DMAC 放弃系统总线,将总线控制权交回 CPU 。 HRQ 信号变为无效,释放系统总线。若传送数据使字 节数减为0,总线计数结束发出信号,或终结DMA传送,或重 新初始化。 (2)数据块传送方式 在这种传送方式下, DMAC 一旦获得总线控制权便开始 连续传送数据。每传送一个字节,自动修改地址,并使要传送 的字节数减 1,直到将所有规定的字节全部传送完,或收到外 部信号,DMAC才结束传送,将总线控制权交给CPU。
字数暂存器 16
EOP RESET CS READY CLK AEN ADSTB
MEMR
地址暂存器 A15~A8
I/O缓冲 A3-A0 输出缓冲
16 读缓冲器 时 序 与 控 制 逻 辑 基地址 寄存器 (16× 4) 基字 寄存器 (16× 4) 读/写缓冲器 当前地址 当前字 寄存器 计数器 (16×4) (16×4)
写入方式字:数据块传送,地址增量,禁止自动预置,写传 送,选择通道
MOV OUT MOV OUT AL,10000100B DMA+0BH,AL AL,00H DMA+0AH,AL
写入屏蔽字:通道0屏蔽位清0
写入命令字:DACK 和DREQ为高电平,固定优先级,非存储 器间传送
MOV OUT MOV OUT AL,10000000B DMA+08H,AL AL,04H DMA+09H,AL
图 8- 2 8237A
的引脚
8.3
8237A的工作方式
8237A 在系统中可以有两种功能:一种功能是系统总线的主
控者,这是它工作的主方式。在取代 CPU 控制 DMA 传送时,它 应提供存储器的地址和必要的读写控制信号,数据是在I/O设备
与存储器之间通过数据总线直接传递;另一种功能是在成为主控
者之前,必须由CPU对它编程以确定通道的选择、数据传送的模 式、存储器区域首地址、传送总字节数等等。在 DMA 传送之后
写入请求字:通道0产生请求,用软件启动8237A
2. 8237A的应用 为了掌握8237A的编程方法,我们结合IBM PC/XT计算机系 统中8237A的应用来进行说明。 【例8.2】在PC/XT机中,8237A的通道0用来对动态RAM进行 刷新,通道2和通道3分别用来进行软盘驱动器和内存之间的 数据传送以及硬盘和内存之间的数据传送,通道1用来提供其 它传送功能,比如网络通讯功能。系统采用固定优先级,即 动态 RAM 刷新的优先权最高。 4 个 DMA 请求信号中,只有 DREQ0 是和系统板相连的, DREQ1~DREQ3 几个请求信号都 接到总线扩展槽的引脚上,由对应的软盘接口板和网络接口 板 提 供 。 同 样 , DMA 应 答 信 号 DACK0 送 往 系 统 板 , 而 DACK1~DACK3信号则送往扩展槽。 该例中的8237A对应端口地址为0000H~000FH,在下面的 编程中我们采用标号DMA来代表首地址0000H。