8237A内部寄存器端口地址分配表
可编程DMA控制8237A

0禁止存储器到存储器传输 1允许存储器到存储器传输
0禁止通道0地址保持不变 1允许存储器到存储器传输 XD0=0时不起作用
0允许8237A操作 1禁止8237A操作
0正常时序 1压缩序 XD0=1不起作用
图12-4 命令寄存器
7.请求寄存器(RR)
8237A的4个通道都有一个于其相对应的请求触发器, 它是用来设置DMA请求标志的。在8237A控制器内,是4 个请求触发器对应1个DMA请求寄存器。我们知道,DMA 请求可以由硬件发出,也可由软件发出,对于硬件是通 过DREQ引脚引入DMA请求的,对于软件,则是通过对DMA 请求标志的设置来发出请求的,在存储器与存储器进行 数据传输时,因没有外部DREQ请求信号,因此,由软件 产生一个DMA请求信号来启动,DMA传输请求寄存器的格 式如图12-5所示。
2.当前字数寄存器(CWCR)
它用于存放当前的字节数,最大可达64KB。每一个通道都有一个16位 的当前字计数寄存器。在DMA传送操作时,每传送一个字节,该寄存器的内 容减1,当计数值变为零时,便自动产生终止计数信号。在编程状态下, CPU以字节为单位进行操作。在自动预置方式下,当计数减为0或出现有效 低电平时,基字计数寄存器(BWC)可自动地将初始值重新装入CWCR。
7 65 4 3 2 1 0
00选择请求方式 01选择单字节方式 10选择块方式 11选择级联方式
0选择地址增量 1选择地址减量
0禁止自动预置 1允许自动预置
00选择通道0 01选择通道1 10选择通道2 11选择通道3
00效验传输 01写传输 10读传输 11非法 XX若D7D6=11,则无效
图12-2 工作方式寄存器
(2)综合屏蔽命令格式(或称为主屏蔽寄存器)。其格 式如图12-6(b)所示。8237A允许使用综合屏蔽命令一 次完成对4个通道的屏蔽设置。
DMA控制器8237

写入命令控制字,禁止8237工作
发主清除命令 分别写入4个通道当前操作内存地址 分别写入4个通道工作模式
写入命令控制字,启动8237工作 写入屏蔽寄存器,清除通道屏蔽
图7-34 8237设置流程
二、 PC机DMA结构
以8088为CPU的PC机的DMA结构
80286以上档次PC机的DMA结构和 DMA通道分配
7.4.4 DMA控制器的编程及应用 现代计算机系统中,广泛采用了DMA控制器 与DMA接口相分离的结构模式 以IBM-PC系列微型计算机的软盘机DMA接口 为例,讨论其编程结构及应用 一、 8237 DMA控制器的编程结构 Intel 8237DMA控制器芯片的内部结构 如下图
地址总线
数据总线 控制总线
四、 DMA接口设计中的个问题 •请求与响应时序 •计数终止信号T/C的应用 •DMA通道的复用 ,见下图
•DMA通道的公用
• 单字节传送方式 •成组传送方式(块方式) •请求方式
8237DMA的级联方式
HRQ HLDA DREQ DACK 8237 DREQ DACK
CPU
HRQ HLDA 8237
HRQ HLDA 8237
图7-33 8237级联方式
8237DMA的自动初始化工作方式 及在DRAM 刷新的应用
8237DMA的设置流程
A3~0
I/O缓冲
/O缓冲 时序和 控制逻辑
HLDA HRQ 优先级 仲裁逻辑 命令 控制逻辑
寄存器组和标志触发器
DACK0~3 DREQ0~3 至接口
图7-32 8237DMA控制器内部结构
8237占有16个端口地址,在读/写时分 别选择不同的内部寄存器,见教材表 7-3所示 8237DMA的引脚功能描述见讲义相关部 分 8237DMA的三种基本工作方式
微机接口技术:第六章8237A

