可编程DMA控制器8237A

合集下载

8第八章 DMA 8237控制器

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解析

第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

微机原理与应用第12章可编程DMA控制8237A

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

DMA的应用举例

DMA的应用举例

8237A的初始化
OUT OUT MOV SHL ADD OUT MOV OUT MOV SHL ADD OUT MOV DEC OUT
LATCHB,AL CLEAR_F,AL AX,ES AX,4 AX,SI CH0_A,AL AL,AH CH0_A,AL AX,ES AX,4 AX,DI CH1_A,AL AX,CX AX CH1_C,AL
;输出基和现行地址的低8 ;输出基和现行地址的高8
微型计算机原理与接口技术
TRANS ENDP
8237A的初始化
在存储器到存储器传输的DMA编程控制中,先将地址送 地址锁存器,然后清除先/后触发器,接着再对DMA通道作初 始编程。通道0作为源、通道1作为目的,传输字计数器值减 “1”后装入字计数寄存器。然后,对每一个通道的屏蔽寄存 器编程,命令寄存器选择块传输,通道0被使用,DMA请求 软件初始化。在过程返回前,还要对状态寄存器测试是否已 计数结束,以防止再传输其他的数据。另外,在程序中使用 了MASM6.0的重复执行语句REPEAT-UNTIL。
DMA的应用举例
8237A的初始化
2. 8237A
(1)用8237A
8237A与80x86
处理器相连时,使用地址锁存器作为地址锁存。假设将内存地
址00000H~13FFFH的内容传输到14000H~17FFFH中,用
DMA控制传输。其控制程序如下,其中CX寄存器为计数,SI、
DI分别作为源、目的寄存器,ES段寄存器为数据地址。
8237A的初始化
LATCHB CLEAR_F CH0_ห้องสมุดไป่ตู้ CH1_A CH1_C MODE CMMD MASKS REQ STATUS TRANS MOV MOV SHR

DMA控制器和计数定时器

DMA控制器和计数定时器
/写控制端;在CPU对8237A进行读/写时。
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位寄存器的读/写是从低字节开始, 应事先用此软件命令使先/后触发器强制清零。

微机原理 第10章 DMA控制器8237A 习题及参考

微机原理 第10章 DMA控制器8237A 习题及参考

第十章DMA控制器8237A1.试说明在DMA方式下,传输单个数据的全过程。

答:内存往外设传输单个数据:(1)当一个接口准备就绪,要进行DMA传输时,该接口往DMA 控制器发一个DMA请求;(2)DMA控制器采样到DRED有效电平后,若屏蔽寄存器是开放的,便往控制总线上发一个总线保持请求;(3)若CPU允许让出总线,则发回一个总线保持允许信号;(4)DMA控制器接到此信号后,就将其内部地址寄存器的内容送到地址总线上;(5)同时,DMA控制器往接口发一个DMA回答信号,并发出一个内存读信号和一个I/O写信号;(6)接口收到DMA回答信号后,撤除DMA请求信号,且内存把数据送到数据总线上;(7)接口锁存数据总线上的数据后,一般往DMA控制器回送一个准备好信号;(8)DMA控制器的地址寄存器内容加1或减1,字节计数器的值减1;(9)DMA控制器撤除总线保持请求信号,CPU收回总线控制权。

这样,就完成了对一个数据的DMA输出过程。

外设往内存传输单个数据的过程:(1)当一个接口中有数据要输入时,就往DMA控制器发一个DMA 请求信号;(2)DMA控制器接到DMA请求后,(若屏蔽触发器是开放的)便往控制总线上发一个总线保持请求信号;(3)若CPU允许让出总线,则发回一个总线保持允许信号;(4)DMA控制器接到此信号后,就将其内部地址寄存器的内容送到地址总线上;(5)同时,DMA控制器往接口发一个DMA回答信号,并发一个I /O读信号和一个内存写信号;(6)接口收到DMA回答信号后,撤除DMA请求信号,并将数据送到数据总线上;(7)内存在收到数据后,一般往DMA控制器回送一个准备好信号;(8)DMA控制器的地址寄存器内容加1或减1,字节计数器的值减1;(9)DMA控制器撤除总线保持请求信号,CPU收回总线控制权。

