您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 第9章DMA微型计算机原理与接口技术
8DMA控制器8237ADMA方式是让存储器直接和高速外设直接交换数据,在传输的过程中不需要CPU的介入,传输操作都由硬件完成,因此减轻了CPU的负担,同时也大大提高了传输的速度。8.1DMA控制器一般结构数据总线控制总线地址总线地址译码器控制寄存器状态寄存器地址寄存器字节寄存器总线请求总线允许DMA请求(来自外设接口)DMA回答(送往外设接口)记数结束信号(送往接口或中断请求线)8.2DMA控制器8237A的原理1、8237A的编程结构模式寄存器基地址寄存器当前地址寄存器基字节寄存器当前字节寄存器通道0控制寄存器状态寄存器请求寄存器屏蔽寄存器暂存器通道1通道2通道3DREQ0DACK0DREQ1DACK1DREQ2DACK2DREQ3DACK3AENADSTBA4—A7AD0—AD7MEMRMEMWIORIOWHRQHLADEOPREADYRESETCLKGNDVCCA0—A32、8237的寄存器组1)现行地址寄存器每一个通道有一个16位的现行地址寄存器。在这个寄存器中保存着用于DMA传送的地址值,在每次传送后,这个寄存器的值自动增量或减量。这个寄存器的值可由CPU写入或读出(分两次连续操作)。2)现行字节数寄存器每个通道有一个16位的现行字节数寄存器,它保持着要传送的字节数,在每次传送后此寄存器减量。当这个寄存器的值减为零时,TC将产生。这个寄存器的值在编程状态可由CPU读出和写入。以上2个寄存器在自动预置方式时,当EOP信号有效时,自动置初值(由基地址和基字节数寄存器决定)。3)基地址和基字节数寄存器每一个通道有一对16位的基地址和基字节数寄存器,它们存放着与现行寄存器相联系的初始值。4)控制寄存器、状态寄存器、暂存器(在MM期间临时保存数据)等3、DMA引脚功能IORIOWMEMRMEMWNCREADYHLDAADSTBAENHRQCSCLKRESETDACK2DACK3DREQ3DREQ2DREQ1DREQ0GND12345678910111213141516171819204039383736353433323130292827262524232221A7A6A5A4EOPA3A2A1A0VccDB0DB1DB2DB3DB4DACK0DACK1DB5DB6DB78237A-5主要引脚的功能:1)READY:I/O或存储器准备就绪信号,高电平有效;2)ADSTB:高8位地址锁存信号,在DMA的地址输出周期,锁存从AD0—AD7输出的高8位地址;3)AEN:地址允许信号,在DMA期间,禁止地址信号产生I/O译码;4)EOP:低电平,外部输入EOP信号到DMA时,强迫DMA结束;当DMA内部计数器计数结束时,输出低电平,通知I/O,DMA结束;5)A0—A3:低4位地址,在DMA期间产生低位地址,在DMA编程初始化时,对DMA内部寄存器寻址;6)MEMR、MEMW、IOR、IOW:7)HRQ、HLAD:总线请求和总线回应信号;8)AD0—AD7:8位数据线,在DMA输出地址周期,产生高8位地址;9)DREQ、DACK:DMA请求和应答信号;10)A4—A7:DMA地址信号。4、8237A功能8237ADMA控制器的主要功能:1)8237有4个独立的DMA通道;2)每个通道的DMA请求都可以分别允许和禁止;3)每个通道的DMA请求有不同的优先权,优先权可以是固定的,也可以是旋转的(由编程来决定)。4)每个通道一次传送数据的最大长度为64KB,可以是存储器与I/O之间传送数据,也可以是存储器之间传送数据;5)8237有4种传送方式:(1)单字节传送方式;(2)数据块传送方式;(3)请求传送方式;(4)级连方式。6)有一个结束处理的输入信号EOP,CPU可以通过EOP结束DMA操作或对DMA重新初始化;7)8237可以级连,任意扩展通道数。5、8237内部寄存器寄存器名位数(位)数量CPU访问方式基地址寄存器164W基字节数计数器164W现行地址寄存器164RW现行字节数计数器164RW临时地址寄存器164/临时字节数计数器164/状态寄存器81R命令寄存器81W临时寄存器81R模式寄存器64W屏蔽寄存器41W请求寄存器41W6、8237的工作周期1)空闲周期SI在空闲周期,DMA采样DREQ信号,如无DMA请求,则执行SI周期。同时,DMA采样DMA的CS信号,CS有效,表示CPU要对8237进行读写操作,此时控制线IOR、IOW及A0---A3,用来控制8237内部寄存器的读写。如果读写16位数,则根据8237内部的高/低触发器控制读写的是高8位还是低8位。2)请求应答周期S0在SI下降沿DMA采样到DREQ信号,则DMA进入S0状态,并向CPU发送HRQ信号,S0状态一直持续到CPU的回应信号HLDA有效。3)DMA操作周期S1--S4S1:DMA从DB0—DB7输出高8位地址,发送ADSTB有效信号,A0—A7输出低8位地址;且AEN信号有效。S2:外部地址锁存器锁存高8位地址,并输出16位地址到RAM,向申请DMA传送的外设发出请求回答信号DACK,DACK作为I/O的选通信号(I/O寻址被禁止);并发送读命令(IOR/MEMR),为DMA读准备。S3:DMA写,DMA写信号(MEMW/IOW)S4:DMA结束,并检查EOP信号。S1S2S1S1S3S0S0SWSWS4DREQHLDA就绪块字节未就绪就绪单字节HRQ数据传输状态请求应答态空闲状态7、DMA工作方式1)单字节传送方式这种方式一次只传送一个字节。数据传送后字节计数器减量,地址要相应修改(增量或减量取决于编程)。HRQ变为无效,释放系统总线。若传送使字节数减为0,TC发生或者终结DMA传送,或重新初始化。2)块传送方式在这种传送方式下,8237由DREQ启动后就连续地传送数据,直至字节数计数器减到零产生TC(TerminalCount),或者由外部输入有效的EOP信号来终结DMA传送。3)请求方式在这种工作方式下,8237可以进行连续的数据传送。当出现以下三种情况之一时停止传送。(1)字节数计数器减到0,发生TC;(2)由外界送来一个有效的EOP信号;(3)外界的DREQ信号变为无效(外设的数据已传送完)。4)级联方式这种方式用于通过级连以扩展通道的情况。第二级的HRQ和HLDA信号连到第一级的DREQ和DACK上。此时,第一级DMA只是个优先权网络。在前三种工作方式下,DMA传送有三种类型:DMA读、写和校验。CPU8237HRQHLDADERQ0DACK0DERQ3DACK38237HRQHLDADERQ0DACK0DERQ3DACK38237HRQHLDADERQ0DACK0DERQ3DACK35)8237A工作模式寄存器格式D7D6D5D4D3D2D1D0通道选择00:通道001:通道110:通道211:通道3传输类型00:MM校验01:I/OM写10:MI/O读11:无意义自动预置0:禁止,1:允许。在自动预置时,当计数器计数到0时,当前地址寄存的值和当前计数寄存器的值会被基地址寄存器和基计数寄存器的值预置。地址增减选择0:地址减11:地址加1模式选择00:请求模式01:单字节传输10:块传输11:级联8、8237A控制寄存器格式D7D6D5D4D3D2D1D01:MM传输方式0:其它1:MM时,源地址保持不变。0:启动8237A工作1:停止8237A工作0:普通时序,1:压缩时序0:固定优先级1:循环优先级0:无扩展写信号1:扩展写D6=0:DREQ高电平有效D6=1:DREQ低电平有效D7=0:DACK低电平有效D7=1:DACK高电平有效D0=1,表示存储器到存储器的数据传送,此时,由通道0发出软件DMA请求,规定通道0从源内存地址读取数据到暂存器。再由通道1把暂存器的数据写到目的内存单元。MM的操作需要2个DMA周期。9、请求寄存器8237的每个通道有一条硬件的DREQ请求线,当工作在数据块传送方式时,也可以由软件发出DREQ请求,即请求该通道进行DMA操作。所以,在8237中有一种请求寄存器。每个通道的软件请求可以分别设置。软件请求是非屏蔽的,它们的优先权同样受优先权逻辑的控制。软件请求标志在DMA复位或EOP有效时,会自动清0。在对通道进行DMA软请求时,D2=1表示请求标志置1,否则置0。D1D0:对通道进行选择。10、屏蔽寄存器每个通道外设通过DREQ线发出的请求,可以单独地屏蔽或允许,所以在8237中有一个屏蔽寄存器,用来控制某个通道的DMA操作是否被屏蔽。EOP信号有效时,且某通道禁止自动预置,则对应的屏蔽位被置1(被屏蔽)。DMA在复位时,所有的屏蔽位都被置1。每个通道可以用命令来置位或复位,命令格式有2种:(1)单个通道屏蔽,如请求寄存器的操作一样,地址为DMA+0AH。D2=1,屏蔽;D1D0:选择通道。(2)同时写4个通道,屏蔽寄存器地址为:DMA+0FH。D0=1,屏蔽通道0;D1=1,屏蔽通道1;D2=1,屏蔽通道2;D3=1,屏蔽通道3。11、状态寄存器8237中有一个可由CPU读取的状态寄存器,用来了解DMA的状态。其中,D0–D3为1,分别表示DMA0—DMA3计数到终点或EOP信号有效。为0表示DMA复位或CPU产生了一次状态寄存器读操作。D4–D7为1分别表示DMA0—DMA3有DMA请求,为0为没有DMA请求。12、软件命令8237在编程状态还有两种软件命令,软件命令不需要通过数据总线写入控制字,而由8237直接对地址和控制信号进行译码。(1)清除高/低触发器(字节指示器):高/低触发器为0,CPU与DMA进行低8位数据传送;为1时,进行高8位数据传送。地址为:DMA+0CH如:OUT8CH,AL(AL=0)(2)主清除命令:相当于RESET信号,它执行后,能清除命令寄存器、状态寄存器、各通道的请求标志、暂存器和高/低触发器,并将各通道的屏蔽标志置1,8237进入空闲周期。地址为DMA+0DH如:OUT8DH,AL(AL=0)13、8237内部寻址8237内部寄存器分2组:通道寄存器组和命令与状态寄存器组,寻址靠A0–A3完成,且A3=0时,对通道寄存器组寻址;A3=1时,对命令与状态寄存器组寻址。(1)通道寄存器的寻址8237内部有4个通道,每个通道有4个寄存器:基地址寄存器、基字节计数器、现行地址寄存器、现行字节计数器。CPU在写基地址寄存器、基字节计数器时,同时写现行地址寄存器、现行字节计数器。而只能读现行地址寄存器、现行字节计数器。故在CPU对DMA写时,基地址寄存器与现行地址寄存器、基字节计数器与现行字节计数器的地址一样。A1、A2区分通道DMA0–DMA3;A0=0,表示写基地址寄存器和现行地址寄存器,或者读现行地址寄存器;A0=1,表示写基字节计数器和现行字节计数器,或者读现行字节计数器。在读写时,先读写低8位,紧接着读写高8位。例如,DMA的地址为80H,将地址8040H写通道1的基地址寄存器和现行地址寄存器:MOVAL,40HOUT82H,ALMOVAL,80HOUT82H,AL读通道1的现行地址寄存器到AX:INAL,82HMOVBL,ALINAL,82HMOVAH,ALMOVAL,BL(2)命令与状态寄存器组的寻址地址寄存器操作A3A2A1A01000命令寄存器写1001请求寄存器写1010单个通道屏蔽位寄存器写1011模式寄存器写1000状态寄存器读1101临时寄存器读1111写所有屏蔽位寄存器写1100清除高/低触发器写1101主清除写8.38237的编程(1)输出主清除命令。(2)写入基与现行地址寄存器。(3)写入基与现行字节数寄存器。(4)写入模式寄存器。(5)写入屏蔽寄存器。(6)写入命令寄存器。(7)写入请求寄存器。若有软件请求,就写入指定通道,可以开始DMA传送的过程。若无软件请求,则在完成了(1)~(6)的编程后,由通道的DREQ启动DMA传送过程。8.48237时序1)标准时序:S1、S2、S3、S4(以I/OM)
本文标题:第9章DMA微型计算机原理与接口技术
链接地址:https://www.777doc.com/doc-3419744 .html