8237A的引脚功能(3)
处理器接口信号 A0~A3:内部寄存器选择 DB0~DB7:写入命令字和读出状态信息 IOR、IOW:输入,CPU读写8237A RESET:置位屏蔽寄存器,清除其他寄存器 CS CLK
8237A的工作时序(1)
空闲周期SI:检测DREQ并发送HRQ,CPU可对 其编程或读取状态
基地址寄存器、当前地址寄存器共用一个口地址, 基字节寄存器、当前字节数寄存器共用一个口地 址。
4个方式寄存器共用一个口地址,通过控制字分别 写入相应通道。
8237A的寄存器(各通道共用)
控制寄存器:存储器到存储器方式的设置,扩展 写信号(提前通知I/O)
请求寄存器:存储器到存储器时通道0必须用软件 请求,不可屏蔽,且不能自动初始化
请求:DREQ无效时暂时中止传送,外设可 据此控制过程和速率。
级联:主DMA设置。
传送类型
DMA读:从存储器到外设。 DMA写:从外设到存储器。 DMA校验:空操作,像读写一样产生时序
和地址信号,但存储器和外设控制线无效。 只有存储器才需要地址。
存储器到存储器的传送
固定使用通道0和通道1,通道0指向源区, 通道1指向目的区。
初始化编程
编程前应禁止工作或屏蔽相应通道
往DMA+0DH写任意数据即可复位,复位即可屏 蔽所有通道并清先/后触发器
基地址和基字节的写入应分两次:低8位/高8位; 如先前无复位,则写基值之前应往DMA+0CH端 口写任意数据即可复位先/后触发器。基字节数应 减1
不要忘记送出页面地址
送出方式控制字,解除相应屏蔽
DMA方式
中断方式不适用于高速大量数据的传送 当处于DMA方式时,DMAC控制总线和传
可编程DMA控制器8237A

图7.5.5 DMA的读/写总线周期 ·非总 线信 号 (a) DMA读操作; (b) DMA写操作
(3) 8237几个特殊操作的说明。
S1 CLK AEN A8~A15 A 0~A7 RD WR 扩展 码 CLK A 0~A7 RD WR (b ) S2 S1 S2 (a) S1 S2 有效 有 效 S2 S3 S4 S2 S3 S4
定时 和 控制
A4~A7 输出缓冲
A8~ A15
命令 控制
写缓冲 DREQ0~ 4 DREQ3 HRQ HLDA DACK0~ 4 DACK3
读缓冲 据总线 I/O 缓冲 DB0~DB7
内部数 优先级 编号和 旋转优先 级逻辑 命令(8)
屏蔽(4)
读写 模式 (4×6) 状态(8) 临时(8)
请求(4)
设置命令寄存器
初始化必须设置命令寄存器,以确定其工作时序、 优先级方式、DREQ和DACK的有效电平及是否允许工 作等。
清除先/后触发器
先/后触发器是一个指针,当它为0时,对低字节进 行操作,当它为1时,对高字节进行操作。
设置地址和字节计数器
8237A每个通道有四个16位的寄存器。这四个寄存器 是基地址寄存器和当前地址寄存器以及基本字节计数 寄存器和当前字节计数寄存器。
7.5.2 DMA的工作方式、 操作类型及时序
1. 8237 DMA的工作方式及传输操作类型
(1) 8237的 4 种工作方式。 ① 单字节传送方式。在这种方式下, 每次仅传送一个字节数据。 传送
后,字节数寄存器减1,地址寄存器加1或减1(由初始化编程决定)。 HRQ变
为无效,8237释放系统总线,控制权返回给CPU。 当前字节数寄存器从初始 值减到0,还要再传输一个字节,又从0减到0FFFFH时,才发出有效EOP信号, 结束DMA传输过程。 通常,在DACK成为有效之前,DREQ必须保持有效。每次传送后, DMA控制器把总线让给CPU至少一个总线周期,且立即开始检测DREQ输入, 一旦DREQ为有效, 再进行下一个字节的传送。
第8章 可编程DMA控制器8237A解析