这样,就完成了对一个数据的DMA输入过程。

2.为使DMA控制器正常工作,系统对DMA控制器进行初始化的过程分为哪两个主要方面?答:(1) 将数据传输缓冲区的起始地址或结束地址送到地址寄存器中;(2) 将传输的字节数或字数送到计数器中。

DMA控制器8237

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 内部结构及引脚_微型计算机原理及应用教程(第2版)_[共9页]

8237 内部结构及引脚_微型计算机原理及应用教程(第2版)_[共9页]

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 设备进行读/写。

(精)第8章 可编程DMA控制器8237A

(精)第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

第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控制器中和某个接口有联 系的部分称为一个通道

8237 DMA控制器应用实验报告

8237 DMA控制器应用实验报告

8237 DMA控制器应用实验报告8237 DMA控制器是一种高速数据传输设备,与CPU配合使用以提高数据传输速率。

本次实验通过使用8237 DMA控制器实现内存数据块的复制和存储器到端口的数据传输,并进行实验验证。

一、实验原理8237 DMA控制器是直接存储器访问(Direct Memory Access,DMA)设备,它可以和CPU配合进行高速数据传输。

该控制器有四个可编程的数据传输通道,每个通道支持16位数据传输和多种传输模式。

通过编程控制这些传输通道,可以实现内存与内存之间的数据传输、I/O端口与内存之间的数据传输、以及内存数据扫描等。

本实验的主要实现方式是将一段数据从一个位置复制到另一个位置,需要编程设置DMA通道进行数据传输。

DMA控制器一般由可编程控制器芯片(Programmable Controller Chip,PCC)或其他控制器来控制,由此进行数据传输。

本次实验采用的控制器是Intel 8237 DMA控制器,其主要工作原理如下:1. DMA传输通道DMA控制器具有四个DMA传输通道,分别为通道0~3,每个通道可以控制一个数据传输操作,同时传输方式也可以编程进行设置。

2. 传输方式传输方式共有七种,分别为“写0”、“写1”、“读0”、“读1”、“自动初始化”、“关闭通道”和“请求(READY)”,不同的传输方式下,数据通道的行为也不同。

传输方式设置需要使用以下三种方式之一:(1)控制寄存器1(CR1):其中的每一位都对应着一个数据通道的传输方式。

(2)命令寄存器(Command Register):命令字中包含了传输方式、传输方向、操作的对象等详细信息,以指令的方式完成数据传输。

(3)模式寄存器(Mode Register):用于设置DMA传输模式。

模式寄存器用于将控制字编码为相应的传输方式和条件,包括数据传输的类型、传输方向和自动初始化方式4. 基地址寄存器和计数器寄存器基地址寄存器(Base Address Register)和计数器寄存器(Count Register)分别保存DMA数据传输的起始地址和传输的数据量。

8237芯片

8237芯片

使用8237A可编程DMA控制器实验目的1、掌握8237A可编程DMA控制器和微机的接口方法。

2、学习使用8237A可编程控制器,实现数据直接快速传送的编程方法。

8237 DMA控制器实验内容1、实验内容实验原理图如图5-26(见下页)所示,本实验学习使用8237A可编程DMA控制器进行RAM 到RAM的数据传送方法。

实验中规定通道0为源地址,通道1为目的地址,通过设置0通道的请求寄存器产生软件请求,8237A响应这个软件请求后发出总线请求信号HRQ,图中8237HRQ直接连到8237A的HLDA上,相当于HRQ作为8237A的总线响应信号,进入DMA操作周期。

在8237A进行DMA传送时,当字节计数器减为0时,8237A的/EOP 引脚输出一个负脉冲,表示传送结束。

