1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,主要内容,DMA,控制器概要,DMA,控制器,8237,的原理,8237A,的工作方式和寄存器,9.1,9.2,9.3,1,8237A,各寄存器对应的端口地址,9.4,8237A,的编程和应用,9.5,DMA,传输的特点,9.0,DMA,DMA(Direct Memory Access),:让存储器与高速外设直接进行数据交换而无需,CPU,的干预,。,特点,DMA,传送期间,,DMA,控制器,(DMAC),接管了,CPU,对总线的控制权。,DMA,方式中,内存地址的修改、传送结束的判断都由硬件电路实现。即
2、用,硬件控制,代替了软件控制。,DMA,控制器,是实现,DMA,传送的核心器件。,2,9.0 DMA,传送的特点,应用场合,DMA,方式主要用于高速大批量传输数据的场合。如:,硬盘和软盘外设;,快速通信通道,;,多处理机和多程序数据块传送;,图像处理中向,CRC,屏幕传送数据;,快速数据采集,;,DRAM,的刷新操作,。,3,9.0 DMA,传送的特点,4,9.1 DMA,控制器概要,DMA,的传送过程分,5,个阶段:,1.,初始化阶段,5,要传送的数据字节数,数据在存储器中的起始地址,传送方向,DMAC,的通道号,DMAC,9.1 DMA,控制器概要,2.,申请阶段,当外设有,DMA,需求
3、并且已准备就绪,则向,DMA,控制器发出,DMA,请求信号,DREQ,。,DMA,控制器接收到,DMA,请求信号后,向,CPU,发出总线请求信号,HRQ,。该信号连接到,CPU,的,HOLD,信号。,6,CPU,DMAC,外部设备,DREQ,HRQ,9.1 DMA,控制器概要,3.,响应阶段,CPU,收到,DMA,的,HRQ,请求后,若允许,DMA,传输,则在当前总线周期结束后,释放总线控制权,并向,DMAC,发,HLDA,信号,通知其,CPU,已交出总线。,7,CPU,检测,HRQ,HRQ,有效且,LOCK,无效,CPU,交出总线,CPU,向,DMAC,发,HLDA,Y,N,DMAC,成为
4、总线主控者,9.1 DMA,控制器概要,4.,数据传送阶段,DMA,控制器获得总线的控制权,向外设发送应答信号,DACK,,通知外设可以进行,DMA,传输了。,DMA,控制器送出地址信号和控制信号,实现外设与内存的数据传输。,8,外部设备,DMAC,存储器,DACK,地址信号,读写信号,9.1 DMA,控制器概要,5.,传送结束阶段,DMAC,向外设发送,EOP,信号,外设撤销,DREQ,请求,同时,HRQ,和,HLDA,信号变为无效,,DMAC,释放总线,,CPU,重获总线控制权。,9,CPU,重获总线控制权,DMAC,向外设发,EOP,信号,外设撤消,DREQ,信号,HRQ,和,HLDA,
5、变为无效,DMAC,交出总线控制权,9.1 DMA,控制器概要,DMA,控制器,8237A-5,的基本特点,8237A-5,是一个高性能通用,可编程,DMAC,。,具有,4,个独立的通道,通过级联方式进行扩充。最多可扩展,4,个从片,即,16,个,DMA,通道。每个通道可传输的最大数据块均为,64KB,。,可实现内存到外设、外设到内存以及内存到内存之间的高速数据传输,最高数据传输速率可达,1.6MB/s,。,具有多种控制方式和操作类型。,10,9.2 DMA,控制器,8237A,的原理,11,9.2 DMA,控制器,8237A,的原理,DMA,控制器的,2,种状态,主动工作态:主模块,在主动工
6、作状态下,,DMAC,取代处理器,CPU,,获得了对系统,总线的控制权,,成为系统总线的主控者,向存储器和外设,发号施令,。,被动工作态:从模块,在被动工作状态下,,DMAC,接受,CPU,对它的控制和指挥。例如:对,DMAC,进行初始化编程以及从,DMAC,读取状态等。,1.8237A,的编程结构,8237A-5,外部特性,概况,40,引脚双列直插封装。,引脚说明,12,9.2 DMA,控制器,8237A,的原理,8237A,内部结构,4,个,DMA,通道和一个公共控制部分。,每个,DMA,通道包括:,基本地址寄存器、当前地址寄存器,基字节寄存器、当前字节计数器,公共控制部分:,工作方式寄存
7、器、命令寄存器、状态寄存器,请求寄存器、屏蔽寄存器、暂存寄存器,13,9.2 DMA,控制器,8237A,的原理,14,9.2 DMA,控制器,8237A,的原理,图,9.1 8237A,的编程结构和外部连接,(,1,),请求与应答信号,DREQ,3,DREQ,0,:,DMA,通道请求输入信号(由外设提供),。有效电平可高可低,由程序选定。,优先级:,DREQ,0,最高,,DREQ,3,最低。,DACK,3,DACK,0,:,DMA,响应输出信号(外接外设)。有效,电平可高可低,由程序选定。,8237A,在同一个时间,只能有一个,DACK,应答信号有效。,HRQ,:,8237A-5,向,CPU
8、发出的总线请求信号,高电平有效。,HLDA,:,CPU,发给,8237A-5,的总线请求响应信号。高电平有效。有效时表示,CPU,已让出总线。,15,外部设备,DMAC,DREQ,CPU,HRQ,HLDA,DACK,9.2 DMA,控制器,8237A,的原理,2.8237A,的外部信号,(,2,)地址信号线,A,3,A,0,:地址线,双向三态。,被动状态下,为输入,作为,CPU,对,8237A,内部的,16,个寄存器与计数器寻址之用。,主动状态下,为输出,作为,20,位存储器地址的最低,4,位。,A,7,A,4,:地址线,单向。,主动状态下,为输出。作为访问,20,位存储器地址低,8,位中的
9、高,4,位。,16,9.2 DMA,控制器,8237A,的原理,2.8237A,的外部信号,(,3,)数据信号,DB,7,DB,0,:地址数据复用线,双向三态。,被动状态下,为双向数据线。用于,CPU,对,8237A,进行初始化,或,DMA,传输结束后传送状态。,主动状态下,,分时复用,作为访问存储器的高,8,位地址线和数据线。在存储器到存储器传送方式中,作为数据的输入输出端。,17,9.2 DMA,控制器,8237A,的原理,2.8237A,的外部信号,(,4,)控制信号,CS,:片选信号,低有效。被动状态下用于,CPU,对,8237,的寻址。,CLK,:控制芯片内部操作和数据传输。,RES
10、ET,:输入信号,复位,8237A,。,IOR/IOW,:读写控制信号。,被动状态下,为输入,。用于,CPU,向,DMAC,写命令或初始化参数,或,CPU,读取,8237A,内部寄存器状态。,主动状态下,为输出,。对外设进行读写。,MEMR/MEMW,:存储器读,/,写信号,单向输出。当,8237A,为主动,工作状态时,对存储器进行读写。,18,9.2 DMA,控制器,8237A,的原理,2.8237A,的外部信号,ADSTB,:地址选通信号。此信号有效时,,DMA,控制器的当前地址寄存器中的高,8,位地址通过,DB,0,DB,7,送到外部锁存器。,AEN,:地址允许。使地址锁存器中的高,8,
11、位地址送地址总线。,READY,:准备就绪信号。低电平时,,8237A,处于等待状态,高电平表示外设或存储器准备就绪。,EOP,:,DMA,传输过程结束信号。,DMA,传送过程结束,则从,EOP,输出一个低有效脉冲。若从,EOP,输入低脉冲信号,则表明外部强制结束,DMA,传送。,19,9.2 DMA,控制器,8237A,的原理,(,4,)控制信号,DMA,的传送类型,数据传送,:把源地址的数据传送到目的地址去。,DMA,读:把数据由存储器传送到外设。,DMA,写:把外设输入的数据写入存储器。,存储器与存储器之间的传递。,读,/,写操作均是针对存储器而言。,数据校验,:对数据块内的每个字节进行
12、校验。,数据检索,:在指定的内存区域内查找某个关键字节或某几个关键数据位是否存在,如果查到了,就停止检索。,9.3 8237A,的工作方式和方式寄存器,单字节传送方式,每次传送一个字节,然后释放总线控制权,。传送下一个字节时,重新申请使用总线。,特点,CPU,在每个,DMA,周期结束后立即控制总线。对系统影响不大。,CPU,和,DMAC,轮流控制系统总线,传输效率低。,21,9.3 8237A,的工作方式和方式寄存器,允许,DMA,DMAC,发总线请求,CPU,响应,DMA,放弃总线,DMAC,控制,传一个字节,放弃总线中断请求,N,DMA,放,弃,总,线,N,Y,Y,DMA,请求?,块结束否
13、1.8237A,的工作方式和方式寄存器,8237A,的四种工作方式,数据块传送方式,只要,DMA,一启动,,DMAC,始终占用总线,,直到数据传送结束,或外部强制停止,才交出总线控制权。,特点,效率高。,DMA,传输期间,CPU,长时间不能控制总线。若一次传输的数据较多,对系统会有一定响应。,22,Y,N,DMAC,控制传一个字节,放弃总线中断请求,CPU,响应,DMA,放弃总线,DMAC,发总线请求,允许,DMA,DMA,请求?,块结束?,8237A,的四种工作方式,9.3 8237A,的工作方式和方式寄存器,1.8237A,的工作方式和方式寄存器,请求传送方式,当,8237A,检测到,
14、DREQ,请求时就传输一字节,当,DREQ,无效,或操作结束,或由外部送来结束信号,EOP,,,DMAC,都会释放总线,把总线控制权交还,CPU,。,具体实现:每传完一个字节,,DMAC,都会检测外设的,DREQ,请求。,若,DREQ,无效,则马上停止,DMA,传输,,将总线控制权交给,CPU,。,特点,实现灵活,,DMA,操作可由外设用,DREQ,信号控制发送过程。,23,8237A,的四种工作方式,9.3 8237A,的工作方式和方式寄存器,1.8237A,的工作方式和方式寄存器,24,允许,DMA,DMAC,发出总线请求,CPU,响应,DMA,放弃总线,DMAC,控制传一个字节,放弃总线
15、中断请求,Y,Y,放弃总线,N,N,Y,DMA,请求?,块结束?,DMA,请求?,N,级联传送方式,将多个,DMAC,连在一起,一个为主,其余为从。从片收到外设的,DMA,请求后,不是向,CPU,申请总线,而是向主片申请,再由主片向,CPU,申请。,25,8237A,的四种工作方式,9.3 8237A,的工作方式和方式寄存器,1.8237A,的工作方式和方式寄存器,26,8237A,的方式寄存器,9.3 8237A,的工作方式和方式寄存器,1.8237A,的工作方式和方式寄存器,例:,PC,系列软盘读写操作选择,DMA,通道,2,,单字节传送,地址增,1,,不用自动预置,其写、读、校验操作的方
16、式字分别如下:,写操作:,01000110=46H,。,读操作:,01001010=4AH,。,校验操作:,01000010=42H,。,9.3 8237A,的工作方式和方式寄存器,1.8237A,的工作方式和方式寄存器,9.3 8237A,的工作方式和方式寄存器,2.8237A,的控制寄存器和有关问题,(,1,),8237A,命令寄存器(只写),D,7,、,D,6,:决定,DREQ,和,DACK,的有效电平。,D,5,:扩展写和不扩展写,D,5,=1,:扩展写信号,表示写脉冲加宽。,D,5,=0,:不扩展写信号,表示正常时序。,D,4,:控制通道的优先权,D,4,=0,:采用固定优先级,,D
17、REQ,0,最高,,DREQ,3,最低。,D,4,=1,:采用循环优先级。已服务过的通道优先权变为最低,其下一个通道优先权变为最高。,29,9.3 8237A,的工作方式和方式寄存器,2.8237A,的控制寄存器和有关问题,(,1,),8237A,命令寄存器(只写),30,9.3 8237A,的工作方式和方式寄存器,2.8237A,的控制寄存器和有关问题,(,1,),8237A,命令寄存器(只写),D,3,:时序类型,D,3,=0,:,普通时序,,每传输一个字节需要,3,个时钟周期。,D,3,=1,:,压缩时序,,每传输一个字节需要,2,个时钟周期。,D,2,:启动和停止,8237A,的工作。
18、D,2,=0,:启动;,D,2,=1,:停止。,该位影响所有的通道,D,1,:通道,0,地址保持。用于内存到内存的传输。,D,1,=0,:不保持。,D,1,=1,:保持。,配合,D,0,位使用。,D0,:允许和禁止,内存到内存,传输。,D,0,=1,:允许。,D,0,=0,:禁止。,在实现内存到内存的传输时,需把,源数据先送到,8237,的,暂存器,中,然后再送到,目的区,。这时,用,通道,0,的地址寄存器,存放源地址,,用,通道,1,的地址寄存器和字节计数器存放,目的地址和计数值,。传输时,目的地址寄存器的值正常加,1,或减,1,,但,源地址,寄存器的值可通过设置,D,1,=1,而,保持不
19、变,,这样可使,同一数据传输到,整个选定的内存区域。,31,9.3 8237A,的工作方式和方式寄存器,2.8237A,的控制寄存器和有关问题,(,1,),8237A,命令寄存器(只写),【,例,】PC,微机中的,8237A-5,,按如下要求工作:禁止存储器到存储器传送,正常时序,滞后写入,固定优先级,允许,8237A-5,工作,,DREQ,信号高电平有效,,DACK,信号低电平有效。已知写命令寄存器对应的地址为,08H,,请给出写命令的程序段。,命令字为,00000000H,写命令字代码段:,MOV AL,00H,OUT 08H,AL,32,9.3 8237A,的工作方式和方式寄存器,2.8
20、237A,的控制寄存器和有关问题,低,4,位表示哪些,DMA,通道,传送结束,。,高,4,位表示哪些通道有,DMA,请求,还未处理,。,状态位在复位或被读出后,均被清零。,33,9.3 8237A,的工作方式和方式寄存器,3.8237A,的状态寄存器的格式,(,1,)请求标志和请求寄存器(只写),一般,DMA,请求由,硬件,发出,通过,DREQ,引脚引入,DMA,请求。但也可通过软件来发出,DMA,请求。,若是,内存到内存,传输,则必须由软件请求启动通道,0,。,仅适用于块传输方式,传送结束信号,EOP,自动清除,请求位。,34,9.3 8237A,的工作方式和方式寄存器,4.8237A,的请
21、求标志、屏蔽标志和复位命令,(,2,)屏蔽寄存器(只写),用来禁止或允许通道的,DMA,请求。各通道相互独立。复位使,4,个通道全被,屏蔽,。有以下两种形式:,单通道,屏蔽寄存器:每次只能屏蔽一个通道。,35,9.3 8237A,的工作方式和方式寄存器,4.8237A,的请求标志、屏蔽标志和复位命令,四通道,屏蔽寄存器:可同时屏蔽,4,个通道。,低,4,位全部置,1,,则,屏蔽,所有的,DMA,请求。,低,4,位全部置,0,,则,允许,所有的,DMA,请求。,36,9.3 8237A,的工作方式和方式寄存器,4.8237A,的请求标志、屏蔽标志和复位命令,(,2,)屏蔽标志和屏蔽寄存器,【,例
22、为了在每次软盘读,/,写操作时,进行,DMA,初始化都必须开放通道,2,,以便响应软盘的,DMA,请求,可采用下述两种方法之一来实现。(已知屏蔽单通道屏蔽寄存器和,4,通道屏蔽寄存器对应的地址分别为,0AH,和,0FH,),使用单通道屏蔽寄存器,MOV AL,00000,0,10,;最低,3,位,=010,,开放通道,2,OUT 0AH,AL,;写单个通道屏蔽寄存器,使用,4,通道屏蔽寄存器,MOV AL,0000,1,0,11,B,;最低,4,位为,1011,,开放通道,2,OUT 0FH,AL,;写四通道屏蔽寄存器,37,9.3 8237A,的工作方式和方式寄存器,4.8237A,的
23、请求标志、屏蔽标志和复位命令,38,9.3 8237A,的工作方式和方式寄存器,4.8237A,的请求标志、屏蔽标志和复位命令,(,3,)总清命令,与硬件的,Reset,信号功能相同。,使得,DMA,控制器内部的命令寄存器、状态寄存器、请求寄存器、暂存寄存器、字节指针都清,0,。,使得,屏蔽寄存器,全置,1,,禁止所有的,DMA,请求。,MOV AL,00H,;,AL,为任意值,OUT,0DH,AL,;写入对应的端口,39,9.4 8237A,各寄存器对应的端口地址,8237A DMA,控制器进行读、写操作共有,16,个端口,使用地址线,A,3,A,0,进行寻址,分别记作,DMA+n,。,占用
24、的,I/O,地址为,00H0FH,。其地址分配情况如下。,端口,通道,I/O,端口地址,寄存器,读,(IOR),写,(IOW),DMA+0,0,00H,当前地址寄存器,基地址与当前地址寄存器,DMA+1,0,01H,当前字节计数寄存器,基字节计数与当前字节计数寄存器,DMA+2,1,02H,当前地址寄存器,基地址与当前地址寄存器,DMA+3,1,03H,当前字节计数寄存器,基字节计数与当前字节计数寄存器,DMA+4,2,04H,当前地址寄存器,基地址与当前地址寄存器,DMA+5,2,05H,当前字节计数寄存器,基字节计数与当前字节计数寄存器,DMA+6,3,06H,当前地址寄存器,基地址与当前
25、地址寄存器,DMA+7,3,07H,当前字节计数寄存器,基字节计数与当前字节计数寄存器,40,端口,通道,I/O,口地址,寄存器,读,(IOR),写,(IOW),DMA+8,公,用,08H,状态寄存器,写命令寄存器,DMA+9,09H,写请求寄存器,DMA+10,0AH,写单个通道屏蔽寄存器,DMA+11,0BH,写工作方式寄存器,DMA+12,0CH,清除字节指针*,DMA+13,0DH,暂存寄存器,写总清命令*,DMA+14,0EH,写清四个通道屏蔽寄存器*,DMA+15,0FH,写四个通道屏蔽寄存器,*,为软命令。,9.4 8237A,各寄存器对应的端口地址,DMA,系统的初始化,HLD
26、A,无效时可以对,8237A,进行初始化编程。初始化需做的工作有:,写命令字,禁止,8237A,工作,或对相应通道进行屏蔽。,执行总清命令进行复位。,写方式寄存器。,设置基地址、基字节和页面地址寄存器的内容。,清除屏蔽允许,DMA,请求,准备传输数据,。,41,9.5 8237A,的编程和应用,42,9.5 8237A,的编程和应用,【,例,】,在系统中,,8237A,的通道,0,做对动态,RAM,的刷新,通道,1,提供网络通信功能,采用固定优先级,为防止数据丢失,动态,RAM,刷新操作对应的优先级最高。,已知:,8237A,端口地址为,0000000FH,,,DMA,代表首地址,0000H,
27、8237A,的地址寄存器只有,16,位,为使用,CPU,的寻址范围,外加页面寄存器。实模式下有,20,位地址,最高,4,位地址,A19A16,放在页面寄存器,其端口地址为,0083H,。,通道,0,初始化程序如下:,43,9.5 8237A,的编程和应用,通道,0,初始化程序如下:,MOVAL,04,MOVDX,DMA+8,OUTDX,AL;,停止,8237A,工作,MOVAL,00,MOVDX,DMA+0DH,OUTDX,AL;8237A,复位,MOVDX,DMA+1,MOVCX,0004,WRITE:MOVAL,0FFH,OUTDX,AL,OUTDX,AL;16,位计数值,FFFFH,
28、写入,0,通道计数器,INCDX,INCDX,LOOPWRITE;FFFFH,写入,4,个通道计数器,44,9.5 8237A,的编程和应用,通道,0,初始化程序如下:,MOVDX,DMA+0BH,MOVAL,58H;,单字节、地址加,1,、自动初始化、读,OUTDX,AL;,通道,0,方式选择,MOVAL,00,MOVDX,DMA+08H,OUTDX,AL;,设置,8237A,控制字,MOVDX,DMA+0AH,OUTDX,AL;,写单屏蔽寄存器,45,NETTRA:,MOVDX,,,DMA+0CH,MOVAL,,,00,OUTDX,,,AL,MOVDX,,,DMA+09H,OUTDX,,,
29、AL,MOVAX,,,01,ORAX,,,SI,MOVDX,,,DMA+0BH,OUTDX,,,AL,MOVAX,,,ES,MOVCL,,,04,ROLAX,,,CL,MOVCH,,,AL,ANDAL,,,0F0H,ADDAX,,,BX,JNCABC,INCCH,利用通道,1,进行网络通信的传输程序,ABC:,MOVDX,,,DMA+2,OUTDX,,,AL,MOVAL,,,AH,OUTDX,,,AL,MOVAL,,,CH,ANDAL,,,0FH,MOVDX,,,DMA+0083H,OUTDX,,,AL,MOVAX,,,DI,DECAX,MOVDX,,,DMA+3,OUTDX,,,AL,MOVAL,,,AH,OUTDX,,,AL,MOVDX,,,DMA+0AH,46,MOVAL,,,01,OUTDX,,,AL,MOVDX,,,DMA+8,MOVAL,,,60H,OUTDX,,,AL,MOVDX,,,DMA+8,WAIT:,INAL,,,DX,ANDAL,,,02H,JZWAIT,利用通道,1,进行网络通信的传输程序,更换老师说明,再见!,谢谢!,47,
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818