《微型计算机原理及应用课件08dma》由会员分享,可在线阅读,更多相关《微型计算机原理及应用课件08dma(93页珍藏版)》请在金锄头文库上搜索。
1、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发出总线请求信号HOL
2、D(高电平)。 当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
3、,允许 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脱离对系统总线的控制
4、, 由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、、数据块传送、请求传送和级联传送四种工作方式。 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为了提高传输速率,可以在压缩定时状态下工作。在此状态下
6、,每一个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的引脚功能,请求/应答信号 外设接口电路向823
7、7的请求信号: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
8、/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,82
9、37的引脚功能,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 A0
10、A3 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方式时,全部地址均用来
11、寻址存储器,无法同时提供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传送之前,这些页寄存器可利
12、用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 若传送后使
13、字节数从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可继
14、续操作 DMA通道的地址和字节数的中间值仍被保持 DREQ信号再次有效,DMA传送就继续进行 如果字节数寄存器从0减到FFFFH,或者由外部送来一个有效的信号,将终止计数 特点: DMA操作可由外设利用DREQ信号控制传送的过程,34,(4) DMA传送级连方式,用于通过多个8237A级连以扩展通道 第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上 第二级芯片的优先权等级与所连通道的优先权相对应 第一级只起优先权网络的作用,实际的操作由第二级芯片完成 还可由第二级扩展到第三级等,35,8237A的级联,36,DMA读把数据由存储器传送到外设 由MEMR*有效从存储器读出数据
15、,由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