第8章 可编程DMA控制器8237A
合集下载
可编程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控制器(微型计算机技术课件)
二、 DMA数据传送的工作过程(续)
⑤ 待 CPU 将总线浮空,即放弃了总线控制权后,由 DMAC接管系统总线的控制权,并向外设送出DMA 的应答信号。 ⑥ 由DMAC送出地址信号和控制信号,实现外设与内 存或内存不同区域之间大量数据的快速传送。 ⑦ DMAC将规定的数据字节传送完之后,通过向CPU 发HOLD信号,撤消对CPU的DMA请求。CPU收到 此信号,一方面使 HLDA 无效,另一方面又重新开 始控制总线,实现正常取指令、分析指令、执行指 令的操作。
四、8237A的两种工作状态(续)
作为主模块工作时(有效周期): 当 8237A 作为主模块工作时,它会往总线 上提供要访问的内存地址,地址的低8位放在 A7~A0,而地址的高8位放在D7~D0。 作为主模块工作时, 8237A 还必须输出必 要 的 读 写 信 号 , IOR 、 IOW 、 MEMR 、 MEMW。
8 8 8 6 4 4
5.8237的三态缓冲器
8237 的数据引线,地址引线都有三 态缓冲器,因而可以接也可以释放 总线。
三、8237的外部结构
8237 是具有 40 个引脚的双列直插式 集成电路芯片
首先分类展开外部引脚
1. 请求与响应信号
DREQ0~DREQ3:DMA通道请求。当外设需 要请求DMA服务时,将DREQ信号置成有效电 平,并要保持到产生响应信号。对应于四个独 立的通道,DREQ的有效电平可以通过编程来 加以确定,优先级可以固定,也可以旋转。 HRQ :总线请求。 8237A 输出有效的 HRQ 高 电平,向CPU申请使用系统总线。 HLDA:总线响应。8237A接受来自CPU的响 应信号HLDA,取得了总线的控制权。 DACK0~DACK3:DMA通道响应。8237A使 请求服务的通道产生相应的DMA响应信号。
第8章 DMA控制器
8.2.4 8237A方式控制字
5.命令寄存器
命令寄存器为8位寄存器,4个通道公用。用于控制8237A的操作,其内容 由CPU写入,进行初始化编程或写入新的命令,而用复位信号RESET或软件清除 命令来清除它的内容。该寄存器只能写,不能读。
8.2.4 8237A方式控制字
5.命令寄存器
旋转优先权示意
8.1.3 DMA操作步骤
1.DMA控制器的预置(初始化)
DMA操作之前,必须把一些信息,如传送方向、存储器首地址、传 送字节数等预置入DMA控制器。
指定数据传送方向,即指定I/O设备要对存储器“读”还是“写”,
这就要指定其控制/状态寄存器中相应的控制位的值; 数据应传送至何处,这就要指定其地址的初值(即首地址); 传送字节数即有多少数据(字数)需要传送,也就是要指定其字计 数寄存器的初值。 预置DMA控制器初值的工作,是由CPU执行指令来完成的,即把DMA 控制器内部相应的寄存器看作是I/O端口,用输出指令把这些内容存放 到相应的寄存器中去。
8.2.4 8237A方式控制字
7.屏蔽寄存器
用来禁止或允许通道的DMA请求。当屏蔽位置位时。禁止本通道的DREQ进入。 若通道编程为不自动预置,则当该通道遇到 EOP 信号时,它所对应的屏蔽位置 位。 屏蔽字有两种格式,即写1位屏蔽位的屏蔽字和写4位屏蔽位的屏蔽字。
8.2.4 8237A方式控制字
8.2.2 8237A内部结构
8.2.2 8237A内部结构
1.控制逻辑单元
定时和控制逻辑单元 命令控制单元
优先权控制逻辑单元
2.缓冲器
两个I/O缓冲器
一个输出缓冲器
8.2.2 8237A内部结构
3.内部寄存器
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控制器专业知识讲座
作为主模块时,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技术
2018/3/21
9
(2)DMA请求
当外设准备就绪时,就通过其接口向DMA控制器发出一 个DMA传送请求DRQ,DMA控制器接到此请求信号后送到 判优电路(如果系统中存在多个DMA通道),判优电路把优 先级最高的DMA请求选择出来向CPU发总线请求信号HOLD,
请求CPU暂时放弃对系统总线的控制权。
基本字节计数器用来存放每次DMA操作需要传送的字节 总数,其值比实际需传送的字节数少1。初值也是在编程时 由CPU写入的,而且初值也被同时写入当前字节计数器。在 DMA传送时,每传送1个字节,当前字节计数器就值就自动 减1,当由0减到FFFFH时,产生计数结束信号。当前字节计 数器的值也可由CPU通过两条输入指令读出,每次读8位。
在外设和内存之间传送一个数据块时,一个完整的DMA
操作的工作过程通常包括初始化等5个阶段,分述如下: (1)初始化
在启动DMA传送之前,DMA控制器和其他接口芯片一 样受CPU控制,由CPU执行相应指令来对DMA控制器进行 初始化编程,以确定通道的选择、数据的传送方式、传送类 型、传送的字节数等等。
2018/3/21
18
图8-3 DMA控制器8237A及辅助逻辑框图
2018/3/21 19
从图8-3可以看到,8237A内部包含4个独立的DMA通道,
每个通道包含16位的地址寄存器和16位的字节计数器,还包 含一个8位的模式寄存器。4个通道公用控制寄存器和状态寄 存器。
8237A的内部寄存器如表8-1所示。它与用户编程直接发 生关系。
出了DMA方式。
2018/3/21 3
DMA方式是指不通过CPU的干预,直接在外设和内存之
可编程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控制器的工作原 理
控制器结构
地址寄存器
计数器
状态寄存器控制逻辑源自用于存储数据传输的源 地址和目标地址。
8.4 PC中的DMA应用-微型计算机汇编语言与接口技术-刘均-清华大学出版社
在PC/AT机中,采用两片8237A芯片,可支持7个通道DMA传送。 主片8237A的通道2为内存与软盘的高速数据交换,其他通道都 未用。从片8237A的通道0用作级联,其他通道均保留使用。主 片8237A的1~3通道按8位数据传送,最大传送64KB;主片8237A 通道0和从片通道1、2、3按16位数据进行DMA传送的,每次 DMA传送最大为64KB。
业精于勤而荒于嬉
教材第页 6
8.4 PC中的DMA应用
业精于勤而荒于嬉
教材第页 7
第8章 DMA技术
8.1 DMA技术概述 8.2 可编程DMA控制器8237A 8.3 8237A的应用举例 8.4 PC中的DMA应用
业精于勤而荒于嬉
教材第页 1
8.4 PC中的DMA应用
PC中为了实现DMA方式传送,除了有DMA控制器之外,还需要 有其他配套芯片组成一个完整的DMA传输系统。因为8237A只 能输出A0~A15共16条地址线,而PC中的系统地址总线有20位, 所以需要用到一组4位的页面寄存器,用来产生DMA通道的高4 位地址A16~A19,它与8237A输出的16位地址一起组成20位地址 线,用来访问存储器的全部存储单元。
解 在设备管理器中查得8237A端口地址00H~0FH,页面寄存器 地址83H。除了对DMA控制器8237A的初始化,还要向页面地址 寄存器写入高4位地址值。设内存缓冲区地址为2100:0030H, 传送数据块长度200B。设RECEIVE子程序是启动外部设备获得 数据的子程序。利用通道1传送数据。
业精于勤而荒于嬉
教材第页 4
8.4 PC中的DMA应用
在微机系统的设备管理器中,可以看到系统中的DMA设备。在 设备的属性中可以查到DMA通道号和端口地址,如图8.11所示。
业精于勤而荒于嬉
教材第页 6
8.4 PC中的DMA应用
业精于勤而荒于嬉
教材第页 7
第8章 DMA技术
8.1 DMA技术概述 8.2 可编程DMA控制器8237A 8.3 8237A的应用举例 8.4 PC中的DMA应用
业精于勤而荒于嬉
教材第页 1
8.4 PC中的DMA应用
PC中为了实现DMA方式传送,除了有DMA控制器之外,还需要 有其他配套芯片组成一个完整的DMA传输系统。因为8237A只 能输出A0~A15共16条地址线,而PC中的系统地址总线有20位, 所以需要用到一组4位的页面寄存器,用来产生DMA通道的高4 位地址A16~A19,它与8237A输出的16位地址一起组成20位地址 线,用来访问存储器的全部存储单元。
解 在设备管理器中查得8237A端口地址00H~0FH,页面寄存器 地址83H。除了对DMA控制器8237A的初始化,还要向页面地址 寄存器写入高4位地址值。设内存缓冲区地址为2100:0030H, 传送数据块长度200B。设RECEIVE子程序是启动外部设备获得 数据的子程序。利用通道1传送数据。
业精于勤而荒于嬉
教材第页 4
8.4 PC中的DMA应用
在微机系统的设备管理器中,可以看到系统中的DMA设备。在 设备的属性中可以查到DMA通道号和端口地址,如图8.11所示。
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位地址。
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)。
微 处 理 器
主片
8237A
HOLD HLDA HRQ DREQ
0
HLDA DACK0 8237A DREQ DACK
3 3
HRQ HLDA 从片 HRQ HLDA
主片只作信号联络和管理, 数据传输是在从片的控制 下进行的。
8237A
图8-3 二级8237A级联
24
8.4 8237A内部寄存器功能及格式
3
回顾 – DMA的基本原理图
问题:具体实现DMA的芯片结构如何?如何运作?
4
8.1 概述
8.1.1 8237A芯片的主要功能
8237A 通道0 通道1 通道2 通道3 接 口 接 口 接 口 外 设 外 设 外 设 (1)有4个独立DMA通道,每个通道 均可独立传送数据。 (2)每个通道DMA请求都可分别允许 和禁止。
第8章 可编程DMA控制器8237A
8.1 8.2 8.3 8.4 8.5
概述 8237A的内部结构与引脚 8237A的工作方式 8237A内部寄存器功能及格式 8237A的编程及应用
1
回顾 – DMA方式传输的特点
2
回顾:DM④ DMAC
② 请求HRQ CPU 回答HLDA ③
获得总线, DMA开始
传送1字节,并修 改地址及计数 DMA结束, 让出总线
20
问题:单字节传送方式有什么优缺点?
传输效率较低,但传输两个字节之间,CPU有机会得回控 制权。如何进行更高效的传输?
8.3.2 数据块传送方式
外设准备好后,向8237A发DREQ信号,8237A收到该信号后向CPU 发HRQ信号请求占用总线,CPU同意HRQ请求,向8237A发HLDA 信号,然后8237A向外设发DACK信号开始DMA传送。
8
8237A内部结构简化表示
9
时序与控制逻辑
片选,时钟,读写控制信号等
10
优先级编码电路
固定优先级和循环优先级; 一旦某个通道正在服务,其它通道均被禁止,直到该 通道完成传输。
11
数据/地址缓冲器组
缓冲器可以连接系统总线。
12
命令控制逻辑
内部地址译码(A0-A3)等。
13
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锁存 到外部地址锁存器;
EOP RESET CS READY CLK AEN ADSTB
MEMR MEMW
地址暂存器 A15 8 ~A
I/O缓冲 A3~A 0 输出缓冲
16 读缓冲器 时 序 与 控 制 逻 辑 基地址 基字 寄存器 寄存器 4) (16× (16× 4) 读/写缓冲器 当前地址 寄存器 (16×4) 当前字 计数器 (16×4)
25
通道专用 寄存器
方式寄存器 8位
问题:8237A只有8根数据线,如何写入16位数据到字 节计数或存储器地址相关的寄存器中?
分两次写。往该寄存器拥有的端口地址写入字节数据, 连续对同一端口按顺序写两次,就可以把16位字的低八 位和高八位分别写入寄存器中。
如何确保低八位和高八位的顺序正确? 8237A内有一个高/低位触发器,当用专门指令清0( P.195)这个触发器后,立即往寄存器写数,先写低八 位,后写高八位即可。(软、硬件复位时,高/低触发器 自动被清0)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
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 V CC DB 0 DB 1 DB2 DB 3 DB 4 DACK 0 DACK1 DB 5 DB6 DB7
A7~A4
命令 控制逻辑 写缓冲器 读缓冲器 D1~D 0 内部数据总线 I/O缓冲 DB7 ~DB0 工作方式 寄存器 (8× 4) 状态寄存器 (8) 暂存寄存器 (8)
IOR IOW
HRQ HLDA DREQ3~0 DACK 3 0 ~
4 4
优 先 级 编 码
命令寄存器 (8) 屏蔽寄存器 (4) 请求寄存器 (4)
8.3.3 请求传送方式
这种工作方式与数据块传送方式类似,不同点在于每传送1 B后,8237A 都对DREQ端进行测试,询问其是否有效。 如检测到DREQ端变为无效电平,则停止DMA传送,但不释放系统总线, 测试过程仍进行。 当检测到DREQ端变为有效电平时,就在原来的基础上继续进行传送。 这种方式的特点是DREQ信号一直有效时,连续传送数据,只有当字节 计数器由 0 减为FFFFH,或外部送来有效的EOP信号才结束DMA传送 过程。
DMAC
I/O
6
8.2 8237A内部结构及引脚
问题:8237A内部应该有哪些功能模块?
应该从数据、状态、控制几方面来考虑。
8-2-1 8237A内部结构
8237A内部结构由数据和地址缓冲器组、内部寄
存器、命令控制逻辑、时序与控制逻辑、优先级编
码电路等组成。
7
8237A内部结构简图
字数暂存器 16
在这种方式下,DMA控制器获得总线控制权后,可以连续进行多个 字节的传送(最多64K字节)。只有当字节计数器计数由 0 减为 FFFFH,或者收到外部输入的结束命令(从EOP引脚输入一个低电 平信号)时,8237A才释放总线而结束传送。
21
问题:数据块传输方式有什么特点? 一次申请总线,可以传输多个字节(一个数据块,最大 64KB)
26
8.4 8237A内部寄存器功能及格式
8237A的内部10个可编程寄存器详列下表。
名 称 位数
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请求信号 暂存传输数据,仅用于存储器到存储器的传输
可做从模块,故其外部引脚设置也具有一定的特点。如它的 I/O读写线和数据线是双向的,另外,还设置了存储器读/写 线和16位地址输出线。这些都是其他I/O接口芯片所没有的。
15
从DB7-0输 出高8位 地址
应答外设的 DMA请求 外设DMA 请求
IOR IOW MEMR MEMW NC READY HLDA ADSTB AEN HQR CS CLK RESET DACK2 DACK3 DREQ3 DREQ2 DREQ1 DREQ0 GND
思考:要使用8237A进行正确的DMA数据传输,必须 对它进行编程控制,如何编程控制它? 对8237A进行编程控制,就是往它各种内部寄存器写 数据,以此来设定它的工作参数,并启动它开始运作。
通道共用 寄存器 命令寄存器;状态寄存器; 8位 请求寄存器;屏蔽寄存器;暂存寄存器; 字节寄存器 地址寄存器 基字节计数寄存器 当前字节计数寄存器 基地址寄存器 当前地址寄存器 字节和 地址寄 存器为 16位
22
问题:请求传送方式有什么特点? 和数据块传送方式一样,一次申请总线,可以传输多个 字节(最大64KB),不过有其独特特点,每传输一 个字节都要重新检测外设来的DREQ信号,如果信号 无效,暂停传输,直到信号重新有效。
23
8.3.4 级联传送方式
在这种方式下可把一片 8237A(主片)和几片 8237A(从片)进行级联, 以便扩充DMA通道。 有什么特点?
存储器低位 地址
DMA过程结束
8237 A A
片内寄存器 寻址/存储 器低位地址 数据/存储器 高位地址
16
4. 8237A的外部引脚(分类说明) 1) 请求与响应信号引脚
(1) DREQ(DMA Request,输入)—DREQ0~DREQ3。每个通道 对应一个DREQ信号端,此引脚连接外设的DMA请求信号。 (2) HRQ(Hold Request,输出)—8237A收到外设接口发来DREQ 信号后,如果该通道的DMA请求没有被屏蔽,则DMA控制 器的HRQ端输出有效电平,向CPU发出总线请求。 (3) HLDA(Hold Acknowledge,输入)—DMAC向CPU发总线请 求信号HRQ以后,CPU发回的总线响应信号。8237A收到该 信号后,便获得了总线控制权。 (4) DACK(DMA channel Acknowledge,输出)—DACK0 ~ DACK3。这是DMAC送给I/O接口的回答信号,每个通道对 应一个DACK信号端。DMAC获得CPU送来的总线允许信号 HLDA以后,便产生DACK信号送到相应发出请求的外设接 口。
接 口
外 设
(3)每个通道均有64 KB寻址和计数 能力。(16位地址寻址能力) (4)有4种DMA传送方式,分别为单 字节传送、数据块传送、请求传送 和级联传送方式。 (5)需要更多数据传送通道可把 8237A级联。
5
主片
8237A
HOLD HLDA HRQ DREQ
0
HLDA DACK0 8237A DREQ DACK
3 3
HRQ HLDA 从片 HRQ HLDA
主片只作信号联络和管理, 数据传输是在从片的控制 下进行的。
8237A
图8-3 二级8237A级联
24
8.4 8237A内部寄存器功能及格式
3
回顾 – DMA的基本原理图
问题:具体实现DMA的芯片结构如何?如何运作?
4
8.1 概述
8.1.1 8237A芯片的主要功能
8237A 通道0 通道1 通道2 通道3 接 口 接 口 接 口 外 设 外 设 外 设 (1)有4个独立DMA通道,每个通道 均可独立传送数据。 (2)每个通道DMA请求都可分别允许 和禁止。
第8章 可编程DMA控制器8237A
8.1 8.2 8.3 8.4 8.5
概述 8237A的内部结构与引脚 8237A的工作方式 8237A内部寄存器功能及格式 8237A的编程及应用
1
回顾 – DMA方式传输的特点
2
回顾:DM④ DMAC
② 请求HRQ CPU 回答HLDA ③
获得总线, DMA开始
传送1字节,并修 改地址及计数 DMA结束, 让出总线
20
问题:单字节传送方式有什么优缺点?
传输效率较低,但传输两个字节之间,CPU有机会得回控 制权。如何进行更高效的传输?
8.3.2 数据块传送方式
外设准备好后,向8237A发DREQ信号,8237A收到该信号后向CPU 发HRQ信号请求占用总线,CPU同意HRQ请求,向8237A发HLDA 信号,然后8237A向外设发DACK信号开始DMA传送。
8
8237A内部结构简化表示
9
时序与控制逻辑
片选,时钟,读写控制信号等
10
优先级编码电路
固定优先级和循环优先级; 一旦某个通道正在服务,其它通道均被禁止,直到该 通道完成传输。
11
数据/地址缓冲器组
缓冲器可以连接系统总线。
12
命令控制逻辑
内部地址译码(A0-A3)等。
13
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锁存 到外部地址锁存器;
EOP RESET CS READY CLK AEN ADSTB
MEMR MEMW
地址暂存器 A15 8 ~A
I/O缓冲 A3~A 0 输出缓冲
16 读缓冲器 时 序 与 控 制 逻 辑 基地址 基字 寄存器 寄存器 4) (16× (16× 4) 读/写缓冲器 当前地址 寄存器 (16×4) 当前字 计数器 (16×4)
25
通道专用 寄存器
方式寄存器 8位
问题:8237A只有8根数据线,如何写入16位数据到字 节计数或存储器地址相关的寄存器中?
分两次写。往该寄存器拥有的端口地址写入字节数据, 连续对同一端口按顺序写两次,就可以把16位字的低八 位和高八位分别写入寄存器中。
如何确保低八位和高八位的顺序正确? 8237A内有一个高/低位触发器,当用专门指令清0( P.195)这个触发器后,立即往寄存器写数,先写低八 位,后写高八位即可。(软、硬件复位时,高/低触发器 自动被清0)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
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 V CC DB 0 DB 1 DB2 DB 3 DB 4 DACK 0 DACK1 DB 5 DB6 DB7
A7~A4
命令 控制逻辑 写缓冲器 读缓冲器 D1~D 0 内部数据总线 I/O缓冲 DB7 ~DB0 工作方式 寄存器 (8× 4) 状态寄存器 (8) 暂存寄存器 (8)
IOR IOW
HRQ HLDA DREQ3~0 DACK 3 0 ~
4 4
优 先 级 编 码
命令寄存器 (8) 屏蔽寄存器 (4) 请求寄存器 (4)
8.3.3 请求传送方式
这种工作方式与数据块传送方式类似,不同点在于每传送1 B后,8237A 都对DREQ端进行测试,询问其是否有效。 如检测到DREQ端变为无效电平,则停止DMA传送,但不释放系统总线, 测试过程仍进行。 当检测到DREQ端变为有效电平时,就在原来的基础上继续进行传送。 这种方式的特点是DREQ信号一直有效时,连续传送数据,只有当字节 计数器由 0 减为FFFFH,或外部送来有效的EOP信号才结束DMA传送 过程。
DMAC
I/O
6
8.2 8237A内部结构及引脚
问题:8237A内部应该有哪些功能模块?
应该从数据、状态、控制几方面来考虑。
8-2-1 8237A内部结构
8237A内部结构由数据和地址缓冲器组、内部寄
存器、命令控制逻辑、时序与控制逻辑、优先级编
码电路等组成。
7
8237A内部结构简图
字数暂存器 16
在这种方式下,DMA控制器获得总线控制权后,可以连续进行多个 字节的传送(最多64K字节)。只有当字节计数器计数由 0 减为 FFFFH,或者收到外部输入的结束命令(从EOP引脚输入一个低电 平信号)时,8237A才释放总线而结束传送。
21
问题:数据块传输方式有什么特点? 一次申请总线,可以传输多个字节(一个数据块,最大 64KB)
26
8.4 8237A内部寄存器功能及格式
8237A的内部10个可编程寄存器详列下表。
名 称 位数
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请求信号 暂存传输数据,仅用于存储器到存储器的传输
可做从模块,故其外部引脚设置也具有一定的特点。如它的 I/O读写线和数据线是双向的,另外,还设置了存储器读/写 线和16位地址输出线。这些都是其他I/O接口芯片所没有的。
15
从DB7-0输 出高8位 地址
应答外设的 DMA请求 外设DMA 请求
IOR IOW MEMR MEMW NC READY HLDA ADSTB AEN HQR CS CLK RESET DACK2 DACK3 DREQ3 DREQ2 DREQ1 DREQ0 GND
思考:要使用8237A进行正确的DMA数据传输,必须 对它进行编程控制,如何编程控制它? 对8237A进行编程控制,就是往它各种内部寄存器写 数据,以此来设定它的工作参数,并启动它开始运作。
通道共用 寄存器 命令寄存器;状态寄存器; 8位 请求寄存器;屏蔽寄存器;暂存寄存器; 字节寄存器 地址寄存器 基字节计数寄存器 当前字节计数寄存器 基地址寄存器 当前地址寄存器 字节和 地址寄 存器为 16位
22
问题:请求传送方式有什么特点? 和数据块传送方式一样,一次申请总线,可以传输多个 字节(最大64KB),不过有其独特特点,每传输一 个字节都要重新检测外设来的DREQ信号,如果信号 无效,暂停传输,直到信号重新有效。
23
8.3.4 级联传送方式
在这种方式下可把一片 8237A(主片)和几片 8237A(从片)进行级联, 以便扩充DMA通道。 有什么特点?
存储器低位 地址
DMA过程结束
8237 A A
片内寄存器 寻址/存储 器低位地址 数据/存储器 高位地址
16
4. 8237A的外部引脚(分类说明) 1) 请求与响应信号引脚
(1) DREQ(DMA Request,输入)—DREQ0~DREQ3。每个通道 对应一个DREQ信号端,此引脚连接外设的DMA请求信号。 (2) HRQ(Hold Request,输出)—8237A收到外设接口发来DREQ 信号后,如果该通道的DMA请求没有被屏蔽,则DMA控制 器的HRQ端输出有效电平,向CPU发出总线请求。 (3) HLDA(Hold Acknowledge,输入)—DMAC向CPU发总线请 求信号HRQ以后,CPU发回的总线响应信号。8237A收到该 信号后,便获得了总线控制权。 (4) DACK(DMA channel Acknowledge,输出)—DACK0 ~ DACK3。这是DMAC送给I/O接口的回答信号,每个通道对 应一个DACK信号端。DMAC获得CPU送来的总线允许信号 HLDA以后,便产生DACK信号送到相应发出请求的外设接 口。
接 口
外 设
(3)每个通道均有64 KB寻址和计数 能力。(16位地址寻址能力) (4)有4种DMA传送方式,分别为单 字节传送、数据块传送、请求传送 和级联传送方式。 (5)需要更多数据传送通道可把 8237A级联。
5