/EOP可以作为系统的外部中断信号,通过8259A 控制器使CPU 判断DMA 传递是否结束。

本实验中未用/EOP信号。

图中RAM 6264的地址为8000~9FFF,实验要求将RAM 6264中地址为8000~ 83FFH的1KB 数据传送到地址为9000H~93FFH的区域中去。

为了验证传送的正确性,你可在源地址(8000H~83FFH)区首末几个单元填充标志字节,传送完再检查目的地址区的相应单元的标志字节是否与填入的一样。

2、实验步骤(1)、将DMA扩展实验板按信号线的对应关系插入DVCC-8086H的Z5插座。

(2)、将DMA扩展实验板上的8237CS信号插孔和DVCC?8086H 的译码输出插孔00H -01FH相连。

(3)、打开DVCC-8086H电源,DVCC-8086H系统显示"DVCC -86H"。

(4)、运行实验程序在系统显示"DVCC-86H"状态下,按任意键,系统显示命令提示符"-" 。

按GO键,显示器显示"1000 XX"。

输入F000 :B8C0 。

DMA-控制器

DMA-控制器
× 若D×3=若1D×0=若1D0=0
20
(2)状态寄存器
可由CPU读取 低4位反映读命令这个瞬间每个通道是否产
生TC(为1,表示该通道传送结束) 高4位反映每个通道的DMA请求情况(为1,
表示该通道有请求) 状态位在复位或被读出后,均被清零。
21
状态寄存器
D7
D6
D5
D4
D3
D2
D1
D0
DREQ AEN输出高电平,表示DMA传送 HRQ S2状态——输出16位RAM地址和发DACK HLDA 信号寻址I/O设备 AEN DMA读:MEMR* DMA写:IOR*
ADSTB S3状态——送出写操作所需的控制信号
DB0~DB7DMA读:IOW* DMA写:MEMW* A0~A7 Sw状态——检测数据传送是否能够完成, DACK 决定是否插入等待状态Sw
微型计算机接口技术
DMA控制器
DMA控制器有二种不同的作用:
总线从模块:CPU对DMAC进行预置操作,也就是向DMAC写入
内存传送区的首地址、传送字节数和控制字时,DMAC相当于一个 外设接口,称为总线从模块或受控器。
总线主模块:进行DMA传输时,CPU暂停对系统总线的控制,
DMAC取得了对总线的控制权,这时的DMAC称为总线主模块或主 控器。
进入有效周期 9
1.2 8237A的工作时序·有效周期
8237A采样到外设有DMA请求,就脱离空闲 周期进入有效周期。
8237A作为系统的主控芯片,控制DMA传送 操作。
DMA传送借用系统总线完成,其控制信号以 及工作时序类似CPU总线周期。
进入DMA传送时序
10
CLK S1S状i 态Si—S—0 输S0出S116位S2存S储3 器S4地S址2 S3 S4 Si Si