2) DMA传送控制信号引脚
IOR/IOW: 双向,被动态时接收CPU的读/写命令,主动态时向
I/O发读/写命令; MEMR/MEMW: 输出,主动态时向M发读/写命令; CS: 被动态时,由CPU选中该芯片进行读/写操作; DB0~DB7:被动态时作数据线,双向三态,主动态时双功能, 地址和数据分时复用:传送M地址的A8~15,M-M传输时作数据 输入/输出线; A0~A3:双向,被动态作端口选择线(16个可访问端口),主动 态发出M地址的A0~3; A4~A7:单向,主动态发出M地址的A4~7; ADSTB:地址选通,输出,用于将DB0~DB7发出的A8~15锁存 到外部地址锁存器;
内部寄存器组
有4个独立通道,每个通道有4个16位寄存器,一个工 作方式寄存器; 另有5个全芯片共用寄存器:命令,状态,请求,屏 蔽,暂存。
14
8.2 8237A内部结构及引脚
问题:芯片对外的联络方式如何?(引脚信号情况) 8-2-2 8237A的引脚 8237A是40引脚的双列直插式器件,由于它既可做主模块又
EOP RESET CS READY CLK AEN ADSTB
MEMR MEMW
地址暂存器 A15 ~A8 读/写缓冲器 当前地址 寄存器 (16×4) 当前字 计数器 (16×4)
I/O缓冲 A3~A 0 输出缓冲 A7~A4
16 读缓冲器 时 序 与 控 制 逻 辑 基地址 基字 寄存器 寄存器 4) (16× 4) (16×
可做从模块,故其外部引脚设置也具有一定的特点。如它的 I/O读写线和数据线是双向的,另外,还设置了存储器读/写 线和16位地址输出线。这些都是其他I/O接口芯片所没有的。
15
微机原理与接口 C0706-习题幻灯片

4
Intel8237A的编程
每次DMA传送都需要进行初始化编程。 初始化准备工作:
禁止8237A响应DMA请求(屏蔽位)
屏蔽寄存器
格式一:单通道屏蔽(DMA+0AH) 格式二:四通道屏蔽(DMA+0FH)
总清命令 功能1:使DMA控制器内部的状态/命令/请求暂存寄存器和先/后触发器清0。 功能2:使屏蔽寄存器全置1,即禁止所有的DMA请求。
18
下列指令中,执行速度最快的是()。
A. MOV AX, NUMBER B. MOV AX, [BX] C. MOV AX, BX D. MOV AX, [BX+BP]
19
8086堆栈指令的操作数字长可以是()位
A. 16 B. 8 C. 32 D. 64
20
无条件段间转移指令的执行改变()。
微机原理与接口技术
习题
1
8237A 内部寄存器的地址分配
8237A内部共有10种寄存器 对这些寄存器进行读、写操作共有16个端口,记为
DMA+0 ~ DMA+15,使用地址 A3 ~ A0 进行寻址。 每个通道有2个专用的地址,其余8个地址由各通道
共用。
2
各通道专用的8个地址
端口
通 道
;检测前,禁止DMA工作
2. OUT DMA+8, AL
;命令字写入命令寄存器
3. OUT DMA+0DH, AL
;使8237进入空闲周期,同时清零先后触发器
4. MOV AX, 0FFFFH
;作全1检测
5. A0: MOV BX, AX
;把AX内容暂存BX
6. MOV CX, 8
微机原理与应用第12章可编程DMA控制8237A

通过编程,8237A可以实现复杂的 DMA传输控制,满足各种应用需求。
8237a的优势与不足
• 易于集成:8237A具有标准的接口,可以方便地与其他微 处理器或外设集成。
8237a的优势与不足
成本较高
由于8237A是一款较为复杂的芯片,其制造成本相对 较高,增加了系统成本。
功耗较大
异步传输
错误检测与纠正
可编程DMA控制器8237A具备错误检测与 纠正功能,能够保证数据传输的可靠性和稳 定性,降低数据传输错误导致的系统故障。
可编程DMA控制器8237A支持异步传输 模式,使得不同外设之间可以实现独立的 数据传输,提高系统并行处理能力。
在实时系统中的应用
实时响应
可编程DMA控制器8237A能够快速响应外部事件,及时完成数据 传输任务,满足实时系统的要求。
数据传输编程包括设置数据传输的起始地址、 数据块大小、数据传输方向等参数,以确保数 据正确地从源地址传输到目标地址。
数据传输编程通常在数据传输任务开始时进行, 以确保控制器按照预期的参数和条件进行数据 传输。
控制字编程
1
控制字编程是8237a可编程dma控制器的重要特 性之一,用于控制数据传输的流程和行为。
02
初始化编程包括设置通道号、 数据块大小、数据传输方向、 是否循环传输等参数,以确保 数据传输的正确性和效率。
03
初始化编程通常在系统启动时 或数据传输任务开始前进行, 以确保控制器处于正确的初始 状态。
数据传输编程
数据传输编程是8237a可编程dma控制器的核 心功能之一,用于控制数据在内存和外部设备 之间的传输。
2
控制字编程包括设置控制字的各位值,以实现不 同的控制功能,如启动/停止数据传输、设置通道 号、设置数据块大小等。
第十二章8237A_DMA控制器

DMA传输概念 DMA控制器的工作过程 1)当外设准备好,可以进行DMA传送时,外设向 DMA控制器发出“DMA传送请求”信号(DREQ); 2)DMA控制器收到请求后,向CPU发出“总线请求”信 号HOLD,表示希望占用总线 ; 3)CPU在完成当前总线周期后会立即对HOLD信号进 行响应。响应包括两个动作:一是CPU将数据总线 、地址总线和相应的控制信号线均置为高阻态,由 此放弃对总线的控制权。另一方面,CPU向DMA 控制器发出“总线响应”信号(HLDA)。 4)DMA控制器收到HLDA信号后,就开始控制总线, 并向外设发出DMA响应信号DACK;
格式:
D7
D6
D5
D4
D3
D2
D1
D0
D1~D0:选通道
不用
D2=1,设置屏蔽; D2 =0,清除屏蔽;
当屏蔽位置位时,该通道就禁止接受DREQ的DMA 请求信号。反之,屏蔽位复位则允许DREQ的请求。 当某一通道进行DMA传输后,产生EOP信号,则 这一通道在禁止自动预置工作条件下的屏蔽位置“1”。 必须再次编程, 使该通道屏蔽位复位, 才能进行下一 次的DMA传输。
8237A的组成和原理 三、8237的内部寄存器 3、命令寄存器 D3: 0=正常时序 ,1=压缩时序 D4: 0=固定优先级,通道0优先级最高,通道3优先 级最低; 1=循环优先级(顺序为:刚响应过的通道优先 级变为最低,以防止某一通道长期占用总线)。
D5: 1=扩展写信号,IOW/MEMW比正常时序提前 一个周期; 0=不扩展写信号 D6: 0= DREQ高电平有效; 1=DREQ低电平有效。 D7: 0= DACK低电平有效; 1=DACK高电平有效。
8237A的组成和原理 三、8237的内部寄存器 4、工作方式寄存器 (地址:A3 A2A1 A0 =1011B) 8位,设定DMA的传输模式,4个通道的模式寄存 器共用一个端口地址, 单字节传输模式:每次DMA操作只传送一字节后, 接着8237释放总线; 块传输模式:8237获得总线控制权后,连续传送多个 字节,直到所要求的字节数传输完(当前字节计 数器减至0),8237在EOP引脚上发出结束信 号,然后释放总线。在块传输过程中,若向8237 的EOP引脚上输入低电平,可强行结束传输; 请求传输模式:在传输过程中,8237要检测DREQ信 号(询问外设),当DREQ无效时,8237暂停传 输(不释放总线),当DREQ再次有效后,继续 进行传输;
DMA控制器和计数定时器

