第9章__DMA控制接口及内部结构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第9章DMA控制接口及内部结构本章以DMA控制器8237A为例,主要介绍其工作原理、结构、工作时序及工作方式等,重点介绍DMAC的内部寄存器、编程方式及其应用。9.1DMA概述DMA传输方式作是CPU与外部设备之间进行数据交换的四种基本方式之一,采用专门的硬件,即DMA控制器来控制数据的传输,克服了数据传输由程序控制而使系统工作效率低的缺点。9.1.1DMA传输的特点(以硬件控制取代软件控制进行信息传送)DMA控制器暂时享有总线控制权,行使地址修改、控制数据传送等功能,数据传送速度主要受存储设备的存取速度限制。9.1.2DMA传输的过程及工作方式在DMA数据传输过程中脱离了CPU的控制,采用DMA控制器来管理和控制数据传输的整个过程,而DMA控制器的启动初始化,都是由CPU控制完成。DMA控制原理图如下:外部设备CPU内存储器DMA控制器总线响应DMADMA请求总线请求总线请求响应1、准备请求:I/O外设DMACCPU应答:DMACI/O设备DREQHRQHLDADACK3、数据传送结束,DMAC发出过程终止信号EOP,HRQ失效,CPU重新获得总线控制权。MI/ODATA2、传送:DMAC向I/O设备发读/写信号DMAC向M发地址信号和读/写信号DMA传输的过程的三个阶段DMA方式传送数据过程分为3阶段,即准备阶段、数据传送阶段和传送结束阶段。DATADMA传送过程示意图I/ODMACPUI/ORAMDMADREQHRQHLDADACKR/W由被动态进入主动态(总裁)经总线裁决后认可,进入总线保持状态,CPU失去总线控制权经判优及屏蔽处理MEMR/MEMW9.1.3DMA控制器的结构DMA控制器可以像CPU那样获得总线的控制权,完成外设与存储器之间的数据高速交换。DMA控制器不但要与外设连接,以接受外设发出的DMA操作请求和在DMA期间对外设进行控制,还要与CPU连接,以请求总线的控制权;同时,它还需要与三大总线连接,以便进行总线的控制。DMA控制器地址寄存器状态寄存器控制寄存器字节计数器外设接口DMA请求DMA应答外设数据总线控制总线地址总线总线请求总线允许DMA控制器内部结构与外设的连线9.2DMA控制器8237ADMA控制器可以像CPU那样获得总线的控制权,完成外设与存储器之间的数据高速交换。DMA控制器不但要与外设连接,以接受外设发出的DMA操作请求和在DMA期间对外设进行控制,还要与CPU连接,以请求总线的控制权;同时,它还需要与三大总线连接,以便进行总线的控制。9.2.18237A控制器的特点1、8237A有4个独立的DMA通道,可以编程实现对4个不同外设DMA传送操作的控制;2、每个通道的DMA请求都可以被允许和禁止,并能对各个通道的DMA请求进行优先权管理;3、能完成存储器与外设之间的数据传送,还可以完成存储器两个区域之间的数据传送,每个通道一次传送数据的最大长度可达64KB;4、存储器的寻址范围为64K;5、8237A的DMA传送方式有4种:单字节传送方式、成组传送方式、请求传送方式和级联传送方式;6、8237A可以通过级联方式扩展通道数;7、具有控制传送结束用的外接过程结束控制信号输入端EOP,允许外部输入该信号以结束DMA传送。9.2DMA控制器8237ADMA控制器在系统中有两种工作状态,即主动态和被动态。在主动态时,DMA控制器完全取代CPU对总线的控制权,通过总线向存储器或外设发出地址和读/写信号,以控制两种存储实体间的数据交换。在被动态时,DMA与其它接口一样,接受CPU对它的读/写操作,在进行DMA方式传送之前,由CPU处理对DMA控制器编程,以确定通道选择DMA操作类型及方式、内存首地址及需要传送的字节数等参数。1.8237A的内部结构8237A是一个多功能的可编程DMA控制器,内部主要包括时序和控制逻辑、优先级编码逻辑、命令控制逻辑、数据和地址缓冲器组和内部寄存器组。9.2.2工作原理、内部结构和引脚8237A内部结构9.2.2工作原理、内部结构和引脚时序与控制逻辑EOPRESETCSREADYCLKAENADSTBMEMRMEMWIORIOW优先级编码HRQHLDADREQ3-0DACK3-0命令寄存器(8)命令寄存器(8)请求寄存器(8)I/O缓冲器方式寄存器(6×4)状态寄存器(6×4)暂存寄存器(6×4)内部数据总线读缓冲器基地址基字节寄存器计数器(16×4)(16×4)读/写缓冲器当前地址当前字节寄存器计数器(16×4)(16×4)写缓冲器读缓冲器字数暂存器地址暂存器1616A15~A8I/O缓冲输出缓冲命令控制逻辑D1~D0A3~A0A7~A4DB7~DB0448X48X48X4屏蔽寄存器1、时序与控制逻辑该部分的功能是根据初始化编程时所设置的工作方式,在输入时钟的定时控制下,产生8237A的内部定时信号和外部控制信号,其中内部定时信号包括DMA请求、DMA传送及DMA结束等。2、优先级编码逻辑该部分的功能是在有多个通道都有DMA请求的情况下,根据CPU对8237A初始化命令,对多个通道DMA请求进行优选权排序,来决定通道优先级别服务的先后顺序,以解决多通道同时请求DMA服务可能造成的冲突问题。3、命令控制逻辑该部分的功能是对CPU送来的地址信号进行译码,通过译码来确定要读/写的内部寄存器。9.2.2工作原理、内部结构和引脚4、数据和地址缓冲器组8237A包括两个I/O缓冲器和一个输出缓冲器,8237A的数据线和地址线通过这些缓冲器与系统总线连接,可以接管和释放总线。A7~A0为8237A的地址线,DB7~DB0在主态时传送地址信息,在被动态时传送数据信息。5、内部寄存器组8237A内部寄存器主要分为两大类。其中5种属于通道寄存器,即8237A中每个通道都有的基地址寄存器、当前地址寄存器、当前字节字计数器、基字节计数器、方式寄存器;另外5种属于公用寄存器,即每个通道公用的命令寄存器、状态寄存器、请求寄存器、屏蔽寄存器和暂存器。9.2.2工作原理、内部结构和引脚1.8237A的工作时序9.2.38237A的工作时序及工作方式2.8237A的工作方式DMA传送方式分有四种,即单字节传送、成组传送、请求传送和级联传送方式等。①单字节传送方式每个DMA工作周期只传送一个字节的数据,每传完一个字节传送后,位于DMA控制器中的字节计数器的值减1,然后撤销DMA控制器对CPU的请求信号,让出总线的控制权。②成组传送方式DMA控制器请求总线连续传送多个字节数据,数据的字节数在DMA传送前通过初始化编程进行设置。③请求传送方式由外部是否有DMA请求决定,如果有DMA请求,DMA控制器才有可能占用总线,进行连续的数据传送。④级联传送方式主要是为了完成DMA系统的扩展,可以实现由多个DMA控制器构成的主从式DMA传送系统。9.2.38237A的工作时序及工作方式2.8237的工作方式(1)单字节传送方式在这种方式下,DMA控制器每次请求总线后只传送一个字节的数据并自动的修改字当前字节数的当前地址值,传送一个字节后就释放总线,由于DMA控制器在传送一个字节后即释放总线,CPU至少可以得到一个机器周期用以处理其它事务.该方式适用于慢速设备与CPU之间数据的传送.(2)成组传送方式(块传送方式)块传送方式下,DMA得到总线控制权后,总是要等到要传送的数据块完全传送结束后,DMAC发出一个EOP信号宣告传送结束,这时DMAC才交出总线控制权.3.请求传送方式这种方式与块传送方式基本类似,所不同的是:每传送完一个字节后,DMAC都要去检测外设发出的DMA请求是否仍然有效,若有效,则继续传送,否则就交出总线控制权,侍外设的DMA请求重新有效后,再从原先的暂停处继续传送.4.主要是为了完成DMA系统的扩展,可以实现由多个DMA控制器构成的主从式DMA传送系统。2010年10月27日讲到这里。DMA的编程应用(教材P204之9.1.2)必须掌握下面的这些内容(1)DMAC内部寄存器及其地址(见下一页)(2)DMAC8237的各种控制字和状态字(3)8237DMAC的各种软命令下面一一展开。8237A内部寄存器主要分为两大类:公用寄存器和通道寄存器。9.2.48237A的内部寄存器关于DMAC十六个端口地址的说明上一页的表中出现的DMA+0、DMA+1……DMA+15这样表示的含义是:将16位的端口地址分成高十二位和低4位两个部分,这高12位的地址线连接于地址绎码器74LS138用于选片,低4位和8237的4条引脚A0、A1、A2、A3一一对应相连,用于确定芯片内部的16个端口号中的某一个。8237内部寄存器根据上页的表9-1,我们知道8237内部有20多个寄存器,它们共使用了DMA+0~DMA+15共16个端口地址。这些寄存器,我们把它们分成公用寄存器和通道寄存器两类。见下页的表9-2简要介绍各寄存器的功能及其在初始化编程中要注意的问题。控制字1.公用寄存器(P205)1)命令控制字(写入公用的命令寄存器)8237A的4个通道公用的一个8位寄存器,用于存放编程的命令字,由CPU在编程时写入,控制8237A的操作。其命令字格式如下图所示:(2)8237A的内部寄存器D7D6D5D4D3D2D1D00:DACK低电平有效1:DACK高电平有效0:DREQ低电平有效1:DREQ高电平有效0:不扩展写信号1:扩展写信号0:固定优先级1:循环优先级0:禁止存储器到存储器传送1:允许存储器到存储器传送0:禁止通道0地址保持不变1:允许通道0地址保持不变0:启动8237A工作1:停止8237A工作0:普通时序1:压缩时序写入的口地址为DMA+82)状态字(存放于公用的状态寄存器中供读出)P207状态寄存器是用来存放8237A状态信息的8位寄存器其中高4位分别对应当前4个通道DMA请求情况,低4位分别表示4个通道的计数结束状态。格式如下:9.2.48237A的内部寄存器D7D6D5D4D3D2D1D00:通道3没有请求1:通道3有请求0:通道2没有请求1:通道2有请求0:通道1没有请求1:通道1有请求0:通道0没有请求1:通道0有请求0:通道0计数未结束1:通道0计数已结束0:通道1计数未结束1:通道1计数已结束0:通道2计数未结束1:通道2计数已结束0:通道3计数未结束1:通道3计数已结束读出的口地址为DMA+83)请求寄存器8237A四个通道内部都有一个一位的请求触发器,四个通道的请求触发器合并成一个公用的四位请求寄存器,该寄存器内的某一位为0,表示对应的通道没有DMA请求,若某一位为1,表示该通道有DMA请求。一般情况下,该寄存器中的任一位的值是由外设的DMA请求进行置位,而由DMA传送结束信号EOP复位置0的。但是根据需要,我们也可以用下面介绍的请求命令字,对请求寄存器的任一位进行置位操作。0/10/10/10/1D3D2D1D03)请求控制字(作用于公用的请求寄存器)P2069.2.48237A的内部寄存器D7D6D5D4D3D2D1D0通道选择00:通道001:通道110:通道211:通道3无意义设置DMA请求标志0:复位请求1:置位请求该命令字同时也对状态字中高4位的相应位进行置位或复位操作.写入的端口为DMA+94)屏蔽控制字(屏蔽命令字1)P2068237A内部有一个屏蔽寄存器,由4个通道的屏蔽触发器共同构成。屏蔽命令字用于设置公用的屏蔽寄存器相应位的值,其格式如图所示:9.2.48237A的内部寄存器D7D6D5D4D3D2D1D0通道选择00:通道001:通道110:通道211:通道3无意义屏蔽设置0:复位屏蔽1:置位屏蔽写入的端口为DMA+10上述的屏蔽字用于对某个通道的屏蔽触发器单独操作,8237A还允许使用综合屏蔽命令来设置通道的屏蔽触发器。通过综合屏蔽命令可以一次完成对4个通道的屏蔽设置。格式如图所示:9.2.48237A的内部寄存器D7D6D5D4D3D2D1D0对通道0设置屏蔽对通道1设置屏蔽对通道2设置屏蔽对通道3设置屏蔽不用屏蔽命令字2(综合屏蔽字、教材上没有的)1:屏蔽该通

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功