可编程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
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的初始化编程

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
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图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为有效, 再进行下一个字节的传送。
③ 请求传送方式。这种传送方式类似于数据块传送方式, 所不同之处在于每传送一个字节之后,8237都将采样检测DREQ 信号是否有效。 若DREQ变为无效状态则放弃传输,一直到 DREQ变为有效后又可开始从放弃的那一点开始DMA传输。当由 于外设提供的DREQ信号变为无效而放弃DMA传送时, 8237释 放总线,CPU可以接着操作。在此种方式下,因为DMA放弃传 送时,8237的工作现场的地址及字节数计数值会保存在当前地址 寄存器及当前字节数寄存器中。这样,当进行DMA的外部设备
请求传送方式
在请求传送方式下8237A被编程为连续传送,直至遇 到T/C或外部来的EOP 为止,或者直到DREQ不再有效为 止。
级联方式
多个8237A进行级联时,将其中一个DMAC作为主片, 其他作为从片。
8237A初始化编程
设置方式寄存器
PC机BIOS在初始化时,将方式寄存器初始化为单字 节传送方式、地址递增、通道0为读传送、自动预置 (方式字为58H)、通道1、2、3为校验传送、禁止 自动预置,其方式字为41H、42H、43H。
可编程DMA控制器8237A
1、利用DMA方式传送数据时,数据的传送 过程完全由硬件控制,这种电路称为DMA 控制器(DMAC)。 2、需要数据传送时,DMAC向CPU提出申请, CPU让出总线控制权,由DMAC直接控制地 址总线、数据总线和控制总线,让存储器 与高速的外部设备直接交换数据,CPU不 再干预,这样大大减少了中间过程,提高 了数据传送速度。
清除屏蔽寄存器
屏蔽寄存器是一个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
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
N
SW等 待 状 态
传送 方式
图 7.5.7 8237A状态 变化流程图
请求
单次
数据 块
7.5.3 内部寄存器的功能及端口寻址 8237A-5DMA芯片有16个端口地址(以地址符DMA+0、 +1、
+2、……+0AH+……+0FH表示)代表了8种寄存器以可编程方法实现
四个通道的DMA传输。 其寄存器种类功用及端口地址分别说明 如下:
请求 应答 状态
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
图 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 (无 效 电 平 ) (无 效 电 平 ) 有效 数据 来自 存储 器 (有 效 电 平 ) ·非总 线信 号 有效 存储 器地 址
图 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 A2 A1 A0
器的寻址是由最低4位地址A3~A0 以及读写命令来区分的。 这
两类寄存器共占用16个端口,记作DMA+00H~DMA+0FH地址,
可供CPU访问。
5. 数据及地址缓冲器组 缓冲器组包含以下 3 部分: (1) A3~A0:最低4位地址线,是三态双向信号端。在芯片空
闲周期(非DMA工作周期),CPU对芯片输出的低4位地址线。
8237A的先/后触发器
此触发器保证16位寄存器的读写操作,以先低字节 后高字节的顺序操作。
8237A的工作方式
单字节传送方式
DMA传送时,仅传送一个字节。
块传送方式
块传送方式由一个DMA请求启动传送整个一个数据块, 在整个数据传送期间,系统总线一直被DMAC所控制, 每传送一个数据,计数寄存器的值减1。
8237A的结构和功能 引脚信号
内部结构
8237A有4个独立的DMA通道,24个内部寄存器。
内部寄存器
• 基址寄存器和当前地址寄存器 • 基字节计数寄存器和当前字节计数寄存器 • 暂时地址寄存器 • 状态寄存器 • 命令寄存器 • 暂存寄存器 • 方式寄存器 • 屏蔽寄存器 • 请求寄存器
② 数据块传送方式。在这种方式下,一旦8237控制总线就 将始终占用总线,连续地传送字节数据直到字节数寄存器减到
零再减至0FFFFH时产生EOP信号为止。若需提前结束DMA传送
也可由外部输入低电平有效的EOP信号来强迫终止DMA传送,
总线控制才交还给CPU。这种方式最大能传送64 KB的数据块,
而且送DREQ只需维持到DACK有效,在传送期间就不再检测 DREQ引脚信号。当数据块传送结束,则终止操作或者是重新初 始化。
1. 8237内部寄存器的功用
(1) 地址寄存器(DMA+0、 +2、 +4、 +6)。 每个通道各有一
对16位的基地址寄存器和当前地址寄存器。在对芯片初始化编
程时,由CPU同时写入相同的16位地址。若地址任意(字节边界), 则可寻址64 KB, 否则以偶地址(字边界)可寻址12不能被读出。 每个通道有一个16位的当前地址寄存器,它保存着在DMA 传输地址值。每次传送后,地址自动加1或减1(取决于方式字寄 存器D5 位),且随时可被CPU读出。若通道选择为自动预置操作
图 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信号,才停止传送,
相关文档
最新文档