5
8237工作时各信号的配合: (2) 当作为主模块工作时 当8237A 作为主模块工作时,它会往总线上提 供要访问的内存地址,此时CS、AEN信号为高电平。
作为主模块工作时,8237A还必须输出IOR、IOW
MEMR、MEMW读/写信号。 另外最高4位地址在传输前,用指令送到一I/O 端口中,所以DMA传输时,每次传输字节限制在216 以下。
01=单字节传输 10=块传输 11=级联传输
传输类型选择: 00=校验传输 01=写传输 10=读传输 11=无意义 自动预置功能选择: 0=禁止 1=允许
通道选择: 00=选择通道0 01=选择通道1 10=选择通道2 11=选择通道3
内存 I/O
地址增减选择: 0=地址加1 1=地址减1
10
写:I/O 读:内存
6
二、8237A的工作模式
8237A有四种工作模式,每个通道可以用四 种模式之一工作。
(1) 单字节传输模式:
此方式下,8237A一次请求总线只传送一个 字节,就释放总线控制权。8237A和CPU交替管 理。 、
7
(2)块传输模式: 在此方式下,由DREQ启动后就连续的传送数 据,直至完成预定字节数的传送或由外部I/O接 口输入有效的EOP信号,8237A才释放总线控制权 而结束传输。 (3)请求传输模式: 此模式与块传输模式类似,所不同的是在每 传输 1B后,8237A都对DREQ端进行测试,若仍有 效则继续传送,若无效则立即停止传送,待 DREQ 再次有效后继续传送。
18
8. 8237A的特殊软件命令
(2)清除先/后触发器命令 是用来控制DMA通道中地址寄存器和字节计数器 的初值而设置的。 若该触发器为“0”,则读/写低8位;若为“1”, 则读/写高8位。每当对16位寄存器进行一次读/写操 作,则触发器改变一次状态。 为了保证对16位寄存器的读/写是从低字节开始, 应事先用此软件命令使先/后触发器强制清零。
8237 内部结构及引脚_微型计算机原理及应用教程(第2版)_[共9页]
![8237 内部结构及引脚_微型计算机原理及应用教程(第2版)_[共9页]](https://img.taocdn.com/s3/m/1e6b6edf763231126fdb1179.png)
1837.5.2 8237内部结构及引脚8237A DMA 控制器有4个独立的通道,每个通道均有64KB 寻址与计数能力,并且可以用级联方式来扩充更多的通道。
它允许在外部设备与系统存储器以及系统存储器之间直接变换信息,其数据传送率可达1.5MB/s 。
它提供了多种控制方式和操作模式,大大增强了系统的性能,8237A 是一个高性能通用可编程的DMAC 。
1.8237A 的引脚8237A DMA 控制器是一个40个引脚的双列直插式组件,如图7-13所示。
由于它既作主控者又作受控者,故其外部引脚设置也独具特色,它的I/O 读/写线(IOR 、IOW )和地址线(A 0~A 3)是双向的,另外,还设置了存储器读/写线(MEM 、MEMV )和16位地址输出线(DB 0~DB 7、A 0~A 7)。
这些都是其他I/O 接口芯片所没有的。
下面对各引脚功能加以说明。
DREQ 0~DREQ 3:外部设备对4个独立通道0~3的DMA 服务请求,由申请DMA 传送的设备发出,可以是高电平或低电平有效,由程序选定。
它们的优先级是按DREQ 0最高,DREQ 3最低的顺序排列的。
DACK 0~DACK 3:8237控制器发给I/O 设备的DMA 应答信号,有效电平可高可低,由编程选定,在PC 系列中将DACK 编程为低电平有效,系统允许多个DREQ 信号同时有效,即可以几个外部设备同时提出DMA 申请,但在同一个时间,8237A 只能有一个回答信号DACK 有效,为其服务。
这一点类似于中断请求/中断服务的情况。
HRQ :总线请求,高电平有效,是由8237A 控制器向CPU 发出的要求接管系统总线的请求。
HLDA :总线应答,高电平有效,由CPU 发给8237A 控制器。
HLDA 有效时,表示CPU 已让出总线。
IOR /IOW :I/O 读/写信号,是双向的。
8237A 为主态工作时,它们是输出。
在DMAC 控制下,对I/O 设备进行读/写。
7.2-8237控制器接口

8237的DMA传输过程
◆当某个DMA通道进行DMA操作时,向8237发出DMA请求信号DREQ。 8237接收最高优先级的DMA请求信号,向CPU发出总线请求信号HRQ。 ◆CPU接到8237的HRQ信号,发出总线允许信号HLDA,让出总线控制 权,即8237控制总线。8237对响应的通道发出DMA响应信号DACK, 进入DMA传输周期。 ◆在DMA传输周期,8237发出内存的16位地址信号,以及相应的读/写控 制信号,控制外设与所寻址的内存传输数据。 ◆8237通道的地址寄存器和字节计数器,初始化设置了内存首地址和传输 字节数。DMA每传输1个字节,自动对地址寄存器和字节计数器的值 修改。当字节计数值减为0时,发计数结束信号EOP,DMA传输结束。 ◆当DMA传输结束,8237撤消总线请求信号HRQ,CPU也撤消总线允许 信号HLDA,总线控制权归还给CPU。
AH
BH CH DH EH FH 公共
屏蔽寄存器(单屏蔽字)
模式寄存器(模式字) 清除先/后触发器命令 复位命令 清除屏蔽标志命令 综合屏蔽字(全屏蔽字) 暂存器
8237编程的一般步骤
◆ 写复位命令; ◆ 写基地址和当前地址寄存器(先写低8位,后写高8位);
◆ 写基本字节和当前字节计数器(先写低8位,后写高8位); ◆ 写模式字,指定通道的工作方式等; ◆ 写屏蔽字,将通道的屏蔽开放; ◆ 写控制字,设置具体操作,并启动8237。
8237寄存器/命令操作功能表
A 3A2A1A0 通道 写操作(IOW=0) 读操作(IOR=0)
0H,2H,4H,6H 0,1,2,3 基地址与当前地址寄存器 当前地址寄存器 1H,3H,5H,7H 0,1,2,3 基字节与当前字节计数器 当前字节计数器
(精)第8章 可编程DMA控制器8237A

和当前字计数器,以及一个6位的工作方式寄存器。片内还
各有一个可编程的命令寄存器、屏蔽寄存器、请求寄存器、
状态寄存器和暂存寄存器,以及不可编程的字数暂存器和地
址暂存器等。
2. 8237A的引脚 8237A是一种具备40个
引脚的双列直插式DIP封 装的芯片,如图8-2所示。
8.3 8237A的工作方式 8237A在系统中可以有两种功能:一种功能是系统总线的主 控者,这是它工作的主方式。在取代CPU控制DMA传送时,它 应 提供存储器的地址和必要的读写控制信号,数据是在I/O设备 与存储器之间通过数据总线直接传递;另一种功能是在成为主控 者之前,必须由CPU对它编程以确定通道的选择、数据传送的模 式、存储器区域首地址、传送总字节数等等。在DMA传送之后 ,也有可能由CPU读取DMA控制器的状态。这时8237A如同一般 I/O端口设备一样,是系统总线的从设备,这是8237A工作的从方 式。
8.5 8237A的编程及应用
1. 8237A编程的一般步骤 在进行DMA传输之前,CPU要对8237A进行初始化编程, 设 定工作模式及参数等。通常,其编程内容主要包括以下几 步: 1 输出总清除命令,使8237A处于复位状态,做好接收 新命令的准备; 2 根据所选通道,写入相应通道的基地址寄存器和当前 地址寄存器的初始值; 3 写入基字节计数寄存器和当前字节计数寄存器的初始 值; 4 写入方式控制寄存器,以确定8237A的工作方式和传 送类型; 5 写入屏蔽寄存器; 6 写入命令寄存器,以控制8237A的工作; 7 写入请求寄存器。
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章_DMA控制器8237

DMA控制器的地址寄存器加1或减1 ,计数器减1,DMA撤除总线请求信号
7.2.2 8237A的编程结构(含工作 的编程结构( 的编程结构 模式) 模式)
8237A是INTEL系统中的高性能可编程 是 系统中的高性能可编程 DMA控制器,允许 控制器, 控制器 允许DMA传输速度高达 传输速度高达 1.6M字节 秒。 字节/秒 字节 8237A一方面为总线主模块,另一方面 一方面为总线主模块, 一方面为总线主模块 又可以和其他接口一样,接受CPU的读 又可以和其他接口一样,接受 的读 写操作,即作为总线从模块。 写操作,即作为总线从模块。
置屏蔽寄存器对应位为1, 置屏蔽寄存器对应位为 ,则该通道不能 接收DMA请求(硬件或软件); 请求( 接收 请求 硬件或软件); 在没有设置自动预置时, 在没有设置自动预置时,当EOP信号有 信号有 效时,就自动设置屏蔽标志。 效时,就自动设置屏蔽标志。
DMA请求寄存器的格式 请求寄存器的格式
说明:
(1)自动预置:当计数到 时,当前地址寄存 )自动预置:当计数到0时 器和当前字节计数器会从基本地址寄存器和基 本字节计数器中重新取得新值, 本字节计数器中重新取得新值,从而可进入下 一个数据传输过程。 一个数据传输过程。 (2)读写传输是相对于内存而言, )读写传输是相对于内存而言, (3)校验传输用于器件测试。 )校验传输用于器件测试。
7.2 DMA控制器 控制器8237A 控制器
7.2.1 7.2.2 7.2.3 7.2.4 DMA控制器概述 控制器概述 8237的编程结构(含工作模式) 的编程结构( 的编程结构 含工作模式) 8237的引脚信号 的引脚信号 8237的应用编程 的应用编程
7.2.1 DMA控制器概述
DMA控制器可得到总线控制权,用 控制器可得到总线控制权, 控制器可得到总线控制权 DMA方式实现外部设备和存储器之间的 方式实现外部设备和存储器之间的 数据高速传输。 数据高速传输。 一个DMA控制器一般可以连接一个或几 一个 控制器一般可以连接一个或几 个输入输出接口, 个输入输出接口,每个接口通过一组连 线和DMA控制器相连。 控制器相连。 线和 控制器相连 习惯上, DMA控制器中和某个接口有联 习惯上,将DMA控制器中和某个接口有联 系的部分称为一个通道
DMA控制器8237

