第八章 DMA控制器8237
合集下载
可编程DMA控制8237A
0固定优先权 1循环优先权
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个通道的屏蔽设置。
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的三种基本工作方式
可编程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技术
采用程序传送数据
除了专用的计算机系统外,一般的计算机系统 要不断更换工作任务,因此经常要与外部设备 进行数据交换,特别是与磁盘的数据交换。
磁盘数据是按扇区为单位存储的。一次传送至 少上百字节。
DMA技术就是为加速大量数据传输过程发明的技 术。
在DMA期间,CPU让出对系统总线的控制权,由 DMA控制器负责外部设备与存储器之间的数据 传送。
8237的工作过程
若在S4状态结束前不能完成数据的传送,则只需使READY 信号线变低,就可以在S3(S2)和S4状态间插入Sw等待状 态。直到READY变高,才进入S4。
用DMA传送数据,要求存储器区地址是连续的。因此, 许多时候地址的高8位不变,只是低8位改变。所以,输 出和锁存高8位地址的S1状态不需要,可直接进入S2状态。
其缺点是,在整个DMA传送期间CPU无法控制总线。 (CPU无法处理中断。)
8237的传送方式
DMA传送方式3:请求传送方式
在这种方式下,DREQ信号有效,8237A连续传送数据; 但当DREQ信号无效时,DMA传送被暂时中断,8237A释放总 线,CPU得到总线控制权。但DMA传输并未终止,DMA通道的 地址和字节数的当前值,仍保持在相应通道的当前地址和 当前字节数寄存器中。当外设又准备好进行传送时,只要 使DREQ信号再次有效,DMA传送就继续进行下去。
8237的引脚信号—CPU接口信号
当8237A作为CPU外部芯片时,通过下列引脚, 接受CPU管理和控制
1. DB7~DB0:双向三态数据总线。(非复用) 2. A3~A0地址线:低4位地址总线。8237在系统中占 16个地址单元。 3. CS :片选信号。 4. IOR / IOW :作为CPU外部芯片时的读/写信号。 5. RESET复位
8第八章 DMA 8237控制器
0 0 0 0
0 1 0 1
A0~A7 A8~A15 A0~A7 A8~A15 W0~W7 W8~W15 W0~W7
写 读
0 0 0 0
1 1 0 0
0 0 1 1
0 0 0 0
0 0 0 0
1 1 1 1
1 1 1 1
0 1 0 1
W8~W15
第八章
DMA技术
8237通道寄存器寻址
通 道
信
寄存器 操作
号
CS IOR IOW A3 A2 A1 A0
内部先/ 后触发 器
数据总线
基本地 址寄存 器
写
2
当前地 址寄存 器
基本字 节计数 器 当前字 节计数 器
读
0 0 0 0 0 0 0 0
1 1 0 0 1 1 0 0
第八章
DMA技术
4.8237A各寄存器对应的端口地址(戴P268 )
表8-1 操作命令与有关信号的对应关系
CS
0 0 0
A3 A2 A1 A0
1 1 1 0 0 0 0 0 0 0 0 1
IOR IOW
0 1 1 1 0 0
命
令
读状态寄存器 写控制寄存器 写DMA请求标志寄存器
0
0 0
1
1 1
0
0 1
8237A在传送时有四种工作模式
① 单字节传送模式(戴P262 ) ② 块传送方式(戴P262 ) ③ 请求传送模式(戴P262)④级连传输模式 (戴P262)
在这种传送模式下,8237A可以进行连续的数据传送。当出现以下三种 情况之一时停止传送: a.字节计数器减到0,产生DMA传输结束信号,在线上输出一个有效脉冲。 b.由外界送来一个有效的信号 EOP 。 c.外界的DREQ信号变为无效(外设来的数据已送完)。
第8章 可编程DMA控制器8237A解析
17
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
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
DMA控制器8237
(2)主清除命令 ) 可清除4个通道的屏蔽触发器 个通道的屏蔽触发器, 可清除 个通道的屏蔽触发器,即允许 各通道DMA请求。 请求。 各通道 请求 7.8237的编程步骤 8237的编程步骤 (1)输出主清除命令。 )输出主清除命令。 (2)写入基与现行地址寄存器。 )写入基与现行地址寄存器。 (3)写入基与现行字节数寄存器。 )写入基与现行字节数寄存器。 (4)写入模式寄存器。 )写入模式寄存器。 (5)写入屏蔽寄存器。 )写入屏蔽寄存器。
dreq0dreq3通道dma请求输入外设向dmac输入的请求dma服务信号固定优先级时dreq0优先级最高dreq3最低优先级循环时某通道被响应后变为最低dack0drek3dma控制器送给io接口的回答输出hrq总线请求输出有效时表示8237的某通道向cpu请求占用总线hlda总线响应输入有效时表示cpu让出总线的控制权a3a0地址低4位io双向cpu控制总线时输入用做cp写入命令寄存器。 )写入命令寄存器。 ( 7) 写入请求寄存器 。 若有软件请求 , ) 写入请求寄存器。 若有软件请求, 就写入指定通道,可以开始DMA传送的过 就写入指定通道 , 可以开始 传送的过 程。 若无软件请求, 则在完成了 ( 1) ~ 若无软件请求 , 则在完成了( ) 启动DMA传 (6)的编程后,由通道的 )的编程后,由通道的DREQ启动 启动 传 送过程。 送过程。
12.3 8237在IBM PC/AT系统中的应用 在 系统中的应用 使用2片 级连, 通道, 使用 片8237A级连,提供 个DMA 通道, 级连 提供7个 如下图: 如下图:
DREQ0 DREQ1 DREQ2 DREQ3 HRQ DREQ4 DREQ5 DREQ6 DREQ7
通道1, 通道 ,用户使用 通道2, 通道 ,服务于软盘驱动器 通道4, 通道 ,用作级连 其余通道, 其余通道,保留
8237工作原理
8237工作原理
8237是一种DMA(Direct Memory Access,直接内存访问)控制器,其工作原理如下:
1. 初始化:首先,CPU将DMA控制器的寄存器进行初始化设置,包括传输模式、传输方向、数据长度等。
2. 配置DMA通道:DMA控制器可以有多个通道,每个通道可以独立地进行数据传输。
CPU需要配置DMA通道,指定它们所要使用的内存地址、外设地址以及数据传输的方向。
3. 请求方式:外设设备通过向DMA控制器发送请求信号来启动数据传输过程。
外设设备通常是在缓冲区已满或空时发出请求,要求DMA控制器将数据从内存复制到外设或从外设复制到内存。
4. 中断处理:在数据传输完成后,DMA控制器可以发送中断信号给CPU,以便CPU知道数据传输已经完成,可以进行进一步的处理。
中断信号可以触发CPU执行指定的中断服务程序。
5. 数据传输:DMA控制器会根据配置好的参数,直接从内存中读取数据,或者将数据写入内存,而无需CPU的干预。
DMA控制器和CPU可以并行工作,提高数据传输的效率。
总结:DMA控制器通过直接访问内存,实现了CPU与外设之
间的数据传输,并且减轻了CPU的负担。
它能够在数据传输过程中独立工作,大大提高了数据传输的效率。
DMA控制器专业知识讲座
作为主模块时,8237A还必须输出必要旳读写信 号。
8.3 8237A旳工作模式和模式寄存器
1)工作模式:
① 单字节传播模式 ② 块传播模式 ③ 祈求传播模式
每完毕一种字节就释放 总线,然后P时中断传播。
每传完一种字节, 对DREQ测试。
④ 级联传播模式
第8章 DMA控制器
8.1 DMA控制器概要
DMA传送方式
为了克服程序控制传送旳不足:
外设←→CPU→←存储器
用专用接口电路直接和存储器进行数据传
送。
外设←→存储器
直接存储器存取DMA方式
特点:DMAC取得总线旳控制权,而且提供内 存/外设旳地址和读写控制信号
8.1 DMA控制器概要
① 作为从模块工作时 作为一种一般I/O接口与CPU通信。 CPU对它进行读写操作,以便初始化 或读取状态。
模式寄存器旳格式
8.4 8237A旳工作时序
8.5 8237A旳控制寄存器和状态寄存器
1、控制字:控制DMA控制器全部通道旳操作方式。
8.5 8237A旳控制寄存器和状态寄存器
2、状态字:
8.5 8237A旳控制寄存器和状态寄存器
3、祈求字和屏蔽字 DMA祈求寄存器旳格式 :
软件设置DMA 祈求,EOP信 号清除标志
8.5 8237A旳控制寄存器和状态寄存器
屏蔽寄存器旳格式
单个通道旳 屏蔽字
8.5 8237A旳控制寄存器和状态寄存器
综合屏蔽命令旳格式
4个通道旳 屏蔽字
8.5 8237A旳控制寄存器和状态寄存器
4、复位命令也叫综合清除命令,它旳功能
和RESET信号相同。使控制寄存器、状态 寄存器、DMA祈求寄存器、暂存器以及先/ 后触发器都清0,而使屏蔽寄存器置位。
8.3 8237A旳工作模式和模式寄存器
1)工作模式:
① 单字节传播模式 ② 块传播模式 ③ 祈求传播模式
每完毕一种字节就释放 总线,然后P时中断传播。
每传完一种字节, 对DREQ测试。
④ 级联传播模式
第8章 DMA控制器
8.1 DMA控制器概要
DMA传送方式
为了克服程序控制传送旳不足:
外设←→CPU→←存储器
用专用接口电路直接和存储器进行数据传
送。
外设←→存储器
直接存储器存取DMA方式
特点:DMAC取得总线旳控制权,而且提供内 存/外设旳地址和读写控制信号
8.1 DMA控制器概要
① 作为从模块工作时 作为一种一般I/O接口与CPU通信。 CPU对它进行读写操作,以便初始化 或读取状态。
模式寄存器旳格式
8.4 8237A旳工作时序
8.5 8237A旳控制寄存器和状态寄存器
1、控制字:控制DMA控制器全部通道旳操作方式。
8.5 8237A旳控制寄存器和状态寄存器
2、状态字:
8.5 8237A旳控制寄存器和状态寄存器
3、祈求字和屏蔽字 DMA祈求寄存器旳格式 :
软件设置DMA 祈求,EOP信 号清除标志
8.5 8237A旳控制寄存器和状态寄存器
屏蔽寄存器旳格式
单个通道旳 屏蔽字
8.5 8237A旳控制寄存器和状态寄存器
综合屏蔽命令旳格式
4个通道旳 屏蔽字
8.5 8237A旳控制寄存器和状态寄存器
4、复位命令也叫综合清除命令,它旳功能
和RESET信号相同。使控制寄存器、状态 寄存器、DMA祈求寄存器、暂存器以及先/ 后触发器都清0,而使屏蔽寄存器置位。
DMA传输
•最小模式
CPU通过HOLD接收DMA控制器的总线请求; 在HLDA引脚上发出对总线请求的允许信号。
•最大模式
通过RQ/GT0和RQ/GT1引脚接收DMA控制器的 总线请求,发送对总线请求的允许信号。
RQ/GT0引脚有较高的优先权。
8.2 DMA控制器8237A
1. 8237A芯片的主要特点
➢ 有4个完全独立的DMA通道,可分别进行编程控制。 ➢ 每个通道的DMA请求均可分别允许和禁止,并对各通道进行
减到FFFFH(-1)时,产生计数结束信号EOP。 • 当前计数器的值可以由CPU通过输入指令分两次读出。
2. 读/写逻辑
8237A在系统总线中作为“从模块”时
• 接收CPU对I/O接口的读(IOR#)、写(IOW#)信号; • 对地址总线的低4位 (A0 ~A3)译码; • 片选和IOW#信号有效时,把数据总线的内容写入所寻
➢ 在DMA传送之前,8237A从DB0~DB7把存储器地址的 A8~A15送入这个锁存器。
➢ 在DMA周期里,锁存器将锁存的地址送往系统地址总 线的A8~A15,同时从A0~A7引脚发送地址的低八位。
5. 页面地址寄存器(外接)
➢ 8237A控制了地址总线的16位,所以最多只能连续传 送64K字节的数据。
一个总线读/写周期),因而能够满足高速外设数 据传输的需要。
DMAC内部的寄存器:
• 地址寄存器:存放DMA传输时存储单元地址; • 字节计数器:存放DMA传输的字节数; • 控制寄存器:存放由CPU设定的DMA传输方式,
控制命令等;
• 状态寄存器:存放DMAC当前的状态,包括有无
DMA请求,是否结束等。
2. DMA传输过程
• 总线请求:DMAC向CPU申请使用总线 • 总线控制转移:CPU同意DMAC管理总线 • 数据传输:外设接口和存储器之间传输数据 • 修改地址和计数器:为下一次传输做准备 • 结束处理:DMAC放弃对总线的控制权
CPU通过HOLD接收DMA控制器的总线请求; 在HLDA引脚上发出对总线请求的允许信号。
•最大模式
通过RQ/GT0和RQ/GT1引脚接收DMA控制器的 总线请求,发送对总线请求的允许信号。
RQ/GT0引脚有较高的优先权。
8.2 DMA控制器8237A
1. 8237A芯片的主要特点
➢ 有4个完全独立的DMA通道,可分别进行编程控制。 ➢ 每个通道的DMA请求均可分别允许和禁止,并对各通道进行
减到FFFFH(-1)时,产生计数结束信号EOP。 • 当前计数器的值可以由CPU通过输入指令分两次读出。
2. 读/写逻辑
8237A在系统总线中作为“从模块”时
• 接收CPU对I/O接口的读(IOR#)、写(IOW#)信号; • 对地址总线的低4位 (A0 ~A3)译码; • 片选和IOW#信号有效时,把数据总线的内容写入所寻
➢ 在DMA传送之前,8237A从DB0~DB7把存储器地址的 A8~A15送入这个锁存器。
➢ 在DMA周期里,锁存器将锁存的地址送往系统地址总 线的A8~A15,同时从A0~A7引脚发送地址的低八位。
5. 页面地址寄存器(外接)
➢ 8237A控制了地址总线的16位,所以最多只能连续传 送64K字节的数据。
一个总线读/写周期),因而能够满足高速外设数 据传输的需要。
DMAC内部的寄存器:
• 地址寄存器:存放DMA传输时存储单元地址; • 字节计数器:存放DMA传输的字节数; • 控制寄存器:存放由CPU设定的DMA传输方式,
控制命令等;
• 状态寄存器:存放DMAC当前的状态,包括有无
DMA请求,是否结束等。
2. DMA传输过程
• 总线请求:DMAC向CPU申请使用总线 • 总线控制转移:CPU同意DMAC管理总线 • 数据传输:外设接口和存储器之间传输数据 • 修改地址和计数器:为下一次传输做准备 • 结束处理:DMAC放弃对总线的控制权
(精)第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
微机原理与接口技术
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位地址。
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位地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DACK有效电平
低电平有效 高电平有效 DREQ有效电平 0 1
Channel 0 地址保持不变 0 1 0 1 X 0 1 X 0 1 Disable Enable D0=0
高电平有效
低电平有效
扩展写
不扩展写 扩展写 D3=1
8237A 工作 Enable 8237A Disable 8237A
优先级类型
2
2 2 2 3 3 3 3
写
读
0 0 0 0 0 0 0 0
1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0 1 1
0 0 0 0 1 1 1 1 0 0
基本 /当前字计数 写 当前字计数 基本 / 当前地址 当前地址 读 写 读
为输入,在主模块时为输出。
AEN,ADSTB输出:8位地址锁存允许及选通。在主
模块时允许外部锁存器锁存8237A的高8位地址。
MEMR,MEMW:输出,存储器读写控制,主模块时送
存储器。
READY:输入,准备就绪,主模块时控制总线周期
的长度,与慢速设备同步。
13
RESET:输入,复位信号,复位时屏幕寄存器置 1,
内 F/F
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
DB0~DB7 A0 ~ A7 A8 ~ A15 A0 ~ A7 A8 ~ A15 W0 ~ W7 W8 ~ W15 W0 ~ W7 W8 ~ W15 A0 ~ A7 A8 ~ A15 A0 ~ A7 A8 ~ A15 W0 ~ W7 W8 ~ W15 W0 ~ W7 W8 ~ W15 15
25
5、DMA控制器的工作时序 DMAR的7种状态周期SI,S0,S1,S2,S3,S4及SW SI SI S0 S0 S1 S2 S3 S4 S2 S3 S4 CLK DREQ HRQ
SI
SI
HLDA
AEN ADSTB DB0~DB7 A0~A7 DACK
A8~A15 有效地址 有效地址
IOR MEMR IOW MEMW 8237A-5的DMA时序 扩展写信号
§8.2 可编程DMA控制器8237A
1. DMA(Direct Memory Access)的概念 2. DMA系统组成及工作过程 3. Intel 8237A可编程DMA控制器框图
4. 8237A编程
5. DMA控制器的工作时序
1
1.
DMA(Direct Memory Access)的概念
读状态 寄存器 写命令/控制 寄存器 非法 写DMA请求标志 寄存器 非法 写屏蔽标志 寄存器 非法 写模式 寄存器 非法 清除字节指针 F/F
单一位
B C
1 1
1 1
1 1
1 1
0 0
1 1
1 1
0 0
0 1
0 1
1 0
1 0
读暂存器 复位 (总清)
非法 清除/屏蔽标志 寄存器
D
E
三个软件 命令不依 赖DB上 数据
0 0
0 0 0 0 0 0
1 1
0 0 1 1 0 0
0 0
1 1 0 0 1 1
0 1 0 1
0 1 0 1 0 1 0 1
1 1
1 1 1 1
0 0
1 1 1 1
0 1
0 1 0 1
A0 ~ A7 A8 ~ A15
W0 ~ W7 W8 ~ W15 W0 ~ W7 W8 ~ W15 16
基本 /当前字计数 写
DMA方式不用处理器干预完成M与I/O间数据传送。
DMA期间系统总线由其它主模块控制(驱动)
控制总线的主模块要提供系统的地址及控制信号。
DMA控制器与处理器配合可实现系统的DMA功能。
2
2. DMA系统组成及工作过程 ․ DMA系统组成
地址总线
总线 请求 HOLD HLDA CPU 总线 响应 控制总线 HRQ DMAC HLDA DACK DREQ
基字节数寄存器: DMA传送的总字节数。 当前字节数寄存器: DMA传送时内容变化,可读。
11
8237A引线说明:
DB7-DB0:双向数据总线。
8237A为从模块时被处理器编程或读状态,DB7-
DB0作为数据线,传输数据或命令字。
8237A为主模块时DB7-DB0输出地址A15-A8,在
固定优先级 循环优先级 0 1 0 1 X
时序类型
普通时序 压缩时序 D0=1 19
• 8237A 控制/命令寄存器格式(写9号):硬件设置与运行控制
8237A运行控制命令字:软件DMA请求
运行控制
8237A DMA 请求寄存器 格式(写9号)
D7
D6
D5 不用
D4
D3
D2
D1 0
D0 0 Channel 0 Channel 1 Channel 2 Channel 3
14
4. 8237A编程 • 地址、字计数器端口分配
8237A 字计数器与地址寄存器端口号与对应操作(1)
通道 寄存器 操作 CS IOR IOW A3 A2 A1 A0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
26
(1).空闲周期SI 上电后,未编程前,还没有DMA请求,进入空闲周SI, DMA处于被动工作方式,CPU可对DMA进行编程。
其它寄存器置0。
EOP:双向。输出时,表明内部通道传送结束;
输入时,表明外部强迫DMA传送停止。
DREQ0-DREQ3:I/O设备DMA请求输入信号。 DACK0-DACK3:输出DMA请求的响应。 HRQ:8237A向处理器发出的总线请求信号。 HLDA:处理器发给8237A的总线请求响应信号。
当前字计数 读
•
操作命令与端口号对应关系表
A3 A2 A1 A0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 IOR 0 1 0 1 0 1 0 1 0 1 IOW 1 0 1 0 1 0 1 0 1 0 操 作 十六进制 8 9 A
10
• 8237A组成说明: 8237A有四个独立通道:每个通道有16位地址REG,16
位字节数计数器,6位模式REG。
四个通道公用控制寄存器,状态寄存器,屏蔽寄存器,
请求标志寄存器及暂存器,各寄存器均为8位。
基地址寄存器:放DMA传送RAM地址初值。
当前地址寄存器: DMA传送时内容变化,可读。
23
• 编程过程
HLDA无效时8237A接受µ P编程,不管HRQ是
否有效。 编程前禁止8237A:发关闭8237A命令,向8号 端口(硬件设置)写04H,或对通道进行屏蔽。 用软命令发出总清(Master Clear)操作:向 0DH端口执行一次写操作。 向有关通道送地址值,计数值,模式字。 送硬件设置命令字,打开8237A。 去除屏蔽准备接收DMA请求。
传输类型选择 地址增量选择 地址加1 地址减1 0 1 0 0 1 1 X 0 1 0 1 X 校验传输 写传输 读传输 非 法 D7 D6=11
自动预置功能选择
禁止
允许
0
1
18
• 8237A 控制/命令寄存器格式(写8号):硬件设置与运行控制
8237A硬件设置:
D7
D6
D5
D4
D3
D2
D1
D0 MEM. MEM. 传输 0 1 禁止 允许
M
M传送操作时经DB7-DB0,将M数据送8237A
暂存器。
A3-A4:地址线,从模块时为输入,处理器寻址
8237A;主模块时输出低位地址。
12
A7-A4:地址线,主模块时输出A7-A4。
CS:片选,从模块时处理器用来寻址8237A。
IOR,IOW:I/O读写控制,双向。8237A在从模块时
1 1
1 1
1 1
1 1
0 1
1 0
非法 写所有屏蔽 REG
F
所有位 17
• 8237A 模式寄存器格式(写B号):工作方式设定
D7 模式选择 随机请求传输模式 单字节传输模式 块传输模式 级联传输模式 0 0 1 1
D6 0 1 0 1
D5
D4
D3
D2
D1 0 0 1 1 0 1 0 1
D0 通道选择 选 0# Channel 选 1# Channel 选 2# Channel 选 3# Channel
不用
清除 MASK 位
建立 MASK 位
0 1
0 1 1
21
• 8237A 控制/命令寄存器 格式(写F号):硬件设置与运行控制 8237A运行控制命令字:设屏蔽字(四通道)
运行控制
8237A 全4位 MASK 寄存器 格式 (写F号)
D7
D6 不用
D5
D4
D3
D2
D1
D0 0
清 Channel 0 Mask 位 设 Channel 0 Mask 位