微机原理与接口技术9章8237_第1页
微机原理与接口技术9章8237_第2页
微机原理与接口技术9章8237_第3页
微机原理与接口技术9章8237_第4页
微机原理与接口技术9章8237_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第九章.DMA技术8237,微机原理与接口技术,DMA技术,查询和中断方式时数据要经过CPU的累加器中转检查是否传送完毕,在程序中控制,由CPU执行修改内存地址,在程序中控制,由CPU执行,DMA方式时内存与高速外设直接交换数据,不需CPU干预,减少中间环节内存地址修改,传送结束报告,由硬件完成,第一节基本概念,一.DMA控制器在系统中的地位,(1)主控器DMAC工作在主动态,取代CPU获得总线控制权,向内存和外设发号施令.即它通过总线向内存或外设发出地址和读写信号.(2)受控器DMAC工作在被动态,接受CPU对它的控制和指挥,例如:对DMAC进行初始化,读取DMAC的状态.,第一节基本概念,一.DMA控制器在系统中的地位二.DMA传送过程,总线仲裁,DMAC,内存,系统总线,(2),(3),(4),(5),外设,(1),(6),(4),(7),(1)DREQ(2)HRQ(3)HLDA(4)DACK及读写信号(5)数据传送(6)EOP(7)撤消HRQ,DMA传送过程,外设通过DREQ向DMAC发出请求。DMAC通过HRQ向CPU请求。CPU应答,DMAC通过DACK应答。向存储器发出地址。向外设发出读命令,读出数据。向存储器发出写命令,存入数据地址加1,计数器加1,准备下一次传送,第一节基本概念,三、内部编程结构和外部联接(图9-4-3)4个通道4个16位寄存器基地址寄存器和当前地址寄存器、基字节计数器和当前字节计数器1个8位模式寄存器公用控制寄存器、状态寄存器,8237的内部逻辑,对于8237的内部逻辑重点在了解DMA通道的构成。每个通道有各自的作用:16位基地址寄存器和当前地址寄存器;16位基字节计数器和当前字节计数器;8位方式寄存器;1位DMA请求触发器;1位屏蔽触发器。,8237的引脚特性,DMA请求和应答信号:DREQ03:外设向8237的DMA请求,同时申请时DREQ0级别最高;HRQ:8237向CPU的DMA请求信号;DACK03:8237向外设的DMA应答;HLDA:CPU向8237的DMA应答信号;HRQ和HLDA为高电平有效DREQ和DACK的有效电平可由软件设置,8237的引脚特性,读写控制信号:MEMR和MEMW:输出信号,控制对存储器的读写。IOR和IOW:双向信号。输入时,是CPU向8237写控制字或读8237状态(被动状态)。输出时,8237控制对外设的读写。,8237的引脚特性,数据地址信号:DB07:既是CPU向8237的数据通道(输入或输出);主动状态时为向存储器输出的高8位地址A815。A07:分两部分:A03为双向,由CPU输入时选择8237的端口,输出时A03和A47一起输出存储器低8位地址。CS:片选信号,决定8237的高位地址。,8237的引脚特性,其他信号:READY:输入,高电平表示传送准备好。用来调整读写时序。EOP:DMA过程结束信号,负脉冲输出时表示传送结束。负脉冲输入时强制结束DMA过程。RESET:复位信号。,8237的引脚特性,数据地址信号:ADSTB:正脉冲输出,地址选通信号,将DB07中的高8位地址存入锁存器。AEN:高电平输出,地址输出允许。这两个信号将输出到锁存器来锁存高8位地址。AEN信号也将在DMA传送时禁止其他设备占用总线。,DMA系统的组成,DMA控制器:产生传送所需要的地址和控制信号。页面地址寄存器:存放高位地址。对8086系统需要存放4位地址,以便和DMA控制器所产生的16位地址构成20位物理地址。若是80286系统,就要存储8位高位地址了。锁存器:存放DMA控制器给存储器的高8位地址。,页面寄存器,8237,IOR,MEMR,MEMW,DREQ1,DACK0,DREQ0,DACK1,IOW,A0A7,RD,WR,RD,WR,DB0DB7,A16A19,A8A15,A0A7,CPU,A16A19,锁存器,AD0AD7,A0A3,RD,WR,HRQ,HLDA,HOLD,HLDA,RAM,外设,D0D7,ADSTB,DMA控制器的两种状态,被动状态:DMA控制器受CPU控制的状态。主要是对DMA控制器进行初始化编程。主动状态:DMA控制数据传送的状态。它既发出IOR或IOW控制外设,也发出MEMR或MEMW信号控制存储器。,页面寄存器,8237,IOR,MEMR,MEMW,DREQ1,DACK0,DREQ0,DACK1,IOW,CS,DB0DB7,A16A19,CPU,A16A19,译码器,AD0AD7,A0A3,RD,WR,HRQ,HLDA,HOLD,HLDA,A0A3,被动状态,页面寄存器,8237,IOR,MEMR,MEMW,DREQ1,DACK0,DREQ0,DACK1,IOW,A0A7,RD,WR,RD,WR,DB0DB7,A16A19,A8A15,A0A7,锁存器,A0A3,HRQ,HLDA,RAM,外设,D0D7,主动状态,ADSTB,8237的工作模式,单一传送:每次DMA过程只传送一个数据;成组传送:一次传送整个数据块。直到计数器的值减为0。请求传送:也时传送数据块,只是在每次传送后,查询DREQ,若有效就继续,否则就挂起。级联模式:多片级联,增加DMA通道数。,8237的工作类型,DMA读:内存外设DMA写:外设内存DMA校验,只对芯片内部的读写功能进行校验,不进行实际的数据传送。存储器存储器传送。这时要占用两个通道:通道0作为数据源,通道1作为目的。这时的数据传送要经过8237的数据暂存器。在PC机中没有使用。,8237的初始化编程,各通道初始化:-初始化地址寄存器(基地址和当前地址);-初始化字节计数器(基字节和当前字节);-初始化8位方式寄存器;-初始化1位DMA请求触发器;-初始化1位屏蔽触发器(两种方式)。整个8237初始化-初始化命令寄存器软命令-清先/后触发器、总清、总清屏蔽,8237的初始化编程,初始化基地址和当前地址寄存器:端口地址为0、2、4、6;只有16位输入一种方式;先低字节,后高字节,条件是开始写入时,先/后触发器的状态为0。每写入一个字节,其状态翻转一次。当前地址寄存器的值,每传送一个字节后会自动加1或减1。,8237的初始化编程,初始化基字节和当前字节寄存器:端口地址为1、3、5、7;其余和地址寄存器相同。,8237的初始化编程,D7D6操作模式:00:询问方式、01:单一传送、10:成组传送、11:级联D5地址增减:0:地址加1、1:地址减1D4预置设置:0:非自动、1:自动预置D3D2传送类型:00:DMA校验、01:DMA读10:DMA写、11:无效D1D0通道选择:00:通道0、01:通道1、10:通道2、11:通道3,D7,D6,D5,D4,D2,D1,D0,D3,初始化通道方式寄存器(地址0BH),8237的初始化编程,D7D3:不用D2:屏蔽选择:0:不屏蔽、1:屏蔽D1D0:通道选择:00:通道0、01:通道1、10:通道2、11:通道3,D7,D6,D5,D4,D2,D1,D0,D3,初始化单一屏蔽寄存器(地址0AH),8237的初始化编程,D7D4:不用D3:通道3:0:不屏蔽、1:屏蔽D2:通道2:0:不屏蔽、1:屏蔽D1:通道1:0:不屏蔽、1:屏蔽D0:通道0:0:不屏蔽、1:屏蔽注:一次可以屏蔽(不屏蔽)4个通道,D7,D6,D5,D4,D2,D1,D0,D3,初始化屏蔽寄存器(地址0FH),8237的初始化编程,D7D3:不用D2请求选择:0:不请求、1:请求DMA传送D1D0:通道选择:00:通道0、01:通道1、10:通道2、11:通道3注:可以通过软件方式申请DMA传送,D7,D6,D5,D4,D2,D1,D0,D3,初始化DMA请求寄存器(地址09H),8237的初始化编程,D0:0:禁止MM传送:1:允许MM传送D1:0:通道0地址不保持:1:通道0地址不变D2:0:允许工作、1:不允许工作D3:0:正常时序、1:压缩时序D4:0:固定优先级、1:循环优先级D5:0:滞后写、1:扩展写D6:0:DREQ高电平有效、1:低电平有效D7:0:DACK低电平有效、1:高电平有效,D7,D6,D5,D4,D2,D1,D0,D3,初始化命令寄存器(地址08H),8237的初始化编程,注1:D1只有D0=1时才有意义;注2:D1=1,是将同一个数据传送到目的区;注3:正常时序读信号为两个T,压缩时序为一个T周期;注4:滞后写是正常操作,扩展写是将写信号也扩展为2T;注5:同样的设置值,对DACK和DREQ的设置刚好相反。,D7,D6,D5,D4,D2,D1,D0,D3,初始化命令寄存器(地址08H),8237的初始化编程,清先/后触发器命令(地址0CH)作用:使先/后触发器置0,以便对地址寄存器和字节寄存器写入初值。特点:只要输出命令,输出的值并不重要:OUT(DMA+0CH),AL注:DMA为8237的高位地址,8237的初始化编程,总清命令(地址0DH)作用:软件复位。控制位置0,屏蔽位置1。特点:只要输出命令,输出的值并不重要:OUT(DMA+0DH),AL注:DMA为8237的高位地址,8237的初始化编程,总清屏蔽命令(地址0EH)作用:使4个通道的4个屏蔽位全部清0,即都不屏蔽。特点:只要输出命令,输出的值并不重要:OUT(DMA+0EH),AL注:DMA为8237的高位地址,8237的初始化编程,D7D4:反映哪个通道还有未处理的DMA申请:1有申请、0:无申请;D3D0:反映哪个通道的DMA过程已结束:1:已结束、0:未结束。,D7,D6,D5,D4,D2,D1,D0,D3,状态寄存器(地址08H),空闲周期SI,被动态,无DMA请求阶段,空闲周期但实际并不空闲,不停的检测、采样两个信号DREQi,确定是否有通道请求DMA服务CS#,判定CPU是否要对自己进行读写,8237工作周期,请求应答周期S0(有效周期),采样到DREQi信号,向CPU总线请求信号HRQ,由此进入S0周期在此阶段,等待CPU的应答信号HLDA,此时,CPU仍可访问8237(因为总线控制权还没有下放)直到得到HLDA信号,本周期结束本周期可看作是8237从被动态到主动态的过渡时期,8237的操作时序,三种操作周期SI(Sidle)空闲周期,被动态S0请求应答周期S1S4(SW)DMA操作周期,主动态,DMA操作周期,完整的DMA传送周期包括S1、S2、S3、S4四态慢速设备:Sw状态MM传送:8态S1:标志获得系统总线控制权;把地址送到总线上去S2:发出DACK选中设备S3:Read/Write;S4:收尾,内部状态流程,SI,S4,8237的工作时序,8237的编程步骤,输出主清除命令写入基与现行地址寄存器写入基与现行字节数寄存器写入模式寄存器写入屏蔽寄存器写入控制寄存器写入请求寄存器,8237的编程步骤,用通道0,由外设输入32K字节数据块,传送至内存8000H开始的区域(增量传送),块传送,DREQ和DACK为高电平有效。确定模式控制字是84H。方式控制字是A0H。屏蔽字是00H。,out5dh,al;输出主清除命令moval,00hout50h,al;基地址低8位moval,80hout50h,al;基地址高8位moval,00hout51h,almoval,80h;字节计数器赋值,32Kout51h,almoval,84h;输出模式字out5bh,almoval,00h;输出屏蔽字out5ah,almoval,0a0hout58h,al;输出控制字,DMA系统,DMA传送是外设和存储器传送数据的各种方式中速度最快的一种。DMA传送是在脱离CPU控制的情况下进行的。传送过程不执行任何指令。DMA传送必须有DMA控制器的支持,由DMA控制器产生产生传送的控制信号。,DMA系统,DMA控制器控制数据传送需要有什么功能?需要DMA控制器能产生数据传送所需的地址和各种控制信号:RD、WR等。DMA控制器控制为什么能加速数据传送?因为不需要执行数据传送指令,特别是那些可以不需要的指令。,DMA接口电路,DMA接口举例:利用DMA通道5进行数据传输。外设的DMAREQ既用来锁存数据,也用来产生DMA请求信号。DMA响应后,DACK5清除DMA触发器的请求输出

温馨提示

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

评论

0/150

提交评论