第8章 DMA技术与DMA控制器.ppt_第1页
第8章 DMA技术与DMA控制器.ppt_第2页
第8章 DMA技术与DMA控制器.ppt_第3页
第8章 DMA技术与DMA控制器.ppt_第4页
第8章 DMA技术与DMA控制器.ppt_第5页
免费预览已结束,剩余88页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第8章 dma技术与dma控制器,8.1 dma技术概述 8.2 可编程dma控制器8237a 8.3 dma技术在微机系统中的应用,直接存储器存取,2,1.dma(direct memory access)的概念 dma方式不用处理器干预完成m与i/o间数据传送。 dma期间系统总线由其它主模块控制(驱动) 控制总线的主模块要提供系统的地址及控制信号。 dma控制器与处理器配合可实现系统的dma功能。,8.1 dma技术概述,3,2. dma系统组成及工作过程 dma系统组成,4,dmac的基本功能,接收接口往dma控制器发出dma请求信号后,dma控制器能向cpu发出总线请求信号hold(高电平)。 当cpu向dma发出响应信号hlda(高电平)以后,dma能接管对总线的控制,进入dma方式。 能向地址总线发出内存地址信息,对其进行寻址及修改地址指针。,5,dmac的基本功能,能向存储器或i/o接口发相应的读写控制信号。 能决定传送字节数,并判断dma传送是否结束。 dma过程结束,能向cpu发出dma结束信号,hold变低,将总线控制权还给cpu,cpu恢复正常工作。,6,允许 dma,dma 请求?,dmac发bus请求,cpu响应dma 放弃bus,dmac控制 传一个字节,块结束否?,放弃总线中断请求,n,dma 放 总 线,n,y,字节传送,y,dma传送方式,7,允许 dma,dma请求?,dmac发bus请求,cpu 响应 dma 放弃 bus,dmac控制 传一个字节,块结束否?,放总线中断请求,dma请求?,n,y,y,n,块传送,dma传送方式,8,允许 dma,dma请求?,dmac发出bus请求,cpu响应dma放弃总线,dmac 控制传一个字节,块结束否?,放总线中断请求,y,dma请求?,y,放总线,n,n,y,随机请求 demand request,dma传送方式,9,i/o设备向dmac发出dma请求,dmac向cpu发出总线请求,cpu在执行完当前指令的当前 的总线周期后,向dmac发出 总线响应信号,cpu脱离对系统总线的控制, 由dmac接管对系统总线的控制,dmac向i/o设备发出 的dma应答信号,dmac进行一个字节的传送,完成设定的字节数据传送, cpu恢复对系统总线的控制,dma传送的过程,10,8.2 可编程dma控制器8237a,8.2.1 8237a的主要特性 1具有四个独立的dma通道,每个通道都具有64k的存贮器寻址能力,即一次传送的最大长度为64k字节。 2可实现内存与外设之间的高速大批量数据传送 ,也可实现内存两个不同区域之间的高速数据传送。 3每个通道的dma请求均可分别允许或禁止,且四个通道的dma请求的优先权可由软件设置为固定的或循环的。,11,8237a的主要特性,4具有单字节传送、数据块传送、请求传送和级联传送四种工作方式。 5可用级联方式扩展dma通道数目。 6dma传送结束信号可由内部计数产生,也可由外部输入提供。 7单一的+5v电源,40个引脚双列直插式封装。 8采用5mhz时钟,传送速率可达1.6m字节/秒。,12,8采用5mhz时钟,传送速率可达1.6m字节/秒。 8237进行一次dma传送需要3个时钟周期(不包括插入的等待周期sw)。时钟周期为200 ns,则一次dma传送需要200 ns3200 ns700 ns(1.6 m字节/秒)。多加一个200 ns是考虑到人为插入一个sw的缘故。另外,8237为了提高传输速率,可以在压缩定时状态下工作。在此状态下,每一个dma总线周期仅用两个时钟周期(200 ns2=400ns )就可实现,这大大提高了传输速率。,13,8.2.2 8237a的工作原理,18237a的编程结构 编程结构见下页图 内部有大量寄存器,内部寄存器的功能、端口地址等信息 参见下表.,14,intel 8237a可编程dma控制器框图,15,1)8237a组成说明: 8237a有四个独立通道:通道0通道3。每个通道可独立响应外部dma请求,完成dma传送。,15,16,控制寄存器, 8位,16,四个通道公用,优先级编码电路-优先级裁决,17,8237的引脚功能,17,18,8237的引脚功能,请求/应答信号 外设接口电路向8237的请求信号:dreq3dreq0 8237对外设接口电路的应答信号:dack3dack0 8237向cpu申请总线的信号:hrq(连至cpu的hold) cpu向8237传送的允许使用总线信号:hlda,cpu,dma,外设,hrq,dreq,hlda dack,18,19,8237的引脚功能,地址信号 :cpu初始化8237或读8237状态时所需的片选信号 a7a0(输出):8237访问存储器的地址信号的低8位。 a3a0(输入):cpu初始化8237或读8237状态时,用于寻址8237内部寄存器,19,20,8237的引脚功能,数据信号(双向): db7db0,cpu为主控时,可以通过i/o读命令查询8237的状态寄存器的内容,或通过i/o写命令对8237的内部寄存器进行编程,数据传送通过db7db0 8237为主控时, db7db0输出要访问的内存地址的高8位,并通过adstb锁存到外部地址锁存器中,和a7a0输出的低8位地址一起构成16位地址,20,21,8237的引脚功能,地址允许信号:aen 8237作为主控时(8237控制总线),输出aen=1。 8237作为从控时(cpu控制总线),输出aen=0。 dma传输结束信号: (双向) 当dmac内部任一通道传输结束,8237发出 若由外部给dmac送入有效的 ,则强制dmac内部 所有通道结束传输。,21,22,8237的引脚功能,memr/memw:,8237发出的存储器读/写信号,ior/iow:,8237作为主控时,输出的i/o读/写信号。 8237作为从控时,cpu发出的i/o读/写信号,用于读/写8237,22,23,8237的引脚功能,adstb:地址选通信号,用于启动地址锁存器,ready:存储器或i/o的就绪信号,23,24,dma控制器8237,工作方式 1)从模块工作方式: 当cpu将数据送入或取出8237时,dma完全象一个普通的i/o接口,此时它工作于从模块。,24,25,dma控制器8237,d0d7 db0db7 ior ior cpu iow iow 8237 a0a3 a0a3 a4a15 cs 此时cpu对8237进行初始化或读出8237中的状态。,25,译码,26,dma控制器8237,2)主模块工作方式: 此时dma已取代cpu控制系统。它 将提供系统正常工作的地址信息,控 制信息完成dma方式的数据传送。,26,27,dma控制器8237,aen a0a7 a0a7 8237 en adstb db0db7 a8a15 iow ior memw memr,27,stb 锁存器,28,dma控制器8237,28,那对于20位地址线8237如何处理?,由上可见8237工作于模块方式,可取代cpu产生地址及控制信息。,8237a处于dma方式时,全部地址均用来寻址存储器,无法同时提供i/o设备的端口地址.为了寻址外部设备,8237a提供dack信号,作为对请求dma方式的外部设备的应答,并指明该外部设备被认可,可以进行dma传送.在整个传输过程中只要dack信号,ior,iow同时有效,就能完成读外部设备的i/o读写操作.所以,在dma方式下,i/o设备的地址无效.即:以dack代替了片选和译码功能.,在8086/88系统中,系统的寻址范围是1mb,地址线有20条,即a0a19。为了能够在8086/88系统中使用8237来实现dma,需要用硬件提供一组4位的页寄存器。 通道0、1、2、3各有一个4位的页寄存器。在进行dma传送之前,这些页寄存器可利用i/o地址来装入和读出。当进行dma传送时,dmac将a0a15放在系统总线上,同时页寄存器把a16a19也放在系统总线上,形成a0a19这20位地址信号实现dma传送。其地址产生如图所示。,29,利用页寄存器产生存储器地址,29,30,8237a的工作方式,dma传送方式 单字节传送方式 数据块传送方式 请求传送方式 级连方式 dma传送类型 dma读 dma写 dma检验 存储器到存储器的传送,31,(1) dma传送单字节方式,每次dma传送时仅传送一个字节 传送一个字节之后,字节数寄存器减1,地址寄存器加1或减1,hrq变为无效 8237a释放系统总线,将控制权还给cpu 若传送后使字节数从0减到ffffh,则终结dma传送或重新初始化 特点: 一次传送一个字节,效率略低 dma传送之间cpu有机会重新获取总线控制权,dma传送方式,32,(2) dma传送数据块方式,由dreq启动就连续地传送数据,直到字节数寄存器从0减到ffffh终止计数,或由外部输入有效信号终结dma传送 dreq只需维持有效到dack有效 特点: 一次请求传送一个数据块,效率高 整个dma传送期间cpu长时间无法控制总线(无法响应其他dma请求、无法处理中断等),33,(3) dma传送请求方式,dreq信号有效就连续传送数据 dreq信号无效,dma传送被暂时中止,8237a释放总线,cpu可继续操作 dma通道的地址和字节数的中间值仍被保持 dreq信号再次有效,dma传送就继续进行 如果字节数寄存器从0减到ffffh,或者由外部送来一个有效的信号,将终止计数 特点: dma操作可由外设利用dreq信号控制传送的过程,34,(4) dma传送级连方式,用于通过多个8237a级连以扩展通道 第二级的hrq和hlda信号连到第一级某个通道的dreq和dack上 第二级芯片的优先权等级与所连通道的优先权相对应 第一级只起优先权网络的作用,实际的操作由第二级芯片完成 还可由第二级扩展到第三级等,35,8237a的级联,36,dma读把数据由存储器传送到外设 由memr*有效从存储器读出数据,由iow*有效把这一数据写入外设 dma写把外设输入的数据写入存储器 由ior*有效从外设输入数据,由memw*有效把这一数据写入存储器。 dma检验空操作 8237a不进行任何检验 外设可以进行dma校验 存储器和i/o控制线保持无效,不进行传送,dma传送类型,37,固定使用通道0和通道1 通道0的地址寄存器存源区地址 通道1的地址寄存器存目的区地址,通道1的字节数寄存器存传送的字节数 传送由设置通道0的软件请求启动 每传送一字节需用8个时钟周期 前4个时钟周期用通道0地址寄存器的地址从源区读数据送入8237a的临时寄存器 后4个时钟周期用通道1地址寄存器的地址把临时寄存器中的数据写入目的区,存储器到存储器的传送,38,8237a的工作方式由写模式寄存器决定,存放相应通道的方式控制字 选择某个dma通道的工作方式 其中用最低2位选择哪个dma通道,请看方式字的格式,39,方式字格式(写b号),00 请求模式 01 单字节模式 10 数据块模式 11 级联模式,0 地址增量(加1) 1 地址减量(减1),0 禁止自动初始化 1 允许自动初始化,00 dma校验 01 dma写 10 dma读 11 非法 若d7d611,00 通道0 01 通道1 10 通道2 11 通道3,40,dma控制器8237,自动预置功能: d4:当设置为自动预置时,每当dma过程结束信号eop*产生时(不论是内部终止计数还是外部输入该信号)用基地址寄存器和基字节数寄存器的内容,使相应的现行寄存器恢复为初始值,包括恢复屏蔽位、允许dma请求这样就作好了下一次dma传送的准备,40,41,dma控制器8237,d3 d2:传输方式设定 写输入: i/o设备往内存写入数据。 读输入; 将内存数据送往i/o设备。 校验传输:用于对读传输和写传输功能进行 校验,是虚拟传输,8237此时只产 生eop信号和地址信号。,41,42,dma控制器8237,42,8237,存 储 器,i/o 设备,8237,写传输 读传输,存 储 器,i/o 设备,a0a15,memw,ior,d0d7,a0a7,memr,iow,43,当8237a没有被外围设备用来进行dma操作时,此时它处于所谓空闲状态。在这种状态下,微处理器可以向这个dma控制器输出命令以及读写它的内部寄存器 。,8.4 827a的时序,44,dma控制器的工作时序,dma空闲周期si 过渡状态s0 有效周期(s1、s2、s3、s4),8237a内部状态变化流程,45,8237a的工作时序空闲周期,8237a的任一通道都没有dma请求时 8237a由微处理器控制作为一个接口芯片 cpu可对8237a编程,或从8237a读取状态 8237a采样cs*选片信号,该信号有效,cpu就要对8237a进行读/写操作 8237a还采样通道的请求输入信号dreq,该信号有效,就进入有效周期,进入有效周期,46,8237a的工作时序有效周期,8237a采样到外设有dma请求,就脱离空闲周期进入有效周期 8237a作为系统的主控芯片,控制dma传送操作 dma传送借用系统总线完成,其控制信号以及工作时序类似cpu总线周期,进入dma传送时序,47,dma传送时序,48,a) s1 周期: dmac在s1 状态发出地址允许aen信号,通过数据总线db0db7将高8位地址a8 a15锁存起来。多数情况下,这几位地址不需改变,故可直接进入s2周期。 b) s2周期:修改存储单元的低8位地址,(高8位已锁存) 向i/o发请求回答信号dack,准备 传送数据。 c) s3周期:送高8位地址a8 a15到地址总线,发出memr或ior读命令,从内存或i/o准备传送数据。 d) s4周期:发iow或memr命令。 用普通时序时,每进行一次dma传输,一般用3个时钟周期( s2 s3 s4 );压缩时序,用两个时钟周期(s2 s4 ),此时只更新低8位地址,不修改高8位地址,48,8237a的工作周期、时序与模式,49,8237a的寄存器,8237a共有10种内部寄存器,对它们的操作有时需要配合3个软件命令 8237a的“软件命令” 不需要通过数据总线写入控制字 直接由地址和控制信号译码实现,全部都用地址a0a3区分,50,1. 8237a 的控制寄存器,存放8237a的命令字 设置8237a芯片的操作方式 影响每个dma通道 复位时使命令寄存器清零 设置d20才使8237a可以作为dma控制器,请看命令字的格式,8.5 8237a 的控制寄存器和状态寄存器,51,命令字格式,8237a 控制/命令寄存器格式(写8号):硬件设置与运行控制 8237a硬件设置:,52,dma控制器8237,控制寄存器格式和有关问题:,52,d7 d6 d5 d4 d3 d2 d1 d0,do:为1则为内存到内存的传送。此时通道0用于存放源地址,通道1用于存放目的地址及计数值。,53,dma控制器8237,d0d7,53,8237,暂存器,内存,内存,a0a15,memw,memr,d0d7,内存到内存的传输,54,dma控制器8237,d1:为1时,可实现内存到内存时,使源 地址不变而目的地址变化,用于实现 内存的初始化。 d2:为0启动8237工作,d2为1停止8237 作。 d3:为0普通时序,为1压缩时序。 当地址范围仅用于a7a0时的dma时 序为压缩时序,即一次可传送最多 256个数据。,54,55,dma通道的优先权方式,d4=0 固定优先权方式优先权固定 通道0优先权最高,通道1其次,通道2再次,通道3最低 d4=1 循环优先权方式优先权循环变化 最近一次服务的通道在下次循环中变成最低优先权,其他通道依次轮流相应的优先权,dma传送不存在嵌套,d5:为0不扩展写信号;为1扩展写信号,使memw,iow扩展2个时钟周期。,56,dma控制器8237,2. 状态寄存器格式:,56,d7 d6 d5 d4 d3 d2 d1 d0,d0 d1 d2 d3:表示4个通道计数结束状态 1:结束; 0:未结束 d4 d5 d6 d7:表示4个通道dma请求情 况 1:申请; 0:无申请,(读8号),57,3. 请求寄存器,存放软件dma请求状态 除硬件dma请求外,当工作在数据块传送方式时也可以通过软件发出dma请求 若是存贮器到存贮器传送,则必须由软件请求启动通道0,请看请求字的格式,58,请求字格式,8237a dma 请求寄存器 格式(写9号),d6: 1:dreq高电平有效。,59,屏蔽寄存器,控制外设硬件dma请求是否被响应(为0允许),各个通道互相独立。3种方法: 单通道屏蔽字只对一个dma通道屏蔽位进行设置 主屏蔽字对4个dma通道屏蔽位同时进行设置 清屏蔽寄存器命令使4个屏蔽位都清零(允许) 复位使4个通道全置于屏蔽状态 当一个通道的dma过程结束,如果不是工作在自动初始化方式,则这一通道的屏蔽位置位,必须再次编程为允许,才能进行下次dma传送,请看屏蔽字的格式,60,单通道屏蔽字格式,8237a 屏蔽寄存器格式 (单一位)(写a号),61,主屏蔽字格式,di0 清通道i屏蔽位di1 置通道i屏蔽位,8237a 全4位 mask 寄存器 格式 (写f号),62,临时寄存器,在存储器到存储器的传送方式下,临时寄存器保存从源存储单元读出的数据,该数据又被写入到目的存储单元 传送完成,临时寄存器只会保留最后一个字节,可由cpu读出 复位使临时寄存器内容为零,63,4. 8237的字节指针 (1) 现行地址寄存器,保持dma传送的当前地址值 每次传送后该寄存器的值自动加1或减1 这个寄存器的值可由cpu写入和读出,基地址寄存器 存放初始值,64,(2) 现行字节数寄存器,保持dma传送的剩余字节数 每次传送后,该寄存器的值减1 这个寄存器的值可由cpu写入和读出 该寄存器的值减至0,再减1(从0减到ffffh)时,终止计数,基字节数寄存器 存放初始值,传送n个字节,初始值为n1,65,读写通道寄存器,cpu与8237a之间通过8位数据总线交换信息,8237a的通道寄存器均为16位 需要两次读写操作才能实现cpu与8237a之间的一个完整数据的交换 8237a内含一个高/低触发器,用来控制读写通道寄存器的高、低字节,66,高/低触发器,该触发器为0,控制读写低字节 该触发器为1,控制读写高字节 软、硬件复位后,触发器为0 每次读写通道寄存器,自动改变触发器状态。如果对16位寄存器的操作用两次连续读写进行,就不必清除这个触发器 清除高/低触发器软件命令(a3a2a1a01100)将使高/低触发器清零,67,3个软件命令,清除高/低触发器软件命令 a3a2a1a01100=0ch,使高/低触发器清零 主清除命令 a3a2a1a01101=0dh,使高/低触发器清零 还使命令、状态、请求、临时寄存器清零 使屏蔽寄存器置为全1(禁止dma请求) 主清除命令与硬件的reset信号具有相同的功能 清屏蔽寄存器命令 a3a2a1a01110=0eh,使4个屏蔽位都清零(允许dma请求),68,内部寄存器的寻址问题,占用16个端口地址 问题:如此多的寄存器,采用什么方法只用16个端口地址就能访问到? 端口分配表(见下页),68,69,8237内部寄存器的寻址,70,8.7 8237的编程,1. 编程步骤 8237的编程通常可按如下步骤进行: (1) 输出主清除命令;总清时只要求对总清地址进行写操作并不关心写入什么数据。 (2) 置页面寄存器; (3) 写入基和当前地址寄存器; (4) 写入基和当前字节计数寄存器; (5) 写入模式寄存器; (6) 写入命令寄存器; (7) 写入屏蔽寄存器; (8) 写入请求寄存器。,70,71,其中第(8)步是采用软件dma请求时所需要的,由此可将相应的请求命令字写入指定通道,从而启动dma传送过程; 若为硬件dma请求,则无需此步骤,只要在完成了(1)(7)步编程后,由通道的dreq信号即可启动dma传送过程。,71,72,编程举例 在ibmpc系统中,试利用8237通道1,将内存8000h:0h开始的16k字节数据传送至磁盘(地址增量传送)。 要求采用块传送方式,传送完不自动预置,dreq和dack均为高电平有效,固定优先级,普通时序,不扩展写信号。 系统中8237的端口地址为00h0fh。 通道1“页面寄存器”的端口地址为83h。,72,73,89h,块方式,读传送,通道1,地址增量,非自动初始化,(1)确定模式字,73,74,(2)确定命令字,非存储器至 存储器传送,无意义,控制器允许,普通时序,dack 高电平有效,dreq 高电平有效,正常写,固定优先级,80h,74,75,(3)确定屏蔽字,01h,通道1的屏蔽位复位,75,76,初始化程序如下:,out 0dh,al ; 输出主清除命令 mov al, 08h ; 置通道1“页面寄存器” 页面地址为8(a19 a16=08h) out 83h, al mov al, 00h ; 写入基和当前地址低8位 out 02h,al mov al,00h ; 写入基和当前地址高8位 out 02h,al mov al,00h ; 写入基和当前字节计数寄存器低8位 out 03h,al mov al,40h ; 写入基和当前字节计数寄存器高8位 out 03h,al mov al,89h ; 输出模式字 out 0bh,al mov al,80h ; 输出命令字 out 08h,al ;8237内部寄存器的寻址 mov al,01h ; 输出屏蔽字 out 0ah,al,76,77,8237a的编程(续1),dma通道的dma传送编程: 将存储器起始地址写入地址寄存器(如果采用地址减量工作,则是结尾地址) 将本次dma传送的数据个数写入字节数寄存器(个数要减1) 确定通道的工作方式,写入方式寄存器 写入屏蔽寄存器复位通道屏蔽位,允许dma请求,请看实例,78,8237a的编程(续2),两种方法反映dma过程结束(即终止计数、发生tc): 状态寄存器的低4位 信号(需配合dack响应信号确定通道) 应用程序处理dma传送过程结束: 采用软件查询状态字 采用硬件中断在中断服务程序处理,79,8237a的应用,8237a在pc系列机的使用情况 dma写传送 dma设定子程序,80,8237a在ibm pc系列机上的应用,ibm pc/xt机使用一片8237a 通道0:动态存贮器dram刷新 通道1:用户使用或sdlc卡 通道2:内存与软盘的高速数据交换 通道3:内存与硬盘的高速数据交换 ibm pc/at机采用两片8237a dmac1包含通道03,支持8位数据传送 dmac2组成通道47,通道57支持16位数据传送,通道4用于级连,81,(1) 8237a的初始化,8237a初始化写入命令字为0,确定了: dreq高电平有效、dack低电平有效,固定优先权(依次为通道0、17) 不进行存储器到存储器的数据传输 pc机用dma控制电路进行刷新,所以dma传送不能长时间占用总线(不应超过15s),一般只能使用单字节传送方式 在pc系列机上,用户如果使用dma通道,要注意遵从上述系统要求。除了要禁止8237a工作,用户通常不必操作命令寄存器,82,(2) 高位地址的形成,dma传送时的高位地址由“页面寄存器”提供 页面寄存器由cpu的输出指令实现写入 dmac1的通道0通道3:8237a提供系统a0a15低16位地址,页面寄存器输出系统a16a23高8位地址 dmac2的通道5通道7:8237a提供系统a1a16的16位地址,而系统a0被强迫为逻辑0,页面寄存器仅输出高7位地址a17a23,页面寄存器不会自动增减量 高位地址在dma传送过程中不改变,83,dma通道0的刷新编程,out 0dh,al ;dmac主清除命令 mov al,0 out 08,al ;dmac命令字 mov al,0 out 00,al ;通道0的地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论