欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    DMA控制器学习教程.pptx

    • 资源ID:73646060       资源大小:477.73KB        全文页数:85页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    DMA控制器学习教程.pptx

    nDMAC对存储器的访问与CPU类似,一般利用系统总线来进行。n以读存储器为例,其过程是:DMAC一面向存储器送存储单元地址和读控制信号(),同时又向外设端口送写控制信号(),数据在硬件信号的控制下通过总线由源直接送达目的地。为了支持数据块的传送,DMAC还具有修改地址指针、统计传送次数、判断传送是否结束等多项自动功能。n所以,使用DMA方法,可支持外设存储器、存储器外设的高速直接传送;变通后,也可支持存储器存储器、外设外设的高速直接传送。第1页/共85页7.2 DMA占用总线方式 1CPU暂时放弃总线控制权方式n此类DMA操作,CPU必须暂停任何总线操作,并让出对总线的控制权、直至DMA传送结束或完成一个总线操作周期之后,CPU才能继续控制总线。n实现这种方式的方法是DMAC向CPU发出总线请求信号,CPU在完成当前的总线周期操作之后,释放对总线的控制(有关的引脚信号处于高阻状态)并发出总线响应信号。第2页/共85页n这类DMA又可分为两种情况:周期挪用和数据块传送。n如果DMAC控制总线的时间为一个总线周期,则称为周期挪用。对于这种操作方式,每次DMA操作仅传送一个字节(或字)数据。然后DMAC释放对总线的控制;n若DMAC控制总线的时间超过一个总线周期,用来完成一组数据(即数据块)的传送,在该组数据传送期间,DMAC一直控制着总线,这种操作方式称为数据块传送。第3页/共85页下面以图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操作请求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向接口发出写控制信号,在该信号及DACK信号的共同作用下,将数据总线上的内容储存到接口中的数据寄存器,并通过接口将数据传送给外设,至此完成了数据传送。(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时,暂停时钟,CPU便处于“休眠”状态,此时可进行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内部要进行算术/逻辑运算时,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控制器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)定时和控制逻辑单元。根据初始化编程时所设置的工作方式寄存器的内容和命令,在输入时钟信号的定时控制下,产生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的状态字、当前地址和字节计数器的内容都经过这个缓冲器。n当8237A控制总线时,在DMA周期一开始,8237A请求DMA服务优先权最高通道的暂时地址寄存器的高8位地址,由这个缓冲器输出到地址锁存器74LS373或Intel 8282锁存。然后,若编程时设定DMA的操作类型是DMA写、读或校验时,就使这个缓冲器进入高阻状态,即数据传送不经过此缓冲器;n若操作类型是存储器之间的传送(MM)时,首先将源存储单元的内容经数据总线由此缓冲器送到8237A的暂存器中。在下一个周期,暂存器的内容由此缓冲器送上数据总线,然后写入目的存储单元。第16页/共85页(2)I/O缓冲器2。4位、双向、三态缓冲器。n在CPU控制总线时,输入缓冲器导通(输出则处于高阻状态),将地址总线的低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 8237A的内部寄存器名 称位 数数 量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视为输入/输出设备,此时该信号由地址总线高位经译码后产生。nRESET复位输入信号,高电平有效。复位后8237A处于空闲状态,清除内部各寄存器,并置位屏蔽触发器。nREADY准备好输入信号,高电平时表示存储器或外设已经准备好。该信号用于DMA操作时与慢速存储器或外部设备同步。第21页/共85页nDREQ3DREQ0DMA请求输入信号,通道3至通道0分别对应DREQ3至DREQ0。当外设请求DMA服务时,由I/O接口向8237A发出DREQ请求信号,该信号一直保持有效,直到收到DMA响应信号DACK后,信号才撤销。其有效电平由编程设定。在优先级固定的方式下,DREQ0优先级最高,DREQ3优先级最低。nHRQ总线请求输出信号。当8237A的任一个未屏蔽通道接收到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读取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读信号,是双向、低电平有效的三态信号。在CPU控制总线期间,它为输入信号,低电平有效时,CPU读取8237A内部寄存器的值;在DMA传送期间,它为输出信号,与相配合,控制数据由外设传送到存储器。第24页/共85页n I/O写信号,是低电平有效的双向三态信号。在CPU控制总线期间,它为输入信号,CPU在控制下对8237A内部寄存器进行编程。在DMA传送期间,它是输出信号,与配合将数据从存储器传送到外设接口中。n 存储器读信号。低电平有效的三态输出信号,仅用于DMA传送。在DMA读传送时,它与 配合,把数据从存储器传到外设;在存储器到存储器传送时,有效控制从源区读出数据。n 存储器写信号,低电平有效的三态输出信号,仅用于DMA传送。在DMA写传送时,它与 配合,把数据从外设传到存储器;在存储器到存储器传送时,有效控制把数据写入目的区。第25页/共85页n DMA过程结束信号。它是双向低电平有效信号,其有效时,可使8237A内部寄存器复位。在DMA传送期间,当任一通道当前字节数寄存器的值为0时,8237A从EOP引脚输出一个低电平信号,表示DMA传输结束。另外,8237A允许由外部送入一个有效的EOP信号,强制结束DMA传送过程。nAEN地址允许输出信号,高电平有效。AEN为高电平时,允许8237A将高8位地址输出至地址总线,同时使与CPU相连的地址锁存器无效,即禁止CPU使用地址总线。AEN为低电平时,8237A被禁止,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这个寄存器的值可由CPU写入或读出。若8237A编程为自动初始化,则在每次DMA操作结束发出信号后,该寄存器自动恢复为它的初始值。(2)当前字节数寄存器:它保持着当前要传送的字节数,每次DMA传送后内容减1。n当它的值由零减为FFFFH时,将发出信号,表明DMA操作结束。n它的值可由CPU读出。在自动初始化方式时,有效时自动装入初始值(即基地址寄存器的值)。第28页/共85页(3)基地址寄存器:它存放着与当前地址寄存器相联系的初始值。CPU同时写入基地址寄存器和当前地址寄存器。基地址寄存器的值不会修改,且不能读出。(4)基字节数寄存器:它存放着与当前字节数寄存器相联系的初始值。CPU同时写入基字节数寄存器和当前字节数寄存器。基字节数寄存器的值不会修改,且不能读出。(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发出总线请求信号,获得总线控制权后,再进行下一个字节的传送。n单字节传送模式的特点是:一次传送一个字节,效率较低;但他将保证在两次DMA传送之间CPU有机会重新获取总线控制权,执行一个CPU总线周期。第30页/共85页(2)数据块传输模式:n这种传输模式可以连续传输多个字节。8237A获得总线控制权之后,可以完成一个数据块的传输,直到当前字节数寄存器由0减为FFFFH,或由外部接口输入有效的信号时,8237A才释放总线,将总线控制权交还CPU。n数据块传送的特点是:一次请求传送一个数据块,效率高;但整个DMA传送期间CPU长时间无法控制总线。第31页/共85页(3)请求传输模式:n这种传输模式也可以连续传送多个字节的数据。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连接系统总线,此时第二级各个8237芯片的优先级与所连的第一级通道相对应。这样由5片8237构成的二级主从式DMA系统中,DMA数据通道可扩展到16个。n注意:主片需要在模式寄存器中设置为级联方式,而从片不设置为级联方式。8237A的这4种工作模式可以通过置工作模式寄存器来设定。工作模式寄存器各位的定义如图7-5所示。第33页/共85页第34页/共85页6屏蔽寄存器8237A内部的屏蔽寄存器对应于每个通道的屏蔽触发器,当其设置为1时禁止该通道DMA请求。在复位后,4个通道全置于屏蔽状态。在编程时根据需要清除某些屏蔽位,允许产生DMA请求。如果某个通道编程规定为不自动初始化的情况下,则当该通道产生信号时,它所对应的屏蔽位置位,必须再次编程为允许,才能进行下一次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请求,所以有一个请求寄存器。nCPU通过请求字写入请求寄存器,图7-8为请求字格式。n其中D1D0位决定写入的通道,D2位决定是请求(置位)还是复位。每个通道的软件请求位分别设置,它们是非屏蔽的。它们的优先权同样受优先权逻辑的控制。它们可由TC或外部的信号复位,RESET复位信号使整个寄存器清除。n注意:只有在数据块传送模式才能使用软件请求。若是存储器到存储器传送,则必须由软件请求启动通道0。第39页/共85页第40页/共85页9命令寄存器n这是DMAC 4个通道公用的一个8位的寄存器,用于设定8237A的工作方式,由CPU编程写入,并用复位信号和软件命令清除。复位时使其清零。命令字格式如图7-9所示。n8237A中有两种优先权编码:固定优先权编码和循环优先权编码。n在固定优先权编码中,4个通道的优先权是固定的n在循环优先权编码中,本次循环中最近一次服务的通道在下次循环中变成最低优先权,其他通道依次轮流相应的优先权。n不论用哪种优先权编码,某个通道经判别优先权获得服务后,其他通道无论其优先权高低,均被禁止,直到已服务的通道结束传送为止。n当D0=1时将选择存储器到存储器的传送方式。此时,通道0的现行地址寄存器存放源地址。若D1也置位,则在整个存储器到存储器的传送过程中始终保持同一个源地址,以便实现将一个目的存储区域设置为同一个值。第41页/共85页第42页/共85页n在系统性能允许的范围,为获得较高的传输效率,8237A能将每次传输时间从正常时序的3个时钟周期变为压缩时序的2个时钟周期。n在正常时序时,命令字的D5选择滞后写或扩展写。n其不同之处是写信号滞后在S4状态有效(滞后写)还是扩展到S3状态有效(扩展写)。第43页/共85页10暂存寄存器n它是一个8位的寄存器,在存储器至存储器传送期间,用来暂存从源地址单元读出的数据。n当数据传送完成时,所传送的最后一个字节数据可以由CPU读出。用复位信号可清除此寄存器。第44页/共85页11复位命令及清除高低触发器命令(软件命令)n8237A有3种软件命令,不需要通过数据总线写入控制字,直接对地址和控制信号进行译码得到。(1)总清除命令(软件复位命令):n其功能与硬件RESET信号相同,执行软件复位命令使8237A的控制寄存器、状态寄存器、DMA请求寄存器、暂存器及先/后触发器清0,使屏蔽寄存器置1。n写入此命令时要求地址信号A3A2A1A0=1101。第45页/共85页(2)清除先/后触发器命令:n8237A的先/后触发器用以控制写入或读出内部16位寄存器的高字节还是低字节,若先/后触发器为零,则读写低字节;为1则读写为高字节。n复位后,该触发器被清0,进行一次读写低字节的操作后,触发器变为1,再对高位进行操作。使用此命令可以改变将要进行的16位数据读/写的顺序。n此时要求地址信号A3A2A1A0=1100。第46页/共85页(3)清屏蔽寄存器命令:n这个命令使屏蔽寄存器的4位都清为0,使4个通道都被允许DMA通道请求。n对8237A的编程,就是将数据和控制字分别写入地址寄存器、字节数寄存器和模式寄存器、屏蔽寄存器、命令寄存器。若不是软件请求,则在完成编程后,由通道的引脚输入有效DREQ信号启动DMA传送过程。n若用软件请求,则再写入指定通道的请求字,就可开始DMA传送。第47页/共85页8237A内部10种寄存器和3种软件命令如表7-2所示。表7-2 8237A寄存器和软件命令寻址第48页/共85页7.3.4 8237A的传送时序8237A工作时序如图7-10所示,可分为SI、S0、S1、S2、S3、S4和SW。A15A0A7A0A7A0SIS0S1S2S3S4S2S3S4SIDB7DB0CLKDREQHRQHLDAAENADSTBA7 A0DACKMEMR/IORMEMW/IOWEOP正常读扩展写扩展写正常读正常写正常写压缩读压缩读传输结束图7-10 8237A工作时序 第49页/共85页nSI:闲状态。在没有DMA请求时,8237A处于SI状态。在SI期间,CPU可以对8237A进行编程,设置控制命令或读取状态信息,同时,在此期间8237A对各通道的DERQ端进行测试,判断是否有DMA请求。当某通道的DERQ电平有效,则表示此通道有DMA请求。于是8237A在SI的上升沿使HRQ变为有效电平,向CPU提出DMA请求从而进入S0状态。nS0:线请求状态。在此期间8237A等待CPU的响应信号,直到CPU发出响应信号HLDA后,进入S1状态。第50页/共85页nS1:在S1期间,8237A送出地址允许信号AEN,使8237A占有地址总线A15A0,同时ADSTB的下降沿锁存地址A15A8。在传输一个256字节数据块时,需要改变A15A8,此时用到S1状态。而一般情况下这几个地址不变,因此S1可以省去,直接进入S2状态。nS2:修改存储单元低16位地址。8237A从DB7DB0输出地址A15A8,从A7A0输出低8位地址,但只有等到S3状态A15A8才会出现在地址总线上。第51页/共85页nS3:读数据状态。在S3状态A15A8出现在地址总线上,8237A工作于普通时序时,需要用S3状态;若8237A工作于压缩时序,不用S3状态,直接进人S4状态,此时只更新低8位地址A7A0,高8位地址A15A8不变。同时,普通时序时S3状态产生读信号或,被传送的字节读出到数据线DB上;压缩时序时,或信号在S4状态产生。nSW:等待状态。若外部设备速度慢,在S3状态之后插入SW状态。第52页/共85页nS4:写数据状态。S4期间,或有效,完成数据写入。同时测试传输模式,若是块传输立即回到S2状态传输下一个字节。n综上所述,普通时序进行一次DMA传输,一般用3个时钟周期:S2、S3、S4;压缩时序多数情况用2个时钟周期:S2、S4状态。第53页/共85页7.4 8237A在PC上的应用 7.4.1 8237A在IBM PC/XT上的应用1电路简介DMA控制电路,如图7-11所示。第54页/共85页图7-11 PC/XT微型机的DMAC电路示意图 第55页/共85页2页面寄存器及20位地址形成 n8237A每个通道的最大传送长度为64K,它提供16位地址。但XT机使用20位地址总线。所以,在DMA传输时,DMA控制电路还要提供高4位A19A16地址,称为页面地址。为此,XT机设计有DMA页面寄存器,它采用4个4位的寄存器堆电路74LS670,存放4个DMA通道所需的高4位地址A19A16。n74LS670内部有4个(称为组)寄存器,每组4位。它的4位数据输入端接至系统数据总线的低4位D3D0,4位数据输出端接至系统地址总线高4位A19A16。当控制端为低时,数据从数据输入端写入由WB和WA编码所指定的某组寄存器中;当控制端为低时,数据从由RB和RA编码指定的寄存器组中读出送至数据输出端,如表7-3所示。第56页/共85页第57页/共85页写入页面寄存器内容由CPU的I/O写操作实现。页面寄存器的端受信号控制,当对端口地址80H9FH 执行写操作时,它为低电平有效。寄存器组写入选择端,WA接地址线A0,WB接A1,这样通常仅用80H83H这4个端口地址,如表7-4所示。第58页/共85页由DMA控制电路看到,页面寄存器读出的控制条件是 为低电平,即DMA操作期间,读出选择端RB接通道2的响应信号 DACK2,RA接通道3的DACK3,从表7-4看出,0组寄存器并未使用,这是因为通道0用于动态存储器的刷新,不需要页面寄存器的内容。第59页/共85页n综上所述,进入DMA服务的S1状态时,8237A通过DB7DB0输出地址A15A8,并发出地址锁存信号ADSTB,把它选通至地址锁存器中。同时,8237A输出低8位地址A7A0,并在整个DMA有效周期保持有效。在DMA服务期间,信号为低电平,它将选通地址驱动器的低8位地址A7A0、地址锁存器地址A15A8以及事先写入页面寄存器的高4位地址A19A16,送至系统地址总线,形成20位DMA传输所需的内存地址。需注意的是,页面寄存器不具有自动增减量功能,所以高4位在整个DMA传送过程中是不会改变的。第60页/共85页3ROM-BIOS对8237A的初始化在系统ROM-BIOS中有一段上电自测试程序,它对系统各部件进行测试,以确定系统部件是否无故障,然后对通道0通道4进行初始化。下面是ROM-BIOS对8237A进行测试和初始化的部分程序。第61页/共85页 OUT 0DH,AL ;DMA主清除命令 MOV AL,0FFH ;通道寄存器的初始值C16:MOV BL,AL ;保存在BX MOV BH,AL MOV CX,08 ;循环测试8次,因有8组通道寄存器 MOV DX,00 ;DMA通道寄存器地址送DXC17:OUT DX,AL ;写入通道寄存器低字节 PUSH AX ;(本句在ROM-BIOS中用于其他目的)OUT DX,AL ;写入通道寄存器高字节 MOV AL,01 IN AL,DX ;读出通道寄存器低字节 MOV AH,AL IN AL,DX ;读出通道寄存器高字节 CMP BX,AX ;写入值等于读出值吗?JE C18 ;相等,则正确,转下一组寄存器 HLT ;不等,则有故障,停机 C18:INC DX ;DX指向下一个通道寄存器地址 LOOP C17 ;循环测试 INC AL ;再次测试,此时初始值设为0 JZ C16 ;转测试 第62页/共85页MOV DS,BXMOV ES,BXMOV AL,0FFH OUT 01,AL ;写入通道0的字节数寄存器低字节PUSH AX ;(与前同)OUT 01,AL ;写入通道0的字节数寄存器高字节MOV AL,58H ;通道0模式字:单字节传送方式,DMA读,地址增量,自动初始化OUT 0BH,AL MOV AL,0 MOV CH,ALOUT 08,AL ;DMA命令字:禁止存储器到存储器传输方式,固定优先权,正常时序,滞后写,DREQ高有效(PC总线用DRQ表示),DACK低有效(PC总线用DACK表示),DMA开始工作。PUSH AX ;(与前同)OUT 0AH,AL ;通道0屏蔽字,允许DREQ0提出申请MOV AL,12H ;定时器8253计数器1的计数值OUT 41H,AL ;计数器1以方式2开始工作,15s以后才会申请通 道0 的DMA读操作第63页/共85页MOV AL,41HOUT 0BH,AL ;通道1模式字:单字节传送模式,校验,地 址增量,非自动初始化PUSH AX ;(与前同)IN AL,08H ;读出8237A的状态寄存器AND AL,10H ;通道0请求吗?JE C18C ;计数器开始到读出状态仅执行了3条指令,在4.77MHz下不会超过 l0s。HLT ;有请求,则说明有故障,停机C18C:MOV AL,42H ;通道2模式字;功能同通道1OUT 0BH,ALMOV AL,43H;通道3模式字:功能同通道1OUT 0BH,AL 第64页/共85页7.4.2 8237A在IBM PC/AT上的应用n在IBM PC/AT上,采用了两片8237A,并将DMAC1作为从级,级联到DMAC2的通道。为系统提供了7个DMA通道。nDMAC1包含通道03(CH0CH3)。通常,通道2用于软盘与内存的数据交换,通道1用于SDLC通信接口卡,通道0和3备用。nDMAC2包含通道47(CH4CH7)。通道4用于把DMAC1与DMAC2级联起来。通道57支持16位I/O接口板与16位系统存储器之间的16位数据传送,每个通道能够传送的数据量最大128KB。第65页/共85页1DMA控制器电路AT机系统板的DMA子系统主要包括DMA控制器电路,其中有两片8237A和两片地址锁存器ALS573,如图7-12所示;1片页面寄存器电路(LS612)和相应的DMA应答和等待电路。根据系统板I/O译码电路所产生的DMA片选信号,其端口地址范围是00001FH、0C0H0DFH。DMAC1的A0引脚同地址线A0相连,A4未参加译码,取A4=0时的地址000FH为DMAC1的端口地址。而DMAC2的A0引脚同地址线A1相连,A0未参加译码。取A0=0时的16个偶地址为DMAC2的端口地址如表7-2所示。第66页/共85页图7-12 AT机的DMA控制器电路 第67页/共85页DMAC的时钟输入DMA CLK是由系统时钟SYSCLK经二分频后得到的。在标准AT机中,DMACLK的频率是3MHz,即时钟周期约为333ns。为配合慢速外设或存储器,可控制DMAC的READY引脚,插入等待状态Sw。在AT机系统已经插入了一个Sw。在对DMAC和外设初始化设置以后,就可以进行DMA操作了。CPU与DMAC的应答过程如下:第68页/共85页n首先,由外设向DMAC送出DMA请求信号DREQ。DMAC收到后,向CPU送出保持请求信号HRQ(DMAC1有请求时,是通过DMAC2送出请求信号HRQ1的)。请求信号HRQ1通过DMA应答电路,向CPU送出CPU HRQ请求信号,申请使用系统总线。CPU的HOLD引脚收到请求信号后,在这一个总线周期即将结束时,由CPU的HLDA引脚送出保持应答信号,并释放总线的使用权。HLDA信号通过DMA应答电路送出HLDA1,它接至DMAC2的HLDA引脚,作为DMAC的应答信号。DMAC收到应答信号后,接管系统总线,并向外设送出DMA应答信号。外设在接收到信号后,在DMAC的管理下,把数据送上总线或从总线读取数据。第69页/共85页n两片8237A的过程结束信号线分别通过一个10K电阻接到+5V电源,以防止输入过程结束信号。计数终止信号T/C正是由这两个信号经与非逻辑后产生的;不论哪个通道的DMA传送结束都会得到有效的过程结束信号。第70页/共85页2页面寄存器及24位地址的形成AT机地址总线有24位A23A0,系统中增设了一个DMA页面寄存器74LS612,处理高8位地址A23A16,如图7-13所示。第71页/共85页图7-13 页面寄存器电路 第72页/共85页n页面寄存器74LS612是三态输出的存储器映像器,是专为分页式存储器映像而设计的TTL集成电路。n它内部包含一个4:6译码器、16个12位的RAM、16个12位映像寄存器等单元。它有读、写、映像和通过4种操作方式,但在系统中只用到前3种。在CPU有效周期,用读写方式对页面寄存器编程;在DMA有效周期,用映像方式产生高位地址。n当LS612片选为低时,在读写信号R/W控制下,可从寄存器选择输入RS0RS3选通内部映像寄存器而进行数据的读写,数据的输入输出在数据线D7D0上。片选面由系统I/O译码电路产生。端口地址为809FH。第73页/共85页n当为高,而映像控制方式选择为低时,执行映像操作。在输出允许为低有效时,把由映像地址输入MA3MA0选中的映像寄存器的内容从输出端MD7MD0输出。从MD7MD0输出的数据就是DMA请求通道的高8位地址。在DMA有效周期里,系统总线无效,所以无效,即确为高电平。连接信号,而信号是CPU保持应答信号HLDA的反相输出,在DMA有效周期为低有效。映像地址输入MA3MA0接到DMA响应输出及存储器刷新信号REFRESH的译码电路上,所以哪个映像寄存器被选中取决于及REFRESH的译码。n例如,通道0工作时,因DMAC1通过DMAC2的通道4进行级联,故为低,它送到页面寄存器的MA3=0。通道0工作,为低,即MA2=1。另外,DMAC一个时刻只能有一个通道工作,故、为高,即MA1=1;、为高,即MA0=1。由此可以看出,通道0工作时,MA3MA0=0111;它对应的页面寄存器的I/0地址为87H。采用此种方法,可以导出DMA通道和页面寄存器I/O地址的对应关系,如表7-5。第74页/共85页第75页/共85页n对于DMAC1的通道0通道3 8237A提供A15A016位地址。其中A7A0直接挂在系统总线上。在DMA有效周期,8237A的数据线输出A15A8地址信号,并由地址选通信号ADSTD对地址锁存器ALS573使能,把A15A8信号锁存到地址锁存器中;在地址允许信号AEN有效时,即产生A15A8地址。此时,高8位页面地址由页面寄存器输出A23A16。n通道0到通道3每页地址的最大空间为64KB。第76页/共85页n对于DMAC2的通道5至通道7,8237A提供A16A1的16位地址,而A0被强迫为逻辑0。此时,A8A1直接挂在系统总线上;而8237A由数据线输出A16A9地址信号,在地址选通信号ADSTD对地址锁存器ALS573使能时,把A16A9 信号锁存于该锁存器,并在地址允许信号AEN有效时,产生A16A9地址。此时,AEN1无效,三态门关闭A16的输出,页面寄存器仅输出高7位页面地址A23A17。所以,通道5到通道7每页地址的最大空间为128KB。n图7-12中的信号来自系统I/O通道,用于外设进行DMA操作时管理系统总线,通常为高电平。第77页/共85页3ROM-BIOS对DMA控制器的初始化C21Z:SUB AL,AL;DMAC1、DMAC2初始化 OUT 08H,AL;命令字:OOH,送DMAC1 OUT 0DOH,AL;命令字:OOH,送DMAC2 MOV AL,40H OUT 0BH,AL;通道0模式字:40H MOV AL,OCOH OUT OD6H,AL;通道4模式字:COH,级联方式 JMP DAMC24DAMC24:MOV AL,41H OUT 0BH,AL;通道1模式字:41H OUT 0D6H,AL;通道5模式字:41H JMP DAMC25 DAMC25:MOV AL,42H OUT OBH,AL;通道2模式字:42H OUT OD6H,AL;通道6模式字:42H JMP DAMC26DAMC26:MOV AL,43H OUT OBH,AL ;通道3模式字:43H OUT OD6H,AL ;通道7模式字:43H 第78页/共85页n8237A初始化写入命令字为0,通常不应改变,即采用滞后写的正常时序、DREQ高电平有效,DACK低电平有效,固定优先权(依次为通道0、17)。通道4用于级联不应改变,其他通道可按实际情况设定不同模式。AT机虽不用通道0进行刷新,但仍用DMA操作进行刷新(每15ms进行一次),所以进行DMA传送不能长时间占用总线(不应超过15ms)。第79页/共85页7.5 DMA读传送实例 如图7-14为一个用于IBMPC系列机的DMA读传送的接口电路。每当外设准备好接收数据时,提出一次DMA请求,经过D触发器产生DRQ1有效信号。当微机系统允许DMA操作时,它就会输出DMA通道1响应信号,同时在DMAC输出的I/O写信号的控制下,将内存40000

    注意事项

    本文(DMA控制器学习教程.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开