- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DMA(Direct memory Access)概述 微机系统中各种常用的数据输入输出方法,有程控法(包括无条件及条件传送方式)和中断法,这些方法适用于CPU与慢速及中速外设之间的数据交换。但当高速外设要与系统内存或者要在系统内存的不同区域之间进行大量数据的快速传送时,就在一定程度上限制了数据传送的速率。以Intel8088CPU为例,CPU从内存(或外设)读数据到累加器,然后再写到外设端口(或内存)中,若包括修改内存地址,判断数据块是否传送完,Intel8088CPU(时钟接近5MHz)传送一个字节约需要几十微秒的时间,由此可大致估计出用程控及中断的方式来进行数据传送,其数据传送速率大约为每秒几十KB字节。 为了提高数据传送的速率,人们提出了直接存储器存取(DMA)的数据传送控制方式,即在一定时间段内,由DMA控制器取代CPU,获得总线控制权,来实现内存与外设或者内存的不同区域之间大量数据的快速传送。 典型的DMAC工作电路如图 DMA数据传送的工作过程 外设向DMAC发出DMA传送请求。 DMAC通过连接到CPU的HOLD信号向CPU提出DMA请求。 CPU在完成当前总线操作后会立即对DMA请求做出响应。CPU的响应包括两个方面:一方面,CPU将控制总线、数据总线和地址总线浮空,即放弃对这些总线的控制权;另一方面,CPU将有效的HLDA信号加到DMAC上,用来通知DMAC,CPU已经放弃了总线控制权。 待CPU放弃了总线控制权后,由DMAC接管系统总线的控制权,并向外设送出DMA的响应信号。 由DMAC送出地址信号和控制信号,实现外设与内存或内存不同区域之间大量数据的快速传送。 DMAC将规定的数据字节传送完之后,通过向CPU发HOLD信号,撤消对CPU的DMA请求。CPU收到此信号,一方面使HLDA无效,另一方面又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。 DMA控制器 教学重点 8237A的工作方式 8237A寄存器组的作用 8237A寄存器组的编程 DMA控制器8237A 每个8237A芯片有4个DMA通道,就是有4个DMA控制器 每个DMA通道具有不同的优先权 每个DMA通道可以分别允许和禁止 每个DMA通道有4种工作方式 一次传送的最大长度可达64KB 多个8237A芯片可以级连,扩展通道数 8237A的内部结构和引脚 内部结构和外部引脚都相对比较复杂 应用观点,内部主要由两类寄存器组成 通道寄存器 控制和状态寄存器 8237的方框图 四个独立的DMA通道 每个通道都有一个16位的基地址寄存器,一个16位的基字节数计数器, 一个16位的当前地址寄存器和一个16位的当前字节数计数器及一个8位的方式寄存器,方式寄存器接收并保存来自于CPU的方式控制字,使本通道能够工作于不同的方式下; 定时及控制逻辑电路 对在DMA请求服务之前,CPU编程对给定的命令字和方式控制字进行设置,以确定DMA的工作方式,并控制产生所需要的定时信号 优先级编码逻辑 对通道进行优先级编码,在同时接收到不同通道的DMA请求时,能够确定相应的先后次序。通道的优先级可以通过编程确定为是固定的或者是循环的。 共用寄存器 除了每个通道中的寄存器之外,整个芯片还有一些共用的寄存器,包括: 1个8位的状态寄存器,1个8位的命令寄存器,1个8位的暂存寄存器,1个4位的屏蔽寄存器和1个4位的请求寄存器等,我们将对这些寄存器的功能与作用,作较为详细的介绍。 1. 请求与响应信号 DREQ0~DREQ3:DMA通道请求。当外设需要请求DMA服务时,将DREQ信号置成有效电平,并要保持到产生响应信号。 HRQ:总线请求。8237A输出有效的HRQ高电平,向CPU申请使用系统总线。 HLDA:总线响应。8237A接受来自CPU的响应信号HLDA,取得了总线的控制权。 DACK0~DACK3:DMA通道响应。8237A使请求服务的通道产生相应的DMA响应信号。 2. DMA传送控制信号 A0~A3:双向地址线。主态时:输出4位存储器地址。从态时: CPU访问DMAC时输入地址,选择芯片内部寄存器。 A4~A7: 地址线。输出4位存储器地址。 DB0~DB7:双向三态双功能线。从态时:数据线。主态时:地址/数据线分时复用;存贮器与存贮器的传送期间,用于数据传送。 ADSTB:地址选通。DMA传送开始时,输出高有效,把在DB0~DB7上输出的高8位地址锁存在外部锁存器中。 AEN:地址允许。输出高有效,将锁存的高8位地址送入系统总线,与芯片此时输出的低8位地址组成16位存储器地址。 2. DMA传送控制信号(续) MEMR*:存储器读。有效时将数据从存储器读出 MEMW*:存储器写。有效时将数据写入存储器 IO
文档评论(0)