
控制器的编程结构及编程.ppt
48页微型机原理与技术微型机原理与技术CH9 DMADMA控制器的编控制器的编程结构及编程程结构及编程1主要内容DMA 控制器概要控制器概要DMA 控制器控制器8237的原理的原理8237A的工作方式和寄存器的工作方式和寄存器9.19.29.38237A各寄存器对应的端口地址各寄存器对应的端口地址9.48237A的编程和应用的编程和应用9.5DMA 传输的特点传输的特点9.02lDMAnDMA (Direct Memory Access):让存储器与高速外设直接进行数据交换而无需CPU的干预l特点nDMA传送期间,DMA控制器(DMAC)接管了CPU对总线的控制权nDMA方式中,内存地址的修改、传送结束的判断都由硬件电路实现即:用硬件控制硬件控制代替了软件控制nDMA控制器控制器是实现DMA传送的核心器件9.0 DMA传送的特点传送的特点3l应用场合nDMA方式主要用于高速大批量传输数据的场合如:ü硬盘和软盘外设;ü快速通信通道快速通信通道;ü多处理机和多程序数据块传送;ü图像处理中向CRC屏幕传送数据;ü快速数据采集快速数据采集;;üDRAM的刷新操作的刷新操作9.0 DMA传送的特点传送的特点49.1 DMA控制器概要控制器概要5lDMA的传送过程分5个阶段:1. 1. 初始化阶段初始化阶段► 要传送的数据字节数 ► 数据在存储器中的起始地址 ► 传送方向 ► DMAC的通道号 …… DMAC 9.1 DMA控制器概要控制器概要62. 2. 申请阶段申请阶段►当外设有DMA需求,并且已准备就绪,则向DMA控制器发出DMA请求信号DREQ。
►DMA控制器接收到DMA请求信号后,向CPU发出总线请求信号HRQ该信号连接到CPU的HOLD信号 CPU DMAC 外部设备外部设备DREQHRQ9.1 DMA控制器概要控制器概要73. 3. 响应阶段响应阶段►CPU收到DMA的HRQ请求后,若允许DMA传输,则在当前总线周期结束后,释放总线控制权,并向DMAC发HLDA信号,通知其CPU已交出总线CPU检测HRQHRQ有效且LOCK无效CPU交出总线CPU向DMAC发HLDAYNDMAC成为总线主控者成为总线主控者 9.1 DMA控制器概要控制器概要84. 4. 数据传送阶段数据传送阶段►DMA控制器获得总线的控制权,向外设发送应答信号DACK,通知外设可以进行DMA传输了►DMA控制器送出地址信号和控制信号,实现外设与内存的数据传输 外部设备 DMAC 存储器 DACK地址信号读写信号9.1 DMA控制器概要控制器概要95. 5. 传送结束阶段传送结束阶段►DMAC向外设发送EOP信号,外设撤销DREQ请求,同时HRQ和HLDA信号 变 为 无 效 ,DMAC释放总线,CPU重获总线控制权CPU重获总线控制权重获总线控制权DMAC向外设发EOP信号外设撤消DREQ信号HRQ和HLDA变为无效DMAC交出总线控制权9.1 DMA控制器概要控制器概要10lDMA控制器8237A-5 的基本特点n8237A-5是一个高性能通用可编程可编程DMAC。
n具有4个独立的通道,通过级联方式进行扩充最多可扩展4个从片,即16个DMA通道每个通道可传输的最大数据块均为64KBn可实现内存到外设、外设到内存以及内存到内存之间的高速数据传输,最高数据传输速率可达1.6MB/sn具有多种控制方式和操作类型119.2 DMA控制器控制器8237A的原理的原理119.2 DMA控制器控制器8237A的原理的原理lDMA控制器的2种状态n主动工作态:主模块 在主动工作状态下,DMAC取代处理器CPU,获得了对系统总线的控制权总线的控制权,成为系统总线的主控者,向存储器和外设发号施令发号施令n被动工作态:从模块 在被动工作状态下,DMAC接受CPU对它的控制和指挥例如:对DMAC进行初始化编程以及从DMAC读取状态等1. 8237A的编程结构12l8237A-5外部特性n概况 40引脚双列直插封装n引脚说明139.2 DMA控制器控制器8237A的原理的原理13l8237A内部结构n4个DMA通道和一个公共控制部分n每个DMA通道包括:ü基本地址寄存器、当前地址寄存器ü基字节寄存器、当前字节计数器n公共控制部分:ü工作方式寄存器、命令寄存器、状态寄存器ü请求寄存器、屏蔽寄存器、暂存寄存器149.2 DMA控制器控制器8237A的原理的原理14159.2 DMA控制器控制器8237A的原理的原理图图9 9. .1 1 8 82 23 37 7A A的的编编程程结结构构和和外外部部连连接接15((1)) 请求与应答信号请求与应答信号üDREQ3 ~ DREQ0:DMA通道请求输入信号(由外设提供)。
有效电平可高可低,由程序选定 优先级:DREQ0最高, DREQ3最低üDACK3 ~ DACK0:DMA响应输出信号(外接外设)有效电平可高可低,由程序选定 8237A在同一个时间,只能有一个DACK应答信号有效üHRQ:8237A-5向CPU发出的总线请求信号,高电平有效üHLDA:CPU发给8237A-5的总线请求响应信号高电平有效有效时表示CPU已让出总线16 外部设备外部设备 DMAC DREQ CPU HRQHLDADACK9.2 DMA控制器控制器8237A的原理的原理2. 8237A的外部信号的外部信号16 ((2)地址信号线)地址信号线üA3 ~ A0:地址线,双向三态l 被动状态下,为输入,作为CPU对8237A内部的16个寄存器与计数器寻址之用l 主动状态下,为输出,作为20位存储器地址的最低4位üA7 ~ A4:地址线,单向l 主动状态下,为输出作为访问20位存储器地址低8位中的高4位179.2 DMA控制器控制器8237A的原理的原理2. 8237A的外部信号的外部信号17 ((3)数据信号)数据信号üDB7 ~ DB0:地址数据复用线,双向三态。
l被动状态下,为双向数据线用于CPU对8237A进行初始化,或DMA传输结束后传送状态l主动状态下,分时复用分时复用作为访问存储器的高8位地址线和数据线在存储器到存储器传送方式中,作为数据的输入输出端189.2 DMA控制器控制器8237A的原理的原理2. 8237A的外部信号的外部信号18 ((4)控制信号)控制信号üCS:片选信号,低有效被动状态下用于CPU对8237的寻址üCLK:控制芯片内部操作和数据传输üRESET:输入信号,复位8237AüIOR/IOW:读写控制信号l被动状态下,为输入被动状态下,为输入用于CPU向DMAC写命令或初始化参数,或CPU读取8237A内部寄存器状态l主动状态下,为输出主动状态下,为输出对外设进行读写üMEMR/MEMW:存储器读/写信号,单向输出当8237A为主动为主动工作状态时,对存储器进行读写199.2 DMA控制器控制器8237A的原理的原理2. 8237A的外部信号的外部信号19üADSTB:地址选通信号此信号有效时,DMA控制器的当前地址寄存器中的高8位地址通过DB0~DB7送到外部锁存器üAEN:地址允许使地址锁存器中的高8位地址送地址总线。
üREADY:准备就绪信号低电平时,8237A处于等待状态,高电平表示外设或存储器准备就绪üEOP:DMA传输过程结束信号DMA传送过程结束,则从EOP输出一个低有效脉冲若从EOP输入低脉冲信号,则表明外部强制结束DMA传送209.2 DMA控制器控制器8237A的原理的原理((4 4)控制信号)控制信号20lDMA的传送类型n数据传送数据传送:把源地址的数据传送到目的地址去üDMA读:把数据由存储器传送到外设üDMA写:把外设输入的数据写入存储器ü存储器与存储器之间的传递读读/写操作均是针对存储器而言写操作均是针对存储器而言n数据校验数据校验:对数据块内的每个字节进行校验n数据检索数据检索:在指定的内存区域内查找某个关键字节或某几个关键数据位是否存在,如果查到了,就停止检索9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器21n单字节传送方式单字节传送方式►每次传送一个字节,然后每次传送一个字节,然后释放总线控制权释放总线控制权传送下一个字节时,重新申请使用总线►特点üCPU在每个DMA周期结束后立即控制总线对系统影响不大üCPU和DMAC轮流控制系统总线,传输效率低。
9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器允许 DMADMAC发总线请求CPU响应DMA放弃总线DMAC控制传一个字节放弃总线中断请求NDMA放弃总线NYYDMA请求?块结束否?1. 8237A的工作方式和方式寄存器的工作方式和方式寄存器8237A的的四四种种工工作作方方式式22n数据块传送方式数据块传送方式►只要DMA一启动,DMAC始终占用总线始终占用总线,直到数据传送结束,或外部强制停止,才交出总线控制权►特点ü效率高üDMA传输期间CPU长时间不能控制总线若一次传输的数据较多,对系统会有一定响应YNDMAC控制传一个字节放弃总线中断请求CPU 响应 DMA放弃总线DMAC发总线请求允许 DMADMA请求?块结束?8237A的的四四种种工工作作方方式式9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器1. 8237A的工作方式和方式寄存器的工作方式和方式寄存器23n请求传送方式请求传送方式►当8237A检测到DREQ请求时就传输一字节,当DREQ 无效,或操作结束,或由外部送来结束信号EOP,DMAC都会释放总线,把总线控制权交还CPU►具体实现:每传完一个字节,DMAC都会检测外设的DREQ请求。
若若DREQ无效,则马上停止无效,则马上停止DMA传输传输,将总线控制权交给CPU►特点ü实现灵活,DMA操作可由外设用DREQ信号控制发送过程8237A的的四四种种工工作作方方式式9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器1. 8237A的工作方式和方式寄存器的工作方式和方式寄存器24允许DMADMAC发出总线请求CPU响应DMA放弃总线DMAC控制传一个字节放弃总线中断请求YY放弃总线NNYDMA请求?块结束?DMA请求?N25n级联传送方式级联传送方式►将多个DMAC连在一起,一个为主,其余为从从片收到外设的DMA请求后,不是向CPU申请总线,而是向主片申请,再由主片向CPU申请8237A的的四四种种工工作作方方式式9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器1. 8237A的工作方式和方式寄存器的工作方式和方式寄存器268237A的的方方式式寄寄存存器器9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器1. 8237A的工作方式和方式寄存器的工作方式和方式寄存器27例:例:PC系列软盘读写操作选择系列软盘读写操作选择DMA通道通道2,单字节传送,,单字节传送,地址增地址增1,不用自动预置,其写、读、校验操作的方式,不用自动预置,其写、读、校验操作的方式字分别如下:字分别如下:l写操作:写操作:01000110 = 46H。
l读操作:读操作:01001010 = 4AHl校验操作:校验操作:01000010 = 42H9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器1. 8237A的工作方式和方式寄存器的工作方式和方式寄存器289.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器2. 8237A的控制寄存器和有关问题的控制寄存器和有关问题 ((1)) 8237A命令寄存器(只写)命令寄存器(只写)29üD7、D6:决定DREQ和DACK的有效电平üD5:扩展写和不扩展写lD5=1:扩展写信号,表示写脉冲加宽lD5=0:不扩展写信号,表示正常时序üD4:控制通道的优先权lD4=0:采用固定优先级,DREQ0最高,DREQ3最低lD4=1:采用循环优先级已服务过的通道优先权变为最低,其下一个通道优先权变为最高9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器2. 8237A的控制寄存器和有关问题的控制寄存器和有关问题 ((1)) 8237A命令寄存器(只写)命令寄存器(只写)309.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器2. 8237A的控制寄存器和有关问题的控制寄存器和有关问题 ((1)) 8237A命令寄存器(只写)命令寄存器(只写)ü D3:时序类型lD3=0:普通时序普通时序,每传输一个字节需要3个时钟周期。
lD3=1:压缩时序压缩时序,每传输一个字节需要2个时钟周期ü D2:启动和停止8237A的工作lD2=0:启动;D2=1:停止l该位影响所有的通道ü D1:通道0地址保持用于内存到内存的传输lD1=0:不保持D1=1:保持l配合D0位使用31üD0:允许和禁止内存到内存内存到内存传输lD0=1:允许D0=0:禁止l在实现内存到内存的传输时,需把源数据先送到源数据先送到8237的暂存器暂存器中,然后再送到目的区目的区这时,用通道通道0的地址寄存器存放源地址存放源地址,用通道通道1的地址寄存器和字节计数器存放目的地址和计数值目的地址和计数值传输时,目的地址寄存器的值正常加1或减1,但源地址源地址寄存器的值可通过设置D1=1而保持保持不变不变,这样可使同一数据传输到同一数据传输到整个选定的内存区域9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器2. 8237A的控制寄存器和有关问题的控制寄存器和有关问题 ((1)) 8237A命令寄存器(只写)命令寄存器(只写)32【例】PC微机中的8237A-5,按如下要求工作:禁止存储器到存储器传送,正常时序,滞后写入,固定优先级,允许8237A-5工作,DREQ信号高电平有效,DACK信号低电平有效。
已知写命令寄存器对应的地址为08H,请给出写命令的程序段n命令字为 00000000Hn写命令字代码段:üMOV AL, 00HüOUT 08H, AL9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器2. 8237A的控制寄存器和有关问题的控制寄存器和有关问题33ü低4位表示哪些DMA通道传送结束传送结束ü高4位表示哪些通道有DMA请求还未处理还未处理ü状态位在复位或被读出后,均被清零9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器3. 8237A的状态寄存器的格式的状态寄存器的格式34((1)请求标志和请求寄存器(只写))请求标志和请求寄存器(只写)ü一般DMA请求由硬件硬件发出,通过DREQ引脚引入DMA请求但也可通过软件来发出DMA请求ü若是内存到内存内存到内存传输,则必须由软件请求启动通道0ü仅适用于块传输方式,传送结束信号EOP自动清除自动清除请求位9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器4. 8237A的请求标志、屏蔽标志和复位命令的请求标志、屏蔽标志和复位命令35((2)屏蔽寄存器(只写))屏蔽寄存器(只写)用来禁止或允许通道的DMA请求。
各通道相互独立复位使4个通道全被屏蔽屏蔽有以下两种形式:►单通道单通道屏蔽寄存器:每次只能屏蔽一个通道9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器4. 8237A的请求标志、屏蔽标志和复位命令的请求标志、屏蔽标志和复位命令36►四通道四通道屏蔽寄存器:可同时屏蔽4个通道ü低4位全部置1,则屏蔽屏蔽所有的DMA请求ü低4位全部置0,则允许允许所有的DMA请求9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器4. 8237A的请求标志、屏蔽标志和复位命令的请求标志、屏蔽标志和复位命令(( 2 ))屏屏蔽蔽标标志志和和屏屏蔽蔽寄寄存存器器37【例】为了在每次软盘读/写操作时,进行DMA初始化都必须开放通道2,以便响应软盘的DMA请求,可采用下述两种方法之一来实现已知屏蔽单通道屏蔽寄存器和4通道屏蔽寄存器对应的地址分别为0AH和0FH)l使用单通道屏蔽寄存器üMOV AL, 00000010 ;最低3位=010,开放通道2üOUT 0AH, AL ;写单个通道屏蔽寄存器l使用4通道屏蔽寄存器üMOV AL, 00001011B ;最低4位为1011,开放通道2üOUT 0FH, AL ;写四通道屏蔽寄存器9.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器4. 8237A的请求标志、屏蔽标志和复位命令的请求标志、屏蔽标志和复位命令389.3 8237A的工作方式和方式寄存器的工作方式和方式寄存器4. 8237A的请求标志、屏蔽标志和复位命令的请求标志、屏蔽标志和复位命令((3)总清命令)总清命令ü 与硬件的Reset信号功能相同。
ü 使得DMA控制器内部的命令寄存器、状态寄存器、请求寄存器、暂存寄存器、字节指针都清0ü 使得屏蔽寄存器屏蔽寄存器全置1,禁止所有的DMA请求MOV AL, 00H ;AL为任意值OUT 0DH, AL ;写入对应的端口399.4 8237A各寄存器对应的端口地址各寄存器对应的端口地址n8237A DMA控制器进行读、写操作共有16个端口,使用地址线A3 ~ A0 进行寻址,分别记作 DMA + nn占用的I/O地址为00H~0FH其地址分配情况如下端口端口通通道道I/O端口端口地址地址寄存器寄存器读读(IOR)写写(IOW)DMA+0000H当前地址寄存器基地址与当前地址寄存器DMA+1001H当前字节计数寄存器基字节计数与当前字节计数寄存器DMA+2102H当前地址寄存器基地址与当前地址寄存器DMA+3103H当前字节计数寄存器基字节计数与当前字节计数寄存器DMA+4204H当前地址寄存器基地址与当前地址寄存器DMA+5205H当前字节计数寄存器基字节计数与当前字节计数寄存器DMA+6306H当前地址寄存器基地址与当前地址寄存器DMA+7307H当前字节计数寄存器基字节计数与当前字节计数寄存器40端口端口通通道道I/O口口地址地址寄存器寄存器读读(IOR)写写(IOW)DMA+8公用08H状态寄存器写命令寄存器DMA+909H——写请求寄存器DMA+100AH——写单个通道屏蔽寄存器DMA+110BH——写工作方式寄存器DMA+120CH——清除字节指针*DMA+130DH暂存寄存器写总清命令*DMA+140EH——写清四个通道屏蔽寄存器*DMA+150FH——写四个通道屏蔽寄存器 * 为软命令。
为软命令9.4 8237A各寄存器对应的端口地址各寄存器对应的端口地址41lDMA系统的初始化 HLDA无效时可以对8237A进行初始化编程初始化需做的工作有:ü写命令字,禁止8237A工作,或对相应通道进行屏蔽ü执行总清命令进行复位ü写方式寄存器ü设置基地址、基字节和页面地址寄存器的内容ü清除屏蔽允许DMA请求,准备传输数据9.5 8237A的编程和应用429.5 8237A的编程和应用【例】在系统中,8237A的通道0做对动态RAM的刷新,通道1提供网络通信功能,采用固定优先级,为防止数据丢失,动态RAM刷新操作对应的优先级最高已知:8237A端口地址为0000~000FH,DMA代表首地址0000H,8237A的地址寄存器只有16位,为使用CPU的寻址范围,外加页面寄存器实模式下有20位地址,最高4位地址A19~A16放在页面寄存器,其端口地址为0083H通道通道0初始化程序如下:初始化程序如下: 439.5 8237A的编程和应用通道通道0初始化程序如下:初始化程序如下:MOVAL, 04MOVDX, DMA+8OUTDX, AL;停止停止8237A工作工作MOVAL, 00MOVDX, DMA+0DHOUTDX, AL;8237A复位复位MOVDX, DMA+1MOVCX, 0004WRITE:MOV AL, 0FFHOUTDX, ALOUTDX, AL;16位计数值位计数值FFFFH写入写入0通道计数器通道计数器INCDXINCDXLOOP WRITE;FFFFH写入写入4个通道计数器个通道计数器449.5 8237A的编程和应用的编程和应用通道通道0初始化程序如下:初始化程序如下:MOVDX, DMA+0BHMOVAL, 58H;单字节、地址加单字节、地址加1、自动初始化、读、自动初始化、读OUTDX, AL;通道通道0方式选择方式选择MOVAL, 00MOVDX, DMA+08HOUTDX, AL;设置设置8237A控制字控制字MOVDX, DMA+0AHOUTDX, AL;写单屏蔽寄存器写单屏蔽寄存器45NETTRA:MOVDX,,DMA+0CHMOVAL,,00OUTDX,,ALMOVDX,,DMA+09HOUTDX,,ALMOVAX,,01ORAX,,SIMOVDX,,DMA+0BHOUTDX,,ALMOVAX,,ESMOVCL,,04ROLAX,,CLMOVCH,,ALANDAL,,0F0HADDAX,,BXJNCABCINCCHl利用通道利用通道1进行网络通信的传输程序进行网络通信的传输程序ABC:MOVDX,,DMA+2OUTDX,,ALMOVAL,,AHOUTDX,,ALMOVAL,,CHANDAL,,0FHMOVDX,,DMA+0083HOUTDX,,ALMOVAX,,DIDECAXMOVDX,,DMA+3OUTDX,,ALMOVAL,,AHOUTDX,,ALMOVDX,,DMA+0AH46MOVAL,,01OUTDX,,ALMOVDX,,DMA+8MOVAL,,60HOUTDX,,ALMOVDX,,DMA+8WAIT:INAL,,DXANDAL,,02HJZWAITl利用通道利用通道1进行网络通信的传输程序进行网络通信的传输程序47更换老师说明48。












