微型计算机原理与接口技术(第二版)第9章 DMA技术及DMA控制器_第1页
微型计算机原理与接口技术(第二版)第9章 DMA技术及DMA控制器_第2页
微型计算机原理与接口技术(第二版)第9章 DMA技术及DMA控制器_第3页
微型计算机原理与接口技术(第二版)第9章 DMA技术及DMA控制器_第4页
微型计算机原理与接口技术(第二版)第9章 DMA技术及DMA控制器_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

学习目标9.1.1DMA控制器的根本功能9.1.2DMA控制器的一般结构9.1.3DMA控制器的工作方式9.1.4DMA操作过程9.1.1DMA控制器的根本功能能接受CPU的编程,以便进行功能设定。能接收I/O接口的DMA请求,并向CPU发出总线请求信号,请求总线控制权。CPU响应总线请求之后,DMAC能接管总线的控制,进入DMA传送过程。能实现有效的寻址,即能输出地址信息并在数据传送过程中自动修改地址指针。能向内存储器和I/O接口发出相应的读/写控制信号。能控制传送数据的字节数,判定DMA传送是否结束。DMA结束时能释放总线,恢复CPU对总线的控制。存储器DMA通道I/O接口高速I/O设备DMAC9.1.2DMA控制器的一般结构存储器CPUI/O接口I/O外设总线请求总线响应DMA结束信号总线接口总线控制逻辑控制寄存器状态寄存器地址寄存器字节计数器DMA请求DMA响应9.1.3DMA控制器的工作方式每次DMA操作只传送一个字节。每次DMA操作连续传送一组数据。类似于块传送方式,只是当外设发来的DREQ无效时暂停DMA操作,有效时继续。这种方式可以扩展系统中的DMA通道数量。〔1〕单字节传送方式〔2〕块传送方式〔组传送方式〕〔3〕请求传送方式〔4〕级联传送方式9.1.3DMA控制器的工作方式每次DMA操作只传送一个字节。每次DMA操作连续传送一组数据。类似于块传送方式,只是当外设发来的DREQ无效时暂停DMA操作,有效时继续。这种方式可以扩展系统中的DMA通道数量。(1)单字节传送方式(2)块传送方式(组传送方式)(3)请求传送方式(4)级联传送方式HLDAHOLDCPUHRQHLDADREQDACKDREQDACK一级DMACHRQHLDADREQDACKDREQDACK二级DMACHRQHLDADREQDACKDREQDACK二级DMACI/O接口I/O接口I/O接口I/O接口………9.1.4DMA操作过程CPU对DMAC初始化,送入存储器起始地址、数据块长度。从I/O接口向DMAC发出DMA请求信号DREQ。DMAC向CPU发出总线请求HRQ。CPU结束现行总线周期后向DMAC回送总线响应信号HLDA。CPU让出控制总线、地址总线、数据总线,由DMAC控制。DMAC向外部设备发出DMA响应信号DACK。进行DMA传送:DMAC向I/O接口发出读信号,数据读到DB上,通过AB发送存储器地址,通过CB向存储器发出写信号,DB上的数据写入指定的存储器单元。DMAC修改内部地址寄存器+1或-1,字节计数器-1。重复第7、8步,直至设定的字节数传送完毕。DMAC撤消HRQ信号,释放总线,CPU重新控制总线。〔以数据由外部设备向存储器输入为例〕9.2可编程DMA控制器8237A9.2.18237A的主要特性9.2.28237A的内部结构9.2.38237A的引脚功能9.2.48237A的操作方式9.2.58237A的编程9.2.18237A的主要特性

9.2.28237A的内部结构9.2.28237A的内部结构1.时序与控制逻辑2.优先级编码及控制逻辑3.命令控制逻辑4.数据和地址缓冲器组5.内部存放器组

8237A从态时受CPU的控制,时序与控制逻辑电路接受系统送来的时钟、复位、片选和读/写控制等信号,完成相应的内部控制操作。

8237A主态时,向存储器或I/O接口发出读/写等各种控制信号。根据CPU对8237A初始化时的设置要求,对同时提出DMA请求的多个通道进行优先级次序裁决,以确定优先级最高的通道。优先级高的设备在效劳时,其他低级别的通道请求均被禁止,直至高优先级通道的效劳结束。

