可编程DMA控制器8237A
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 7.5 DMA8237方框图
IOR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 823 7/823 7-2
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 Aຫໍສະໝຸດ Baidu A1 A0
③ 请求传送方式。这种传送方式类似于数据块传送方式, 所不同之处在于每传送一个字节之后,8237都将采样检测DREQ 信号是否有效。 若DREQ变为无效状态则放弃传输,一直到 DREQ变为有效后又可开始从放弃的那一点开始DMA传输。当由 于外设提供的DREQ信号变为无效而放弃DMA传送时, 8237释 放总线,CPU可以接着操作。在此种方式下,因为DMA放弃传 送时,8237的工作现场的地址及字节数计数值会保存在当前地址 寄存器及当前字节数寄存器中。这样,当进行DMA的外部设备
图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
器的寻址是由最低4位地址A3~A0 以及读写命令来区分的。 这
两类寄存器共占用16个端口,记作DMA+00H~DMA+0FH地址,
可供CPU访问。
5. 数据及地址缓冲器组 缓冲器组包含以下 3 部分: (1) A3~A0:最低4位地址线,是三态双向信号端。在芯片空
闲周期(非DMA工作周期),CPU对芯片输出的低4位地址线。
I/O CH RDY
图7.5.4 DMA的读/写总线周期 ( a) (a) DMA读操作; (b) DMA写操作
总线 信号
S0
S1
S2
S3
SW
S4
SI
处理 器时 钟 HLD A AEN A 0~A19 IOR MEM W IOW MEM R D 0~D 7 有效 数据 来自 I/O端口 CH RDY (有效 电平 ) (无效 电平 ) (无效 电平 ) 有效 存储 器地址
定时 和 控制
A4~A7 输出缓冲
A8~ A15
命令 控制
写缓冲 DREQ0~ 4 DREQ3 HRQ HLDA DACK0~ 4 DACK3
读缓冲 据总线 I/O 缓冲 DB0~DB7
内部数 优先级 编号和 旋转优先 级逻辑 命令(8)
屏蔽(4)
读写 模式 (4×6) 状态(8) 临时(8)
请求(4)
图 7.5.1 DMA8237引脚图
2. 优先级编码逻辑
第一 次服 务 最高 优先 级 1 2 最低 优先 级 3 0 服务 2
第二 次服 务 服务 3 0 1 3
第三 次服 务 服务 0 2 2
图 7.5.2 循环优先级示意图
3. 命令控制逻辑 表 7.5.1 控制和状态寄存器寻址信号
4. 内部寄存器组 8237A-5内部寄存器组分成两大类:一类是通道寄存器, 即每个通道都有的当前地址寄存器、当前字节数寄存器和基地 址及基字节数寄存器;另一类是控制和状态寄存器。这些寄存
新的数据块准备好后,可再次向8237发出DREQ有效信号,8237
接着原来的地址和字节计数值继续进行传输,直到字节数寄存器
减到0,又减至0FFFFH计数结束或外输入EOP信号,才停止传送,
退出DMA。
④ 级联方式。
主 823 7 CPU HRQ D R E Q0 D A C K0 HLD A D R E Q1 D A C K1 第一 级 HRQ HLD A 从 823 7 1# 第二 级 从 823 7 HRQ HLD A 0#
(取决于方式字寄存器D4位), 则在结束成批数据传输后产生有效
EOP信号时,当前寄存器恢复到与基地址寄存器同值。CPU预置 16位地址值时,按8位分两次写入地址寄存器,先写低8位, 再 写高8位。读操作也是分两次进行。
(2) 字节寄存器(DMA+1、 +3、 +5、 +7)。 每个通道各有一
清除屏蔽寄存器
屏蔽寄存器是一个4位寄存器,每一位代表一个通道。 当它为1时,向该通道的DMA请求被禁止;为0时,则允 许。
7.5 DMA控制器8237A
7.5.1 DMA 8237A-5的结构和特性
EOP RESET CS READY CLK AEN ADSTB MEMW MEMR IOR IOW 减量器 增量器 暂时字计数器 临时地址 寄存器(16) 寄存器(16) 16位总线 16位总线 读缓冲 基地址 基字计 (16 数(16) ) 读写缓冲 现行 现行字 地址 计数 (16 (16 ) ) I/O 缓冲 A0~A3
(2) A7~A4: 高4位地址线。 此信号仅用于DMA服务时提供
高4位地址。
(3) DB7~DB0:8位双向数据线。在芯片空闲周期,CPU在读 操作时(IOR有效),将内部寄存器的值送到系统总线上;在写操作 时(IOW有效),由CPU对芯片内部寄存器编程。在DMA工作周期, 高8位的地址信息经数据缓冲器,经DB7~DB0 在ADSTB选通信号 作用下锁存到外部地址锁存器中,再与A7~A0(低8位地址信息)组 成DMA传送的16位地址信息。在DMA的存储器到存储器的传送 方式下,存储器读出的数据经数据总线送入数据缓冲器,然后在 存储器写周期里,此数据经数据总线装入到所指定的存储器单元 中。DMA8237芯片能提供16位地址信息, 故对存储器的寻址范围 为68 KB。如要进一步扩大寻址范围,可在DMA系统中为每一个 通道配置一个页面寄存器。如PC/XT的DMA系统中由于增加页面 寄存器,每个通道的地址线为20条(A0~A19),可寻址的范围达1 MB。PC/AT的DMA系统可扩大至24条(A0~A23)每通道可寻址的范 围为1.6 MB。
N
SW等 待 状 态
传送 方式
图 7.5.7 8237A状态 变化流程图
请求
单次
数据 块
7.5.3 内部寄存器的功能及端口寻址 8237A-5DMA芯片有16个端口地址(以地址符DMA+0、 +1、
+2、……+0AH+……+0FH表示)代表了8种寄存器以可编程方法实现
四个通道的DMA传输。 其寄存器种类功用及端口地址分别说明 如下:
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为有效, 再进行下一个字节的传送。
8237A的结构和功能 引脚信号
内部结构
8237A有4个独立的DMA通道,24个内部寄存器。
内部寄存器
• 基址寄存器和当前地址寄存器 • 基字节计数寄存器和当前字节计数寄存器 • 暂时地址寄存器 • 状态寄存器 • 命令寄存器 • 暂存寄存器 • 方式寄存器 • 屏蔽寄存器 • 请求寄存器
有
效
有
效
图 7.5.6 8237A-5正常时序与压缩时序 (a) 正常时序; (b) 压缩时序
空闲 状态
sI
对 DRE Q线 采 样
2. 8237 DMA 工作 时序
任何 允许 的请 求
DRE Q 有效 ? Y 激 励 HRQ 对 HLD A线 采 样
N N
CS= 0? Y 变成 从属 器 件 , CPU 可 对 823 7进 行 输入 或输 出
请求 应答 状态
s0
只有 要改 变高 字节地 址时 才需 要S I
HLD A 有效 ? Y 需要 S I?
N
N
s1
Y 激 励 AEN
s2
激 励 ADS TB和 DAC K, 发 出 地 址
压缩 时序 ? 数 据 传 输 状 态 N s3 较 长 的 IOE 和 MEM R脉 冲
Y
REA DY 有效 ? Y 发 出 IOW 或 MEM W
请求传送方式
在请求传送方式下8237A被编程为连续传送,直至遇 到T/C或外部来的EOP 为止,或者直到DREQ不再有效为 止。
级联方式
多个8237A进行级联时,将其中一个DMAC作为主片, 其他作为从片。
8237A初始化编程
设置方式寄存器
PC机BIOS在初始化时,将方式寄存器初始化为单字 节传送方式、地址递增、通道0为读传送、自动预置 (方式字为58H)、通道1、2、3为校验传送、禁止 自动预置,其方式字为41H、42H、43H。
设置命令寄存器
初始化必须设置命令寄存器,以确定其工作时序、 优先级方式、DREQ和DACK的有效电平及是否允许工 作等。
清除先/后触发器
先/后触发器是一个指针,当它为0时,对低字节进 行操作,当它为1时,对高字节进行操作。
设置地址和字节计数器
8237A每个通道有四个16位的寄存器。这四个寄存器 是基地址寄存器和当前地址寄存器以及基本字节计数 寄存器和当前字节计数寄存器。
8237A的先/后触发器
此触发器保证16位寄存器的读写操作,以先低字节 后高字节的顺序操作。
8237A的工作方式
单字节传送方式
DMA传送时,仅传送一个字节。
块传送方式
块传送方式由一个DMA请求启动传送整个一个数据块, 在整个数据传送期间,系统总线一直被DMAC所控制, 每传送一个数据,计数寄存器的值减1。
② 数据块传送方式。在这种方式下,一旦8237控制总线就 将始终占用总线,连续地传送字节数据直到字节数寄存器减到
零再减至0FFFFH时产生EOP信号为止。若需提前结束DMA传送
也可由外部输入低电平有效的EOP信号来强迫终止DMA传送,
总线控制才交还给CPU。这种方式最大能传送64 KB的数据块,
而且送DREQ只需维持到DACK有效,在传送期间就不再检测 DREQ引脚信号。当数据块传送结束,则终止操作或者是重新初 始化。
图 7.5.3 两级DMA的级联方式
(2) DMA传送的类型。
总线 信号
S0
S1
S2
S3
SW
S4
SI
处理 器时 钟 HLD A AEN A 0 ~ A 19 MEM R IOW MEM W IOR D0~D7 (无 效 电 平 ) (无 效 电 平 ) 有效 数据 来自 存储 器 (有 效 电 平 ) ·非总 线信 号 有效 存储 器地 址
1. 8237内部寄存器的功用
(1) 地址寄存器(DMA+0、 +2、 +4、 +6)。 每个通道各有一
对16位的基地址寄存器和当前地址寄存器。在对芯片初始化编
程时,由CPU同时写入相同的16位地址。若地址任意(字节边界), 则可寻址64 KB, 否则以偶地址(字边界)可寻址128 KB。
基地址寄存器预置后不再改变, 且不能被读出。 每个通道有一个16位的当前地址寄存器,它保存着在DMA 传输地址值。每次传送后,地址自动加1或减1(取决于方式字寄 存器D5 位),且随时可被CPU读出。若通道选择为自动预置操作
1. 时序与控制逻辑块
IOW MEM R MEM W + REA DY HLD A ADS TB AEN HRQ CS CLK RES ET D A C K2 D A C K3 D R E Q3 D R E Q2 D R E Q1 D R E Q0 ( 地 )V SS
V CC ( + 5 V )
DB0 DB1 DB2 DB3 DB4 D A C K0 D A C K1 DB5 DB6 DB7
可编程DMA控制器8237A
1、利用DMA方式传送数据时,数据的传送 过程完全由硬件控制,这种电路称为DMA 控制器(DMAC)。 2、需要数据传送时,DMAC向CPU提出申请, CPU让出总线控制权,由DMAC直接控制地 址总线、数据总线和控制总线,让存储器 与高速的外部设备直接交换数据,CPU不 再干预,这样大大减少了中间过程,提高 了数据传送速度。