第八章DMA控制器2概述.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十八讲:DMA控制器Intel8237 重点:DMA 控制器芯片8237的内部寄存器,端口地址,编程与应用。 一、 8237的内部寄存器组 8237有4个独立的DMA通道,有许多内部寄存器。前面表6-1已经给出了这些寄存器的名称、长度和数量,我们来详细介绍各个寄存器的功能和作用。 1、基地址寄存器 用以存放16位地址,只可写入而不能读出。在编程时,与当前地址寄存器同时写入某一地址,在8237进行DMA数据传送的工作过程中,内容不发生变化,只是在自动预置时,重新将初始地址写到当前地址寄存器中去。 2、基字节数寄存器 用以存放相应通道需要传送数据的字节数,只可写入而不能读出。编程时与当前字节数寄存器同时写入要传送数据的字节数。在8237进行DMA数据传送的工作过程中,内容保持不变,在自动预置时,将初始字节数重新写到当前字节数寄存器中去。 3、当前地址寄存器 存放DMA传送期间的地址值。每次传送后自动加l或减l。CPU可以对其进行读写操作。选择自动预置时,每当字节计数值减为0或外部有效后,自动将基地址寄存器的内容写入当前地址寄存器中,恢复其初始值。 4、当前字节数寄存器 存放当前的字节数。每传送一个字节,该寄存器的内容减1。当计数值减为0或接收到来自外部的信号时,会自动将基字节数寄存器的内容写入该寄存器,恢复其初始计数值,即为自动预置。 5、地址暂存寄存器和字节数暂存寄存器 这两个16位的寄存器和CPU不直接发生关系,我们也不必要对其进行读/写操作,因而对如何使用8237没有影响。 6、方式寄存器 每个通道有一个8位的方式寄存器,但是它们占用同一个端口地址,用来存放方式字,依靠方式控制字本身的特征位来区分写入不同的通道,用来规定通道的工作方式,各位的作用如下 7.命令寄存器 8.请求寄存器 用于在软件控制下产生一个DMA请求,就如同外部DREQ请求一样。D0D1用来表示向不同通道发出DMA请求。在软件编程时,这些请求是不可屏蔽的,利用命令字即可实现使8237按照命令字的D0D1所指的通道,完成D2所规定的操作,这种软件请求只用于通道工作在数据块传送方式之下。 9.屏蔽寄存器 8237的屏蔽字有两种形式: ①单个通道屏蔽字。这种屏蔽字的格式如图6-9所示。利用这个屏蔽字,每次只能选择一个通道。其中D0D1的编码指示所选的通道,D2=l表示禁止该通道接收DREQ请求,当D2=0时允许DREQ请求。 ②四通道屏蔽字。可以利用这个屏蔽字同时对8237的4个通道的屏蔽字进行操作,故又称为主屏蔽字。该屏蔽字的格式如图6-10所示。它与单通道屏蔽字占用不同的I/O接口地址,以此加以区分。 10.状态寄存器 状态寄存器存放各通道的状态,CPU读出其内容后,可得知8237的工作状况。主要有:通道计数已达到计数终点—对应位为1;通道的DMA请求尚未处理—对应位为1。 11.暂存寄存器 存储器到存储器传送过程中数据的暂存。 12.字节指针触发器 一个特殊的触发器,用于各16位寄存器的读或写低、高字节。此触发器状态为0时,进行低字节操作。低字节读/写完成后,字节指针触发器会自动置1,再操作一次清零。利用这种机制,可进行双字节读写操作,16位寄存器可仅占用一个外设端口地址,高、低字节共用。 二、8237的编程及应用 1.8237的寻址及连接 8237 4个通道中的寄存器及其它各种寄存器的寻址编码如表所示。从表中可以看到,各通道的寄存器通过CS*和地址线A3~A0规定不同的地址,高低字节再由字节指针触发器来决定。其中有的寄存器是可读可写的,而有的寄存器是只写的。 利用CS*和A3~A0规定寄存器的地址,再利用IOR*或IOW*控制对其进行读或写操作。注意,方式寄存器每通道一个,仅分配一个端口地址,由方式控制字的D1和D0位来区分不同通道。 CS*A3 A2A1A0IOR*IOW* 功 能 0 1 0 0 0 0 1 读状态寄存器 0 1 0 0 0 1 0 写命令寄存器 0 1 0 0 1 1 0 写请求寄存器 0 1 0 1 0 1 0 写单通道屏蔽寄存器 0 1 0 1 1 1 0 写方式寄存器 0 1 1 0 0 1 0 字节指针触发器清 0 1 1 0 1 0 1 读暂存寄存器 0 1 1 0 1 1 0 总清 0 1 1 1 0 1 0

文档评论(0)

花仙子 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档