DMA传送的基本原理图
DMA传送的三个阶段之准备阶段
(1)准备阶段。 • 这是一个程序工作阶段,包括对DMA控制器的初 始化、工作方式、基本参数的设置;对I/O设备及 其接口的初始化,如寄存器的清除,设备工作的 启动等。这时DMA控制器和I/O设备接口都被看作 是有多个I/O端口的设备,CPU对其相继执行若干 条OUT指令。所以图中DMA控制器、I/O设备接 口与系统总线之间都画有地址总线、数据总线和 控制总线。
• ③DMA控制器向地址总线发出将要传送数据的存储器的地 址信息,以备访问对应的存储单元。
DMA传送操作过程(续)
• ④DMA控制器向控制总线发出控制存储器和I/O设 备操作需要的读写信号,实现I/O设备和存储器之 间一个字节的传送。应该特别指出,传送数据字 节的途径是I/O设备→I/O设备接口→系统总线→存 储器,不经过DMA控制器。DMA控制器只起控制 作用。 • ⑤修改DMA控制器中提供存储器地址的地址寄存 器,指向存储器下一单元;记录传送的字节数, 为下一字节传送做好准备。
第 11 章
DMA控制器8237
教学重点
•A的工作原理 • DMA控制器8237A的初始化
教学要求
• 掌握DMA控制器传送数据的工作机理
• 了解DMA控制器的内部结构 • 了解8237的使用方法
第11章 DMA控制器8237
• 11.1 DMA传送的基本原理
DMA传送的三个阶段之结束阶段
(3)传送结束处理阶段。 • 在这一阶段通常是引入一段程序(可由中 断方法或基本I/O测试状态引入),对传送 的结果进行处理,或者同时完成下一次传 送的第一阶段的任务,为下次DMA传送作 准备。
11.2 DMA控制器8237A的工作原理
可编程DMA控制器8237A

