DMA控制器学习教程.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《DMA控制器学习教程.pptx》由会员分享,可在线阅读,更多相关《DMA控制器学习教程.pptx(85页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、nDMAC对存储器的访问与CPU类似,一般利用系统总线来进行。n以读存储器为例,其过程是:DMAC一面向存储器送存储单元地址和读控制信号(),同时又向外设端口送写控制信号(),数据在硬件信号的控制下通过总线由源直接送达目的地。为了支持数据块的传送,DMAC还具有修改地址指针、统计传送次数、判断传送是否结束等多项自动功能。n所以,使用DMA方法,可支持外设存储器、存储器外设的高速直接传送;变通后,也可支持存储器存储器、外设外设的高速直接传送。第1页/共85页7.2 DMA占用总线方式 1CPU暂时放弃总线控制权方式n此类DMA操作,CPU必须暂停任何总线操作,并让出对总线的控制权、直至DMA传送
2、结束或完成一个总线操作周期之后,CPU才能继续控制总线。n实现这种方式的方法是DMAC向CPU发出总线请求信号,CPU在完成当前的总线周期操作之后,释放对总线的控制(有关的引脚信号处于高阻状态)并发出总线响应信号。第2页/共85页n这类DMA又可分为两种情况:周期挪用和数据块传送。n如果DMAC控制总线的时间为一个总线周期,则称为周期挪用。对于这种操作方式,每次DMA操作仅传送一个字节(或字)数据。然后DMAC释放对总线的控制;n若DMAC控制总线的时间超过一个总线周期,用来完成一组数据(即数据块)的传送,在该组数据传送期间,DMAC一直控制着总线,这种操作方式称为数据块传送。第3页/共85页
3、下面以图7-1为例说明这种DMA操作方式的工作过程。假定8086CPU工作于最小模式,且是将存储器中的数据传送给外部设备。在DMA操作之前,DMAC作为系统的一个接口部件,接受CPU送来的操作命令,也即对DMAC的初始化,以规定传输类型(存储器和外设之间)、操作方式(单字节传送)、传送方向、内存的首地址、传送的字节数等。在完成初化编程之后,DMAC就准备好进行DMA操作,传送一个字节数据的过程如下(在图7-1中以圆圈内的序号表示)。第4页/共85页图7-1 DMA操作过程示意图 第5页/共85页(1)外设已作好接收数据准备,向DMAC发出请求信号DRQ。(2)DMAC向CPU发出DMA操作请求
4、HRQ,该请求信号送到CPU的HOLD信号引脚。(3)CPU在完成当前的总线周期操作之后(若总线处于空闲状态,则立即做出响应),使数据总线、地址总线及部分控制信号处于三态,并向DMAC发出响应信号HLDA,指示DMAC可以使用总线。第6页/共85页(4)DMAC将地址(A19A0)放入地址总线,该地址用来寻址内存储单元。(5)DMAC向I/O接口发出响应信号DACK,该信号可作为接口接受数据的控制条件,有效时,表示允许接口接受数据;(6)DMAC向存储器发出读控制信号,在该信号的控制下,由A19A0指定的单元的内容送入数据总线。第7页/共85页(7)DMAC向接口发出写控制信号,在该信号及DA
5、CK信号的共同作用下,将数据总线上的内容储存到接口中的数据寄存器,并通过接口将数据传送给外设,至此完成了数据传送。(8)DMAC撤销对CPU的请求信号。(9)CPU撤销保持响应信号并恢复对总线的控制。如果数据未传送完,则又从第二步开始重复所述过程。第8页/共85页2暂停CPU时钟脉冲方式n这种方式也就是强迫CPU立即停止工作的方式。n在进入DMA操作时,把CPU的时钟“暂停”,就能达到停止CPU操作的目的。n这种方式的原理如图7-2所示,CPU的时钟脉冲由系统主时钟脉冲通过与门来提供,与门由PAS信号控制。n当PAS=1时,向CPU提供时钟脉冲,CPU操作得以进行;当PAS=0时,暂停时钟,C
6、PU便处于“休眠”状态,此时可进行DMA操作。第9页/共85页图7-2 暂停CPU时钟脉冲方式示意图 fSystemPASfSystemPASfCPUfCPU&第10页/共85页3窃取CPU空闲时间方式n上述两种DMA总线占用方式共同的特点是,进行DMA操作时均使CPU的正常工作暂时停止。其优点是简单,可以不受限制地传送任意长度的数据块,但会浪费CPU资源。n为了充分利用CPU 资源,可以采用只有当CPU不使用总线时才进行DMA操作的方法,这样CPU不会因DMA传送而浪费时间。但这种DMA操作只能安排在CPU执行内部操作当中n例如取完指令操作码后,CPU要进行指令译码或CPU内部要进行算术/逻
7、辑运算时,CPU均不使用总线,这时DMAC可以接管总线。MC6800 CPU有专门的信号用来指示总线是否正在被使用,这就给安排DMA操作带来了很大便利。第11页/共85页4周期扩展方式n周期扩展方式是采用专门的时钟发生电路加宽CPU的时钟周期,利用CPU每个时钟周期的加宽时间进行DMA操作,这种占用总线的方式为周期扩展。n这种方式由于延长了CPU的时钟周期必将导致CPU运行速度的降低。PC/XT微型机就是采用了这种方式,巧妙地在CPU总线中插入若干等待周期Tw,进行DMA操作。n在上述4种方式中,CPU暂时放弃总线控制权而DMA占用总线的方式是最简单的一种方式。第12页/共85页7.3 DMA
8、控制器8237A 8237A是Intel系列高性能可编程DMA控制器,具有如下功能:(1)每片8237A内部有4个独立的DMA通道,每个通道可分别进行数据传送,一次传送最大达64MB,能够实现存储器与外部设备间或存储器两个区域间的数据传送。(2)每个通道的DMA请求可以分别允许和禁止,具有不同的优先级,并且每个通道的优先级可以是固定的,也可以是循环的。(3)8237A具有4种传送方式:单字节传送方式,数据块传送方式,请求传送方式和级联方式。第13页/共85页7.3.1 8237A的内部构成框图 第14页/共85页1.3个基本控制逻辑单元(1)定时和控制逻辑单元。根据初始化编程时所设置的工作方式
9、寄存器的内容和命令,在输入时钟信号的定时控制下,产生8237A内部的定时信号和外部的控制信号。(2)命令控制单元。在CPU控制总线时,即DMA处于空闲周期时(被动态),将CPU在编程初始化时送来的命令字进行译码;而在8237A进入DMA服务时,对设定DMA操作类型的工作方式字进行译码。(3)优先权控制逻辑。用来裁决各通道的优先权次序,解决多个通道同时请求DMA服务时可能出现的优先权竞争问题。第15页/共85页2.3个缓冲器(1)I/O缓冲器1。n8位、双向、三态的缓冲器n当CPU控制总线时,从CPU送给8237A的编程控制字、CPU读取8237A的状态字、当前地址和字节计数器的内容都经过这个缓
10、冲器。n当8237A控制总线时,在DMA周期一开始,8237A请求DMA服务优先权最高通道的暂时地址寄存器的高8位地址,由这个缓冲器输出到地址锁存器74LS373或Intel 8282锁存。然后,若编程时设定DMA的操作类型是DMA写、读或校验时,就使这个缓冲器进入高阻状态,即数据传送不经过此缓冲器;n若操作类型是存储器之间的传送(MM)时,首先将源存储单元的内容经数据总线由此缓冲器送到8237A的暂存器中。在下一个周期,暂存器的内容由此缓冲器送上数据总线,然后写入目的存储单元。第16页/共85页(2)I/O缓冲器2。4位、双向、三态缓冲器。n在CPU控制总线时,输入缓冲器导通(输出则处于高阻
11、状态),将地址总线的低4位A3A0送入8237A进行译码后,选通内部的寄存器,以便在有效时,将数据总线的内容写入被选中的内部寄存器,或在有效时将被选中寄存器的内容送上数据总线。n在DMA控制总线时,输出缓冲器导通(输入则处于高阻状态),送出8237A产生的16位存储器地址的低4位A3A0。第17页/共85页(3)输出缓冲器。4位、输出、三态缓冲器。在CPU控制总线时,它为高阻状态;而在DMA控制总线时,它导通,由8237A提供的16位存储器地址的第8位到第5位地址A7A4通过它送出。第18页/共85页3内部寄存器8237A的内部寄存器如表7-1所列。它与用户编程直接发生关系。表7-1 8237
12、A的内部寄存器名 称位 数数 量CPU访问方式基地址寄存器164只 写基字节计数寄存器164只 写当前地址寄存器164可读可写当前字节计数寄存器164可读可写地址暂存器161不能访问命令寄存器81只 写工作方式寄存器64只 写屏蔽寄存器41只 写请求寄存器41只 写状态寄存器81只 读暂存寄存器81只 读第19页/共85页7.3.2 8237A的引脚8237A的引脚如图7-4所示第20页/共85页nCLK时钟脉冲输入信号,该信号用以控制8237A内部操作及数据传输率。n 片选输入信号,低电平有效。CPU对8237A编程时把8237A视为输入/输出设备,此时该信号由地址总线高位经译码后产生。nR
13、ESET复位输入信号,高电平有效。复位后8237A处于空闲状态,清除内部各寄存器,并置位屏蔽触发器。nREADY准备好输入信号,高电平时表示存储器或外设已经准备好。该信号用于DMA操作时与慢速存储器或外部设备同步。第21页/共85页nDREQ3DREQ0DMA请求输入信号,通道3至通道0分别对应DREQ3至DREQ0。当外设请求DMA服务时,由I/O接口向8237A发出DREQ请求信号,该信号一直保持有效,直到收到DMA响应信号DACK后,信号才撤销。其有效电平由编程设定。在优先级固定的方式下,DREQ0优先级最高,DREQ3优先级最低。nHRQ总线请求输出信号。当8237A的任一个未屏蔽通道
14、接收到DREQ请求时,8237A就向CPU输出HRQ信号,请求CPU出让总线的控制权。nHLDA总线响应信号,是CPU对HRQ信号的响应。CPU收到HRQ信号后,将在现行总线周期结束后让出总线的控制权,使HLDA信号有效,通知8237A接收总线的控制权,用以完成DMA传送。第22页/共85页nDACK3DACK0DMA响应输出信号,是8237A对DREQ信号的响应,每个通道各有一个。当8237A接收到DMA响应信号HLDA后,开始DMA传送,相应的通道DACK信号输出有效,其有效电平由编程确定。nDB7DB08位双向三态数据总线,与系统的数据总线相连。CPU可以用I/O读命令,从DB7DB0读
15、取8237A的状态寄存器和现行地址寄存器、字节数计数器的内容,以了解8237A的工作状态;也可以用I/O写命令通过DB7DB0对各个寄存器进行编程。在DMA传送期间,DB7DB0输出当前地址寄存器中的高8位,由ADSTB信号锁存到外部锁存器中,与地址线A7A0一起组成16位地址。第23页/共85页nA7A44位双向三态地址线。只用于DMA传送时,输出要访问的存储单元地址低8位中的高4位。nA3A04位双向三态地址线。CPU对8237A进行编程时,它们是输入信号,用于寻址8237A的内部各寄存器。在DMA传送期间,这4条线输出要访问的存储单元地址低4位。n I/O读信号,是双向、低电平有效的三态
16、信号。在CPU控制总线期间,它为输入信号,低电平有效时,CPU读取8237A内部寄存器的值;在DMA传送期间,它为输出信号,与相配合,控制数据由外设传送到存储器。第24页/共85页n I/O写信号,是低电平有效的双向三态信号。在CPU控制总线期间,它为输入信号,CPU在控制下对8237A内部寄存器进行编程。在DMA传送期间,它是输出信号,与配合将数据从存储器传送到外设接口中。n 存储器读信号。低电平有效的三态输出信号,仅用于DMA传送。在DMA读传送时,它与 配合,把数据从存储器传到外设;在存储器到存储器传送时,有效控制从源区读出数据。n 存储器写信号,低电平有效的三态输出信号,仅用于DMA传
17、送。在DMA写传送时,它与 配合,把数据从外设传到存储器;在存储器到存储器传送时,有效控制把数据写入目的区。第25页/共85页n DMA过程结束信号。它是双向低电平有效信号,其有效时,可使8237A内部寄存器复位。在DMA传送期间,当任一通道当前字节数寄存器的值为0时,8237A从EOP引脚输出一个低电平信号,表示DMA传输结束。另外,8237A允许由外部送入一个有效的EOP信号,强制结束DMA传送过程。nAEN地址允许输出信号,高电平有效。AEN为高电平时,允许8237A将高8位地址输出至地址总线,同时使与CPU相连的地址锁存器无效,即禁止CPU使用地址总线。AEN为低电平时,8237A被禁
18、止,CPU占用地址总线。nADSTB地址选通输出信号,高电平有效。在DMA传送期间,此信号用于将DB7DB0输出的当前地址寄存器中高8位地址送到外部锁存器,与8237A芯片直接输出的低8位地址A7A0共同构成内存单元地址的偏移量。第26页/共85页7.3.3 8237A的内部寄存器及编程控制字8237A内部的4个独立通道中,每个通道都有一个16位基地址寄存器、一个16位基本字节寄存器、一个16位当前地址寄存器、一个16位当前字节数计数器和一个8位工作模式寄存器。各寄存器功能如下:第27页/共85页(1)当前地址寄存器:用于保持DMA传送过程中当前地址值,每次DMA传送后其内容自动增1或减1。n
19、这个寄存器的值可由CPU写入或读出。若8237A编程为自动初始化,则在每次DMA操作结束发出信号后,该寄存器自动恢复为它的初始值。(2)当前字节数寄存器:它保持着当前要传送的字节数,每次DMA传送后内容减1。n当它的值由零减为FFFFH时,将发出信号,表明DMA操作结束。n它的值可由CPU读出。在自动初始化方式时,有效时自动装入初始值(即基地址寄存器的值)。第28页/共85页(3)基地址寄存器:它存放着与当前地址寄存器相联系的初始值。CPU同时写入基地址寄存器和当前地址寄存器。基地址寄存器的值不会修改,且不能读出。(4)基字节数寄存器:它存放着与当前字节数寄存器相联系的初始值。CPU同时写入基
20、字节数寄存器和当前字节数寄存器。基字节数寄存器的值不会修改,且不能读出。(5)模式寄存器:用于存放8237A相应通道的工作模式、地址增减、是否自动预置、传输类型及通道选择。在CPU对8237A初始化编程时设定。第29页/共85页8237A的4种工作模式。(1)单字节传送模式:n这种模式下每次只传送1个字节。传送一个字节后,字节数寄存器减1,地址寄存器加1或减1,HRQ无效。8237释放系统总线,将总线控制权交还CPU。若此时当前字节数由0减到FFFFH,将发出信号,则结束DMA传送或重新初始化。否则8237A会立即对DREQ信号进行检测,一旦DREQ有效,8237A将立即向CPU发出总线请求信
21、号,获得总线控制权后,再进行下一个字节的传送。n单字节传送模式的特点是:一次传送一个字节,效率较低;但他将保证在两次DMA传送之间CPU有机会重新获取总线控制权,执行一个CPU总线周期。第30页/共85页(2)数据块传输模式:n这种传输模式可以连续传输多个字节。8237A获得总线控制权之后,可以完成一个数据块的传输,直到当前字节数寄存器由0减为FFFFH,或由外部接口输入有效的信号时,8237A才释放总线,将总线控制权交还CPU。n数据块传送的特点是:一次请求传送一个数据块,效率高;但整个DMA传送期间CPU长时间无法控制总线。第31页/共85页(3)请求传输模式:n这种传输模式也可以连续传送
22、多个字节的数据。8237A进行DMA传输时,若出现当前字节寄存器由0减为FFFFH、外部接口输入有效信号或外界的DREQ信号变为无效这3种情况之一时,8237A结束传送,释放总线,由CPU接管总线。n当外界的DREQ信号变为无效时,8237A释放总线,CPU可继续操作。8237A相应通道将保存当前地址和字节数寄存器的中间值。8237A释放总线后继续检测DREQ,一旦变为有效信号,传送就可以继续进行。第32页/共85页(4)级联传输模式:n通过级联扩展传输通道。级联模式构成的主从式DMA系统中,第一级的DREQ和DACK信号分别连接第二级的HRQ和HLDA,第一级的HRQ和HLDA连接系统总线,
23、此时第二级各个8237芯片的优先级与所连的第一级通道相对应。这样由5片8237构成的二级主从式DMA系统中,DMA数据通道可扩展到16个。n注意:主片需要在模式寄存器中设置为级联方式,而从片不设置为级联方式。8237A的这4种工作模式可以通过置工作模式寄存器来设定。工作模式寄存器各位的定义如图7-5所示。第33页/共85页第34页/共85页6屏蔽寄存器8237A内部的屏蔽寄存器对应于每个通道的屏蔽触发器,当其设置为1时禁止该通道DMA请求。在复位后,4个通道全置于屏蔽状态。在编程时根据需要清除某些屏蔽位,允许产生DMA请求。如果某个通道编程规定为不自动初始化的情况下,则当该通道产生信号时,它所
24、对应的屏蔽位置位,必须再次编程为允许,才能进行下一次DMA传送。屏蔽寄存器的两种格式见图7-6所示。第35页/共85页(a)单通道屏蔽字 (b)主屏蔽字 图7-6 屏蔽字格式 第36页/共85页7状态寄存器8237A内部有一个可由CPU读出的8位状态寄存器,用来存放8237A的状态信息。它的低4位反映读命令这个瞬间每个通道是否产生TC,高4位反映每个通道的请求情况(为1表示有请求)。如图7-7所示。这些状态位在复位或被读出后,均被清除。第37页/共85页第38页/共85页8请求寄存器n8237A的每个通道对应一条硬件DREQ请求线。当工作在数据块传送模式时也可以由软件发出DREQ请求,所以有一
25、个请求寄存器。nCPU通过请求字写入请求寄存器,图7-8为请求字格式。n其中D1D0位决定写入的通道,D2位决定是请求(置位)还是复位。每个通道的软件请求位分别设置,它们是非屏蔽的。它们的优先权同样受优先权逻辑的控制。它们可由TC或外部的信号复位,RESET复位信号使整个寄存器清除。n注意:只有在数据块传送模式才能使用软件请求。若是存储器到存储器传送,则必须由软件请求启动通道0。第39页/共85页第40页/共85页9命令寄存器n这是DMAC 4个通道公用的一个8位的寄存器,用于设定8237A的工作方式,由CPU编程写入,并用复位信号和软件命令清除。复位时使其清零。命令字格式如图7-9所示。n8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DMA 控制器 学习 教程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内