微机原理与接口技术:DMA传输 详细笔记
文章目录
- 1.DMA传输原理
- 1.1.DMA控制器
- 1.2.DMA传输过程
- 1.3.8086系统中的DMA信号
- 2.8237A的内部结构和外部信号
- 2.1.8237A芯片的主要特点
- 2.2.8237A的工作方式
- 2.2.1.单字节传输方式
- 2.2.2.块传输方式
- 2.2.3.请求传输方式
- 2.2.4.级联传输方式
- 2.3.8237A的传输类型
- 2.4.8237A的内部结构
- 2.4.1.DMA通道
- 2.4.2.读写逻辑
- 2.4.3.控制逻辑
- 2.4.4.锁存缓冲器(外接)
- 2.4.5.页面地址寄存器(外接)
- 2.5.8237A的对外连接信号
- 2.5.1.8237A作为从模块时的引脚信号
- 2.5.2.8237A作为主模块时的引脚信号
直接存储器传送DMA定义:外部设备的数据不经过CPU,直接送入内存储器或内存储器不经过CPU直接送往外部设备。
DMA周期:
- 一次DMA传送的时间称为DMA周期
- DMA过程完全由硬件实现,因此速度很快,时间上大致相当于一个总线读写周期,因此能够满足高速外部设备数据传输的需要。
1.DMA传输原理
1.1.DMA控制器
DMA控制器的定义:用来协调外部设备接口和内存储器的数据传输的专门器件,简称为DMAC。
DMAC内部的寄存器:
- 地址寄存器:存放DMA传输时存放I/O数据的内存存储单元地址。
- 字节计数器:存放DMA传输的字节数。
- 控制寄存器:存放由CPU设定的DMA传输方式和控制命令。
- 状态寄存器:存放DMAC当前的状态,包括有无DMA请求和是否结束等。
DMAC的功能分类:
- 总线从模块:CPU对DMAC进行预置操作,也就是向DMAC写入内存传送区的首地址、传送字节数和控制字时,DMAC相当于一个外设接口,称为总线从模块。
- 总线主模块:进行DMA传输时,CPU暂停对系统总线的控制,DMAC获得了对总线的控制权,这时的DMAC称为总线主模块。
1.2.DMA传输过程
- 外部设备准备就绪,需要进行DMA操作时,向DMA控制器发出DMA请求信号。DMA控制器受到这个信号后,向CPU发出总线请求信号。
- CPU接到总线请求信号后,如果允许,会在当前总线周期结束后,发出总线应答信号,同时放弃对总线的控制。这时,DMA控制器开始实行对总线的控制。
- DMAC将内部地址寄存器的内容通过地址总线送往内存储器。对于数据输入过程,向外部设备发出外部设备读控制信号,同时向存储器发出存储器写信号。在这两个信号的作用下,一字节的数据从外设接口送往数据总线,而存储器的数据总线接受这个数据,写入由地址总线上的地址指定的内存单元。对于数据输出过程恰好相反。DMAC向存储器发出读命令,向外部设备发出写命令,一字节的数据从存储器传送到外部设备接口,完成一次输出的操作。
- 传送一个字节之后,DMAC自动对地址寄存器的内容进行修改,指向下一个要传送的字节。同时,将字节计数器减一,记录尚未完成的传输次数。
- 一次数据传输结束,DMA控制器向CPU撤销总线请求信号,CPU于是也撤销允许使用总线的总线应答信号,CPU收回对总线的控制权。
1.3.8086系统中的DMA信号
- 最小模式:CPU通过HOLD引脚接收DMA控制器的总线请求;在HLDA引脚上发出对总线请求的允许信号。
- 最大模式:通过RQ/GT0和RQ/GT1引脚接收DMA控制器的总线请求并在同一根线上发送对总线请求的允许信号。其中前者有更高的优先权。
2.8237A的内部结构和外部信号
8237A概述:
- Intel公司生产的一种40引脚双列直插式大规模集成电路。
- 是一个可编程DMA控制器,可以提供四个通道的DMA传输控制。
2.1.8237A芯片的主要特点
- 有4个完成独立的DMA通道,可分别进行编程,控制4台独立的外部设备。可以通过级联的方式进一步扩展DMA通道数。
- 每个通道的DMA请求均可分别允许和禁止,并对各个通道进行优先级排队。
- 数据块最大为64KB,每传送一个字节后使地址自动加1或减1。
- DMA请求可以由外部输入,也可以由软件设置。
- 可以进行从存储器到存储器的数据传输,用于对存储区域初始化。
2.2.8237A的工作方式
8237A共有四种工作方式可供选择。
2.2.1.单字节传输方式
- 工作特点:每完成一个字节的数据传输就会释放系统总线,一次DMA传输过程结束。收到一个新的DMA请求则重新申请总线并重复上述过程。
- 方式评价:这种方式不会对系统的运行产生大的影响。
2.2.2.块传输方式
- 工作特点:DMA控制器获得总线控制权后,可以连续进入多个DMA周期,进行多个字节的传输(最多64KB)。当传输完成或收到外部的强制停止命令才会释放总线而结束传输。
- 方式评价:这种方式会获得最高的数据传输速度,但是在数据传输期间CPU不能访问总线,因此如果传输的数据较多,这种方式会对系统工作产生一定的影响。
2.2.3.请求传输方式
- 工作特点:申请一次总线可以连续进行多个数据的传输,但是每传输一个字节的数据都需要检查信号确定是否可以继续传输,如果信号无效则需要暂停传输,等到信号变为有效时继续传输。
- 方式评价:这种方式允许外部设备由于发生某种原因的数据不连续,按照外部设备的最高速度进行数据传输,使用比较灵活。
2.2.4.级联传输方式
- 结构组成:将几个8237A进行级联,其中一个作为主片,其余作为从片,构成主从式DMA系统。一个主片最多连接四个从片。
- 工作方式:从片收到外部设备接口的DMA请求信号后,不是向CPU申请总线,而是向DMA控制器主片申请,再由主片向CPU申请。
2.3.8237A的传输类型
8237A可以进行四种类型的传输:
- DMA写传输(I/O→存储器)
- DMA读传输(存储器→I/O)
- DMA检验(完成某种校验过程,测试DMA控制器的状态,不进行数据传送)
- 存储器到存储器的传输
2.4.8237A的内部结构
8237A的内部结构分为两部分:4个DMA通道和一个公共控制部分。其中公共控制部分由读写逻辑和控制逻辑组成。
2.4.1.DMA通道
- 每个通道的寄存器:16位地址寄存器、16位字节计数器、8位方式寄存器、1位DMA请求触发器、1位屏蔽触发器。
- 共用的寄存器:4个通道共用一个控制寄存器和一个状态寄存器。
- 使用要求:在使用DMA通道工作之前,必须对相应的寄存器进行初始化设置。
- 地址寄存器:由基地址寄存器和当前地址寄存器组成。CPU编程时,将本通道DMA传输的地址初值写入基地址寄存器,再由8237A传送到当前地址寄存器。当前地址寄存器中的内容在每个字节的DMA传输后都会被修改。CPU可以通过两次输入指令读出当前地址寄存器中的内容(每一次读8位),但是基地址寄存器中的值不能被读出且一直保持初值。
- 字节计数器:由基本字节计数器和当前字节计数器组成。编程时由指令把DMA传输的字节数写入基本字节计数器,继而传送到当前字节计数器。每一次DMA传输后当前字节计数器的值都会被修改。同样,只有当前计数器的值才能由CPU通过两次输入指令读出。
2.4.2.读写逻辑
- 作为从模块时的读写逻辑:读写逻辑电路接收CPU的读(#IOR)写(#IOW)以及由地址译码电路产生的#CS信号,对地址总线低四位A3-A0进行译码。在#IOW有效时,把数据总线的内容写入所寻址的寄存器;在#IOR有效时,把被选择的寄存器的内容送到数据总线上。
- 作为主模块时的读写逻辑:如果是DMA写周期,读写逻辑产生#IOR,控制逻辑产生存储器写信号,数据从外部设备接口传送到存储器单元;如果是DMA读周期,读写逻辑产生#IOW,控制逻辑产生存储器读信号,数据从存储器单元传送到外部设备接口。
2.4.3.控制逻辑
- 初始化时,CPU通过对方式寄存器的设置,确定控制逻辑的操作方式。
- DMA周期内,控制逻辑通过发出控制信号和16位要存取的存储单元地址来控制DMA过程。
2.4.4.锁存缓冲器(外接)
- 使用8237A工作时,需要外接一个8位的地址锁存缓冲器。
- DMA传送之前,8237A从DB7-DB0把存储器地址的A15-A8写入这个缓冲器。
- DMA周期中,8237A通过引脚A7-A0发送存储器地址的低8位,同时将锁存器中的地址通过三态门送往系统地址总线的A15-A8。
2.4.5.页面地址寄存器(外接)
- 8237A只控制了地址总线的16位,为了控制8086系统20位的地址,需要外接一个4位的页面地址寄存器,它的值由CPU写入。
- 8237A发送低16位地址时,高4位的地址从页面地址寄存器发往地址总线A19-A16。
2.5.8237A的对外连接信号
2.5.1.8237A作为从模块时的引脚信号
- RESET:复位输入端。复位时,屏蔽寄存器被置一,其他寄存器均清零。
- #CS:片选输入端。由A15-A4译码得到。信号有效时CPU可以对8237A进行读写操作。
- A3-A0:最低的四位地址线。DMAC作为从模块时作为输入端,用来选择DMAC内部的16个端口。
- #IOR:外部设备读信号。DMAC作为从模块时作为输入控制信号,信号有效时CPU读取DMAC中内部寄存器的值。
- #IOW:外部设备写信号。DMAC作为从模块时为输入控制信号,信号有效时CPU向DMAC的内部寄存器写入信息进行预置。
- DB7-DB0:8位双向三态数据线。DMAC作为从模块时,CPU通过数据线对8237A进行读写。
2.5.2.8237A作为主模块时的引脚信号
地址信号:
- A3-A0:DMAC作为主模块时,这四个信号处于输出状态,提供存储器的最低四位地址。
- A7-A4:这4位地址线引脚始终处于输出状态或浮空状态。它们在DMA传输时提供存储器的中间4位地址。
- DB7-DB0:DMAC作为主模块时,DB7-DB0输出当前地址寄存器中的高8位地址,并通过信号ADSTB打入外部锁存器,和A7-A0输出的低8位地址构成16位地址。
- ADSTB:地址选通输出信号。信号有效时,将DMAC当前地址寄存器中的高8位地址经过DB7-DB0送到外部锁存器。
- AEN:地址允许输出信号。AEN使得地址锁存器中锁存的高8位地址以及页面地址寄存器的4位一起送到地址总线上,与芯片直接输出的8位地址共同构成内存储器的20位地址。AEN信号也保证了地址总线上的信号来自DMA控制器而不是CPU。
对存储器/外部设备接口的读写控制信号:
- #IOR:DMAC作为主模块时,#IOR输出外部设备接口的读控制信号。信号有效时,I/O接口部件中的数据被读出送往数据总线。
- #IOW:DMAC作为主模块时,#IOW输出外部设备接口的写控制信号。信号有效时,存储器中读出的数据被写入I/O端口中。
- READY:准备就绪输入信号。当所用的存储器或I/O接口的速度比较慢,需要延长传输时间时,READY信号无效,8237A就会自动插入等待周期;数据准备就绪时,信号变为高电平,表示可以进行数据传输。
- #MEMR:存储器读输出信号。当信号有效时,所选中的存储器单元的内容被读出,发送到数据总线。
- #MEMW:存储器写输出信号。当信号有效时,数据总线上的内容被写入选中的存储单元。
DMA联络信号:
- DREQ3-DREQ0:通道DMA请求输入信号,每个通道对应一个DREQ信号。外部设备要求进行DMA传输时需要使得DREQ处于有效电平,直到DMAC控制器送来DMA相应信号DACK后,I/O接口才撤除DREQ的有效电平。
- DACK3-DACK0:通道DMA应答输出信号。这是DMAC送给I/O接口的回答信号,每个通道对应一个DACK信号。DMAC获得CPU送来的总线允许信号HLDA后,便产生DACK信号送到相应的外部设备接口。该信号相当于I/O接口的地址选择信号。
- HRQ:总线请求输出信号。8237A在接收到外设接口发来的DREQ信号后,如果该通道的DMA请求没有被屏蔽,则DMA控制器的HRQ端输出有效电平,向CPU发出总线请求。
- HLDA:总线响应输入信号。DMAC向CPU发总线请求信号HRQ后,CPU发回这个总线响应信号。8237A收到该信号后便获得了总线控制权。
- #EOP:DMA传输过程结束双向信号。当DMAC任意通道计数结束时会从#EOP输出一个有效电平,作为DMA传输结束信号。可以用这个信号向CPU申请中断,以便及时处理这个事件。另一方面,如果从外部向DMAC发送一个#EOP信号,则DMA传输过程被强制性结束。
其他引脚信号:
- CLK:时钟输入端信号。
- 电源和地:提供8237A工作所需的+5V电源。
微机原理与接口技术:DMA传输 详细笔记相关推荐
- 《微机原理与接口技术》期末复习笔记
微机原理与接口技术 第01章 微机原理概述 基本知识 CPU:中央处理单元(Central Processor Unit),处理器,能够分析和执行指令的部件,能分析和执行指令的芯片就是CPU MPU: ...
- 微机原理与接口技术--西安电子科技大学-笔记一
微机原理与接口技术-西安电子科技大学 绪论 微型计算机系统组成 硬件子系统与软件 早期计算机硬件组成–ALU-----控制器控制ALU运算–ALU运算的数据 存储器中的数据被控制器控制器送到ALU 输 ...
- 微型计算机硬盘接口主要分为,北京交通大学微机原理与接口技术_期末复习题_图文...
北京交通大学微机原理与接口技术_期末复习题_图文 更新时间:2017/1/26 18:34:00 浏览量:1285 手机版 "微机原理与接口技术"2008年期末考试复习题 1. ...
- 微型计算机接口技术2018真题,2018年微机原理及接口技术复习题.doc
2018年微机原理及接口技术复习题 2018年<微机原理及接口>复习题 填空题 1 .中断的响应过程. CPU与外设的输入.输出方式包括程序控制方式..DMA方式.8086存储器采用的是分 ...
- 微机原理与接口技术的基础知识
微机原理与接口技术 微控制单元 (Microcontroller Unit:MCU) ,又称单片微型计算机 (Single Chip Microcomputer )或者单片机,是把中央处理器 (Cen ...
- 微型计算机与接口技术答案,微机原理及接口技术-习题答案
微机原理及接口技术习题及答案 ·25· 8088系统 BUSD0-D7A 0 A 12MEMW MEMR SRAM 6264 D0-D7 A 0 A 12WE CS2 OE · · ·+5V A 19 ...
- 微型计算机原理周明德答案,微机原理与接口技术周明德主编习题答案
<微机原理与接口技术>试题(第一套) 一.选择题(每题3分,共30分) 1.8288在8086/8088组成的计算机中的作用是( ② ). ① 数据缓冲器 ② 总线控制器 ③ 地址锁存器 ...
- 微型计算机原理课本,微机原理与接口技术课本.doc
微机原理与接口技术课本 第1章 微型计算机基础 1.1 计算机中数的表示和运算 1.1.1 计算机中的数制及转换 在微型计算机中,常见和常使用的数制¨十进制¨二进制¨八进制¨ 十六进制等. 1.十进制 ...
- 长安大学微型计算机原理与接口技术答案,长安大学微机原理与接口技术A卷答案...
<微机原理与接口技术>试卷A 评分标准及参考答案 一.每空1分,共20分 1.01111011 10000011 2.F7.DCH 001001000111.10000110 BCD 3. ...
- 《微机原理及接口技术》第08章在线测试
<微机原理及接口技术>第08章在线测试 <微机原理及接口技术>第08章在线测试 剩余时间: 59:54 答题须知:1.本卷满分20分. 2.答完题后, ...
最新文章
- listview的divider边距
- 2---信息系统集成专业技术知识(精简题目)
- 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te
- 创业第一天,有三AI扔出了深度学习的150多篇文章和10多个专栏
- myeclipse写简单bbs代码_RabbitMQ实现即时通讯居然如此简单!连后端代码都省得写了?...
- idea java 快捷键_图示Javahtml5开发中IDEA的一些常用默认快捷键
- 在mysql中存储生日,php中计算今天是否为用户生日
- php think run 后台运行问题
- 一套完整仿拉勾网HTML静态网页模板(含38个独立HTML)
- mysql execute stmt_mysql_stmt_execute()--MySql数据库
- 金融衍生品 matlab,Matlab金融工程教程金融衍生品计算PPT精选文档
- DHTMLX JS Gantt Library 7.1.13
- 扫描工具nmap、ncat
- html win10虚拟键盘,笔记本电脑win10虚拟键盘打开的方法
- HMM模型及相关算法
- php 微盟,微盟开放授权并获取ACCESS_TOKEN方法(新版)
- 商品条码三大编码原则,您知道吗?
- 2021/03/27 K8S集群日志与监控
- android定位的实现
- 云呐|什么是动环监控?动环监控系统的监控对象有哪些?
热门文章
- PowerDesigner提示Existence of index、key、reference错误
- 选择“食品装箱机”应该考虑的几个方面
- 2019.2.20《菜根谭》洪应明 明朝
- Vue Avoid using non-primitive value as key, use string/number value instead.
- 在甲骨文云容器实例(Container Instances)上部署Oracle Linux 8 Desktop
- 前端Base64编码知识,一文打尽
- 计算机组成原理-组成篇(上)
- C# 代码规范和质量检查工具 StyleCop.Analyzers
- 华为HDG苏州站:重体验,创新品 一切从开发者的角度出发
- Matlab群体智能优化算法之基于模拟烹饪培训优化算法(CBOA)