用于控制数据传输的字 节数。
用于指示控制器的当前 状态。
负责解析命令和控制数 据传输过程。
工作模式
8237A控制器支持两 种工作模式:单周期 模式和多周期模式。
多周期模式:数据传 输需要多个时钟周期 才能完成。
单周期模式:数据传 输在一个时钟周期内 完成。
数据传输过程
地址比较
控制器比较源地址和目标地址 是否匹配。
WENKU DESIGN
WENKU DESIGN
2023-2026
ONE
KEEP VIEW
可编程DMA控制器 8237A
WENKU DESIGN
WENKU DESIGN
WENKU
REPORTING
https://
CATALOGUE
目 录
• 引言 • 8237A控制器的工作原理 • 8237A控制器的编程方法 • 8237A控制器的应用场景 • 8237A控制器的优势与局限性 • 结论
8237A控制器负责管理数据在内存和 外部设备之间的传输,包括数据的起 始地址、传输大小、传输方向等。
控制器能够实时监控各个通道的数据 传输状态,并在出现错误时进行相应 的处理,如中断或重试。
通道优先级管理
控制器支持设置不同的通道优先级, 根据优先级的高低来处理数据传输请 求。
对未来研究和应用的建议
8237A控制器的主要特点包括
多通道支持:最多支持8个数据传输通道,可同时进行 多个数据传输任务。
灵活的接口:可以与各种类型的外部设备接口连接,如 磁盘驱动器、网络适配器等。
PART 02
8237A控制器的工作原 理
控制器结构
地址寄存器
计数器
状态寄存器控制逻辑源自用于存储数据传输的源 地址和目标地址。
DMA控制器8237A课件