8237A从态时,DB7~DB0用于传输CPU要对其读/写的数据信息,主态时用于向存储器送出高位地址。引脚A7~A4、A3~A0为地址线,在主态时用于向存储器送出低位地址,从态时CPU通过A3~A0引脚对8237A进行内部存放器选择。8237A内部有4个DMA通道,每个通道各有一个16位的基地址存放器、基字节计数器、当前地址存放器、当前字节计数器,及一个6位的工作方式存放器。片内还有可编程的命令存放器、屏蔽存放器、请求存放器、状态存放器和暂存存放器各1个,不可编程的计数暂存器和地址暂存器各1个。名称位数数量CPU访问方式名称位数数量CPU访问方式基地址寄存器164写命令寄存器81写基字节计数器164写工作方式寄存器64写当前地址寄存器164读/写屏蔽寄存器41写当前字节计数器164读/写请求寄存器41写地址暂存器161不能访问状态寄存器81读计数暂存器161不能访问暂存寄存器81读1234567891011121314151617181920IORIOWMEMRMEMWNCREADYHLDAADSTBAENHRQCSCLKRESETDACK2DACK3DREQ3DREQ2DREQ1DREQ0GND4039383736353433323130292827262524232221A7A6A5A4EOPA3A2A1A0VccDB0DB1DB2DB3DB4DACK0DACK1DB5DB6DB78237A9.2.38237A的引脚功能DREQ(来自I/O接口)HLDA(来自CPU)SIS0S1S2S3S4SwSI单字节传送组传送S0空闲周期有效周期9.2.48237A的操作方式1.8237A的操作周期从时序上看,8237A可以有2个操作周期:空闲周期〔从态〕有效周期〔主态〕,有效周期又称DMA周期SISI单字节传送组传送S0S0DREQ(来自I/O接口)HLDA(来自CPU)S1S2S3S4Sw空闲状态请求应答状态数据传送状态9.2.48237A的操作方式2.8237工作方式3.8237传送类型

单字节传送方式

请求传送方式

数据块传送方式

级联传送方式DMA读:将数据由存储器传送到外设。DMA写:将数据由外设传送到存储器。DMA校验:一种空操作,产生时序、产生地址信号,但不进行传送,而外设可以利用这样的时序进行DMA校验。9.2.58237A的编程1.8237A内部存放器的主要功能及格式8237A内部寄存器寻址4个通道的屏蔽寄存器——

清除4个通道的屏蔽位——

主清除命令暂存寄存器

清除先/后触发器——

工作方式寄存器——

单通道屏蔽寄存器——

请求寄存器——

命令寄存器状态寄存器通道3基(当前)字节计数器通道3当前字节计数器通道3基(当前)地址寄存器通道3当前地址寄存器通道2基(当前)字节计数器通道2当前字节计数器通道2基(当前)地址寄存器通道2当前地址寄存器通道1基(当前)字节计数器通道1当前字节计数器通道1基(当前)地址寄存器通道1当前地址寄存器通道0基(当前)字节计数器通道0当前字节计数器通道0基(当前)地址寄存器通道0当前地址寄存器

DMA+1111DMA+1110DMA+1101DMA+1100DMA+1011DMA+1010DMA+1001DMA+1000DMA+0111DMA+0110DMA+0101DMA+0100DMA+0011DMA+0010DMA+0001DMA+0000A3A2A1A0〔1〕基地址存放器9.2.58237A的编程每个通道各有一个16位的基地址存放器,用于存放本通道DMA传送时的存储器起始单元地址,在8237A初始化时由CPU写入。〔2〕当前地址存放器在初始化编程时,CPU向基地址存放器写入的内容,同时也被写入当前地址存放器。每次DMA传送后,当前地址存放器内容自动增1〔或减1〕,以指向相邻的下一个存储单元。该存放器内容可被CPU随时读出。〔3〕基字节计数器9.2.58237A的编程

每个通道各有一个16位的基字节计数器,用于存放本通道要传送的数据量,在初始化时由CPU写入。

编程写入的字节数比实际要传送的字节数少1。〔4〕当前字节计数器用于存放本通道DMA传送时待传送的剩余字节数。初始化编程时,CPU向基字节计数器和当前字节计数器同时写入相同的初始值。每次DMA方式传送一个字节后,当前字节计数器自动减1,当其内容最后一次从0减到0FFFFH时,将产生终止计数的脉冲输出。该存放器可被CPU随时读出。〔5〕暂存存放器9.2.58237A的编程暂存存放器为8位,仅在存储器至存储器之间DMA传送时使用,传送操作时用来暂时存放从源地址单元读出的数据。〔6〕地址暂存器和计数暂存器

地址暂存器用于暂时存放当前存储器单元地址。

计数暂存器用于暂时存放当前计数值。

CPU不与二者发生关系,不对二者读/写。〔7〕状态存放器9.2.58237A的编程D7D6D5D4D3D2D1D01通道0计数结束1通道1计数结束1通道2计数结束1通道3计数结束1通道0有请求1通道1有请求1通道2有请求1通道3有请求〔8〕命令存放器9.2.58237A的编程0DACK低电平有效1DACK高电平有效0DREQ高电平有效1DREQ低电平有效0正常写1扩展写0

