第八章 DMA控制器_第1页
第八章 DMA控制器_第2页
第八章 DMA控制器_第3页
第八章 DMA控制器_第4页
第八章 DMA控制器_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

计算机硬件技术基础 主讲 焦明海东北大学计算中心 第八章DMA控制器 8 1DMA控制器功能 8 2DMA控制器8237A 8 1DMA控制器功能 DMA具有以下功能 1 工作要受CPU的管理 它和其它I O接口一样是CPU的管理对象 2 具有总线主设备 MASTER 的功能 一旦DMA请求并得到了总线控制权 它就成了总线主设备 它和CPU一样控制信息在总线上的传输 DMA传输 在DMA传送期间 DMAC将读取源口数据 并写到目的口 当一次传输或若干次传送完毕 DMAC就把总线控制权移交给CPU 它又变成从设备 CPU对8237A的编程初始化工作是通过8237A的端口进行的 8237A的端口是用低4位地址线A3A2A1A0编址 共有16个端口地址 16个端口地址分为以下两部分 1 00H 07H分配给4个通道的相应的16位寄存器 8237A的寄存器都是16位的 而8237A只有8位数据线 读 写操作均分两次进行 2 08H 0FH分配给其他寄存器 包括3条不使用数据总线而只利用端口地址进行操作的命令 8 2DMA控制器8237A 8 2 18237A的内部结构 8 2 28237A内部端口地址分配 A3A2A1A0寄存器说明0000通道0写 基地址寄存器和当前地址寄存器读 当前地址寄存器0001通道0写 基字节计数器和当前字节计数器读 当前字节计数器0010通道1写 基地址寄存器和当前地址寄存器读 当前地址寄存器0011通道1写 基字节计数器和当前字节计数器读 当前字节计数器0100通道2写 基地址寄存器和当前地址寄存器读 当前地址寄存器0101通道2写 基字节计数器和当前字节计数器读 当前字节计数器0110通道3写 基地址寄存器和当前地址寄存器读 当前地址寄存器0111通道3写 基字节计数器和当前字节计数器读 当前字节计数器 A3A2A1A0寄存器说明1000写 命令寄存器读 状态寄存器1001写 请求寄存器读 非法1010 A 写 一位屏蔽字寄存器读 非法1011 B 写 方式字寄存器读 非法1100 C 写 清除F触发器读 非法1101 D 写 8237A总清读 暂存寄存器1110 E 写 清除屏蔽寄存器读 非法1111 F 写 四位屏蔽字寄存器读 非法 8 2 28237A内部端口地址分配 8 2 3DMA控制器8237A的编程 方式字 命令字 8 2 3DMA控制器8237A的编程 1位屏蔽字 0 允许1 禁止DMA D1D000通道001通道110通道211通道3 8 2 3DMA控制器8237A的编程 1 控制命令 1 方式字写入端口地址0BH 主要功能 选择传送方式和传送类型 设置自动初始化方式和地址增量方向 2 命令字写入端口地址08H 主要功能 选择DREQ DACK有效极性 读 写时序 优先级编码方式等 3 请求字写入端口地址09H 主要功能 发生软件DMA请求 4 屏蔽字写入端口地址0AH或0FH 主要功能 允许或禁止通道的DMA请求 5 状态字从端口地址08H读出 主要功能 反映通道DMA请求状态和是否有TC信号 8 2 3DMA控制器8237A的编程 2 清除命令 清除命令不需通过数据总线 执行输出指令时 AL的内容可任意设置 1 清除字节指针命令 写入端口地址0CH 8237A数据线是8位的 所以16位数据分两次读 写 而且使用同一端口地址 2 主清除命令 写入端口地址0DH 使屏蔽寄存器各位置 1 外 其他各寄存器均被清 0 3 清除屏蔽寄存器命令 写入端口地址0EH 主要功能 将4个通道的屏蔽位清除 8 2 3DMA控制器8237A的编程 3 8237A的编程步骤 1 CPU发主清除命令 2 写入基地址及当前地址的值 3 写入基字节数和当前字节数的初值 4 写入方式字 5 写入屏蔽字 6 写入命令字 7 写入请求字 8 2 3DMA控制器8237A的编程 例 8237A数据块传送 设在某8086 8088系统中 用8237A通道1将内存1000H单元开始的24KB数据转存到硬盘中 1000H即为基地址初值 采用数据块方式传送 地址增量方式 只传送一便 设DREQ和DACK低电平有效 当A15 A4为000000000111时选中8237A 要求设计8237A通道1的初始化程序 分析 1 端口地址 A3 A0由8237A芯片内部译码 编码范围为0000 1111 再与A15 A4组合 则端口地址范围是0070H 007FH 2 传送字节数 24KB对应的16进制数为6000H 写入通道字节数计数器的值应为 6000H 1 5FFFH 8 2 4DMA控制器8237A的编程实例 分析 3 方式字 按题目要求 控制字的组合为 10001001B 4 一位屏蔽字 按题要求 一位屏蔽字组合为 00000001B 5 命令字 按题目要求 命令字的组合为01000000B 6 初始化程序如下 START MOVDX 007DH 发生清除命令OUTDX AL AL内容任意设置MOVDX 0072H 通道1 8 2 4DMA控制器8237A的编程实例 6 初始化程序如下 续上 MOVAL 00HOUTDX AL 送基地址和当前地址低8位MOVAL 10HOUTDX AL 送基地址和当前地址高8位MOVDX 0073HMOVAL 0FFH 送基值和当前计数值低8位OUTDX ALMOVAL 5FH 送基值和当前计数值高8位OUTDX AL 8 2 4DMA控制器8237A的编程实例 6 初始化程序如下 续上 MOVDX 007BHMOV

温馨提示

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

评论

0/150

提交评论