2. 8237A引脚与内部结构
(1)8237A引脚 8237A为40个引脚的双列直插式封装的芯片如图9-4(a)所示,引 脚功能如下。 ● BD7~BD0(21脚~23脚、26脚~30脚)):8位数据线,双向, 三态。作用有三:第一是当8237A空闲,即CPU控制总线时, BD7~BD0作为双向数据线,由CPU读/写8237A内部寄存器;第 二是当8237A控制总线时,BD7~BD0输出被访问存储器单元的 高8位地址信号A15~A8,并由ADSTB信号将这些地址信息存入 地址锁存器。第三是在进行DMA操作时,读周期经DB7~DB0 线把源存储器的数据送入数据缓冲器保存,在写周期再把数据 缓冲器保存的数据经DB7~DB0传送到目的存储器。 ● A3~A0(35脚~32脚):低8位地址线的低4位,双向,三态。 当CPU控制总线时,8237作为一般I/O接口,A3~A0为输入,作 为选中8237A内部寄存器的地址选择线。当8237A控制总线时 ,A3~A0为输出,作为选中存储器的低4位地址。
● NC(5脚):空(没有用)。
(2)内部结构 8237A的内部结构如图9-4(b)所示,图中通道部分只画出了 一个通道的情况。8237A的内部结构由控制逻辑单元、优先级 编码单元、缓冲器和内部寄存器四个基本部分组成,功能介绍 如下。 ①控制逻辑单元 控制逻辑单元的主要功能是根据CPU传送来的有关DMAC的工作 方式控制字和操作方式控制字,在定时控制下,产生DMA请求 信号、DMA传送以及发出DMA结束的信号。 ②优先级编码单元 它用来裁决各通道的优先级顺序,解决多个通道同时请求DMA服 务时可能出现的优先级竞争问题。优先级顺序是指通道0优先级 最高,其次是通道1,通道3的优先级最低。循环四个通道的优 先级不断变化,即本次循环执行DMA操作的通道,到下一次循 环为优先级最低。不论优先级别高还是低,只要某个通道正在 进行DMA操作,其他通道无论级别高低,均不能打断当前的操 作。当前操作结束后,再根据级别的高低,响应下一个通道的 DMA操作申请。 ③ 缓冲器组 包括两个I/O缓冲器1、I/O缓冲器2和一个输出缓冲器,通过这 三个缓冲器把8237A的数据线、地址线和CPU的系统总线相连 。
DMA控制器8237A