固定优先级1循环优先级0禁止内存到内存传送0不保持通道0源地址不变1允许内存到内存传送1保持通道0源地址不变0

允许8237A工作1禁止8237A工作0

普通时序1压缩时序D7D6D5D4D3D2D1D0〔9〕工作方式存放器9.2.58237A的编程工作方式D7D6D5D4D3D2D1D0地址修改通道选择传送类型00请求传送方式01单字节传送方式10块传送方式11级联方式00通道001通道110通道211通道3自动预置00DMA校验01DMA写10DMA读11无意义0禁止自动预置1允许自动预置0地址增11地址减1〔10〕屏蔽存放器9.2.58237A的编程D7D6D5D4D3D2D1D000通道001通道110通道211通道30允许DMA请求1禁止DMA请求未用通道选择屏蔽标志单通道屏蔽命令字:综合屏蔽命令字:D7D6D5D4D3D2D1D00清通道0屏蔽位1

置通道0屏蔽位未用通道屏蔽标示0清通道1屏蔽位1

置通道1屏蔽位0清通道3屏蔽位1

置通道3屏蔽位0清通道2屏蔽位1

置通道2屏蔽位〔11〕请求存放器9.2.58237A的编程未用D7D6D5D4D3D2D1D0通道选择00通道001通道110通道211通道3请求标志0无DMA请求1有DMA请求2.软件命令9.2.58237A的编程〔1〕主去除命令〔2〕去除先/后触发器命令〔3〕去除屏蔽存放器命令也称软件复位命令,该命令使8237A的命令、状态、请求、暂存存放器、先/后触发器清0,使屏蔽存放器置1。方法:向A3~A0=1101的端口进行1次写操作。用于控制对16位存放器的低字节/高字节操作的切换。执行主去除命令后该触发器变为0,也可以向A3~A0=1100的端口执行写操作来清0。该触发器具有自动反转功能。对DMA通道初始化时应开放全部通道的DMA请求,去除全部屏蔽位。方法:向A3~A0=1110端口写操作。3.8237A的编程9.2.58237A的编程编程步骤:

①发出主清除命令②写入基与当前地址寄存器(先低后高字节)③写入基与当前字节计数寄存器(先低后高字节)④写入工作方式寄存器⑤写入屏蔽寄存器⑥写入命令寄存器⑦写入请求寄存器注只有需要通过软件设置DMA请求时才需第⑦步。8237A每个通道都需要进行DMA传送编程。在上述各步骤中,第②~⑥步的顺序任意。3.8237A的编程9.2.58237A的编程编程步骤:

①发出主清除命令②写入基与当前地址寄存器(先低后高字节)③写入基与当前字节计数寄存器(先低后高字节)④写入工作方式寄存器⑤写入屏蔽寄存器⑥写入命令寄存器⑦写入请求寄存器注只有需要通过软件设置DMA请求时才需要第⑦步。8237A每个通道都需要进行DMA传送编程。在上述各步骤中,第②~⑥步的顺序随意。3.8237A的编程9.2.58237A的编程8237A内部寄存器寻址4个通道的屏蔽寄存器——

清除4个通道的屏蔽位——

主清除命令暂存寄存器

清除先/后触发器——

工作方式寄存器——

单通道屏蔽寄存器——

请求寄存器——

命令寄存器状态寄存器通道3基(当前)字节计数器通道3当前字节计数器通道3基(当前)地址寄存器通道3当前地址寄存器通道2基(当前)字节计数器通道2当前字节计数器通道2基(当前)地址寄存器通道2当前地址寄存器通道1基(当前)字节计数器通道1当前字节计数器通道1基(当前)地址寄存器通道1当前地址寄存器通道0基(当前)字节计数器通道0当前字节计数器通道0基(当前)地址寄存器通道0当前地址寄存器

DMA+1111DMA+1110DMA+1101DMA+1100DMA+1011DMA+1010DMA+1001DMA+1000DMA+0111DMA+0110DMA+0101DMA+0100DMA+0011DMA+0010DMA+0001DMA+0000A3A2A1A03.8237A的编程9.2.58237A的编程

【例9.1】利用8237A通道从外设传送240H个字节到起始地址为2000H的内存。8237A芯片基地址为80H,DREQ和DACK信号均为高电平有效,采用非自动预置方式。试初始化编程。编程:OUT8DH,AL

MOVAX,2000HOUT82H,AL

MOVAL,AHOUT82H,AL

OUT8BH,ALMOVAL,01HOUT

温馨提示

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

评论

0/150

提交评论