DMA控制器8237A
DMA控制器8237A是一种高性能的可编程芯片,其 内部有4个独立的DMA通道,每个通道都有64 KB的寻 址能力,具有不同的优先级,都可以分别被允许和被禁 止。多片8237A可以用级联的方法扩展DMA通道数。
1.1 8237A的引脚及功能
8237A是具有40条引脚的双列直插式芯片。
DMA控制器8237A
过程结束信号,双向,低电 平有效。该信号有效时,当 前 的 DMA 传 送 终 止 , 使 请 求复位,并根据编程而做相 应的操作。当 EOP 引脚不用 时,应与数千欧姆的电阻相 连后接到高电平上,防止输 入干扰而引起MA响应信号,对应4个DMA通道的输 出信号。8237A接收到DMA请求信号, 通过DACK信号通知外设该请求已被批 准。
准备就绪信号输入端,高电平有效,与 CPU上的READY信号类似。此信号为低 电平时,将在DMA传送过程中插入时钟 周期SW,直到此信号为高电平才进入下 一个时钟周期。
复位信号输入端,高电平有效。该信号 有效时,将清除命令、状态寄存器,并 使 屏 蔽 寄 存 器 复 位 。 复 位 后 , 8237A 处 于空闲周期。
过程结束信号,双
向,低电平有效。
该信号有效时,当
前的DMA传送终止,
使请求复位,并根
据编程而做相应的
操作。当
引脚
EOP
不用时,应与数千
欧姆的电阻相连后
接到高电平上,防
止输入干扰而引起
误操作。
DMA控制器8237A
总线响应信号,是CPU对HRQ信号做出 响应时产生的信号,高电平有效。 8237A接收到该信号表示芯片获得系统 总线的控制权,开始DMA传送。
双向三态地址线。在空闲周期时,这些引脚作 为输入线,用于选择8237A内部各寄存器。在 DMA传送数据时,这些引脚用于输出要访问的 存储单元的低4位地址。
8237A的初始化编程

1.2 8237A的初始化
在对8237A初始化之前,通常必须对8237A进 行复位操作,利用系统总线上的RESET信号或用表 8 3所示的软件命令对A3A2AlA0为1101的地址进 行写操作,均可使8237A 复位。复位后,8237A 内 部的屏蔽寄存器被置位而其他所有寄存器被清0,复 位操作使8237A 进入空闲状态,这时才可以对8237
微型计算机原理与接口技术
8237A的初始化编程
1.1 8237A的寻址及连接
8237A内部共占用16个I/O端口地址,由地址码的A3~ A0控制,恰好对应从0000~1111的16种组合。表8.2给出 了端口地址的分配关系。从中可以看到,各通道的寄存器 通过CS和地址线A3~A0规定不同的地址,高低字节再由 先/后触发பைடு நூலகம்来决定。其中有的寄存器是可读可写的,而有 的寄存器是只写的。
2)16个I/O端口地址中,除分配给内部编址寄存器外,还有 几个地址分配用于形成软件命令。这些命令是:对8237A 总清等效于外接RESET信号,占用地址1101;对请求寄存 器清0,占用地址1110;还有已经提到的对字节指向触发器 F的清0。这3种命令都是用输出指令实施的。指令中AL寄 存器的内容不起作用,可为任意值。
7) 写入请求寄存器。如果采用软件DMA请求,在完成通道初始 化之后,在程序的适当位置向请求寄存器写入D2~D0=1××命令, 即可使相应通道进行DMA
完成上述操作后,8237A进入等待状态。若外设的请求信号在 某个DMA通道的DREQ引脚有效,就可以启动该DMA通道的一个传 送过程。
微型计算机原理与接口技术
5) 写入基地址和基本字节寄存器。把DMA操作所涉及到的存储 区首址或末址写入地址寄存器,把要传送的字节数减1,写入基本字 节寄存器。这几个寄存器都是16位的,因此写入要分两次进行;先 写低8位,再写高8