




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第6章DMA传输,6.1DMA传输原理6.2DMA控制器8237A6.38237A的编程使用,2,直接存储器传送(DirectMemoryAccessDMA),将外设的数据不经过CPU直接送入内存储器,或者,从内存储器不经过CPU直接送往外部设备,一次DMA传送只需要执行一个DMA周期(相当于一个总线读写周期),因而能够满足高速外设数据传输的需要。,3,6.1DMA传输原理,1.DMA控制器使用DMA方式传输时,需要一个专门的器件来协调外设接口和内存储器的数据传输,这个专门的器件称为DMA控制器,简称DMAC。,4,DMAC内部的寄存器:,地址寄存器:存放DMA传输时存储单元地址;字节计数器:存放DMA传输的字节数;控制寄存器:存放由CPU设定的DMA传输方式,控制命令等;状态寄存器:存放DMAC当前的状态,包括有无DMA请求,是否结束等。,5,图6-1,6,DMAC在系统中有二种不同的作用:,总线从模块:CPU对DMAC进行预置操作,也就是向DMAC写入内存传送区的首地址、传送字节数和控制字时,DMAC相当于一个外设接口,称为总线从模块。,总线主模块:进行DMA传输时,CPU暂停对系统总线的控制,DMAC取得了对总线的控制权,这时的DMAC称为总线主模块。,7,2.DMA传输过程,总线请求:DMAC向CPU申请使用总线总线控制转移:CPU同意DMAC管理总线数据传输:外设接口和存储器之间传输数据修改地址和计数器:为下一次传输做准备结束处理:DMAC放弃对总线的控制权,以上的过程完全由硬件电路实现,速度很快。用DMA方式进行一次数据传输所经历的时间称为“DMA周期”,大体上相当于一次总线读写周期的时间。,8,例:用DMA方式将串行通信口接收到的200字节的数据存入以BUFFER为首地址内存区域,对DMAC进行预置:向DMAC写入内存首地址,传输字节数(200),传输方向(外设接口内存),控制命令(允许DMA传输)等;对串行通信接口进行初始化,设置串行通信的参数,允许串行输入等;串口每输入一个数据,自动进行DMA传输;最后一个数据传输结束后,DMAC发出传输结束信号EOP。CPU可以通过查询知道传输已经结束,也可以利用EOP信号申请中断,在中断服务程序里进行结束处理。DMA方式传输200字节过程为:1次对DMAC初始化,1次对串口初始化,200次DMA周期,1次结束处理。,9,8086系统中的DMA信号,最小模式CPU通过HOLD接收DMA控制器的总线请求;在HLDA引脚上发出对总线请求的允许信号。,最大模式通过RQ/GT0和RQ/GT1引脚接收DMA控制器的总线请求,发送对总线请求的允许信号。RQ/GT0引脚有较高的优先权。,10,6.2DMA控制器8237A,18237A芯片的主要特点,有4个完全独立的DMA通道,可分别进行编程控制。每个通道的DMA请求均可分别允许和禁止,并对各通道进行优先级排队。数据块最大为64KB,每传送一个字节后地址自动加1或减1。DMA请求可以由外部输入,也可以由软件设置。可以用级联的方法扩展DMA通道数。可以进行从存储器到存储器的数据传输,用于对存储区域进行初始化。,11,28237A的工作方式,(1)单字节传输方式8237A每申请一次总线,进行1个字节传输,然后释放系统总线,一次DMA传输结束。CPU可以在每个DMA周期结束后控制总线,进行数据传输,所以不会对系统的运行产生大的影响。(2)块传输方式DMA控制器获得总线控制权后,可以连续进入多个DMA周期,进行多个字节的传输(最多64K字节)。这种方式可以获得最高的数据传输速度。如果一次传输的数据较多,对系统工作可能产生一定的影响。,12,(3)请求传输方式,申请一次总线可以连续进行多个数据的传输。每传输1个字节后,8237A都对外设接口的请求信号进行测试:DREQ端无效,暂停传输;DREQ有效,接着进行下一个数据的传输。允许数据不连续,按照外设的最高速度进行数据传输,使用比较灵活。,13,(4)级联传输方式,几个8237A进行级联,一片8237A用作主片,其余用作从片,构成主从式DMA系统。从片收到外设接口的DMA请求信号后,向DMA控制器主片申请,再由主片向CPU申请。一片主片最多可以连接四片从片。这样,五片8237A构成的二级DMA系统,可以得到16个DMA通道。级联时,主片通过软件在方式寄存器中设置为级联传输方式。从片设置成上面的三种方式之一。,14,38237A的传输类型,(1)DMA写传输(IO存储器)(2)DMA读传输(存储器IO)(3)DMA检验(完成校验过程,测试DMA控制器的状态)。(4)存储器到存储器传输,15,6.2.28237A的内部结构和外部连接,8237A的内部结构分成二部分:四个DMA通道和一个公共控制部分,16,17,1.DMA通道,8237A有四个独立的通道(CH0一CH3)每个通道:16位地址寄存器;16位字节计数器;8位方式寄存器;1位的DMA请求触发器;1位的屏蔽触发器。四个通道公用一个控制寄存器和一个状态寄存器。,18,DMA通道-地址寄存器,由基地址寄存器和当前地址寄存器组成。对8237编程时,把本通道DMA传输的地址初值写入基地址寄存器,再由8237A传送到当前地址寄存器。当前地址寄存器在每次DMA传输后自动加1或减1。CPU可以通过输入指令读出当前地址寄存器值(每次读8位)。基地址寄存器不能被读出,且一直保持初值。数据块传送完成后,可以把当前地址寄存器的内容恢复为基地址寄存器保存的初值。(需要在编程时设置“自动预置”方式),19,DMA通道-字节计数器,字节计数器由基本字节计数器和当前字节计数器组成。编程时,由指令把DMA传输的字节数写入基本字节计数器,继而传送到当前字节计数器(初值要比实际传输的字节数少1)每进行一次DMA传输,当前字节计数器自动减1。它的值由0减到FFFFH(-1)时,产生计数结束信号EOP。当前计数器的值可以由CPU通过输入指令分两次读出。,20,2.读写逻辑,8237A在系统总线中作为“从模块”时接收CPU对IO接口的读(IOR#)、写(IOW#)信号;对地址总线的低4位(A0A3)译码;片选和IOW#信号有效时,把数据总线的内容写入所寻址的寄存器;片选和IOR#有效时,把选择的寄存器内容送到数据总线上。,21,2.读写逻辑,8237A在系统总线中作为“主模块”时DMA写周期:读写逻辑产生IOR#控制逻辑产生存储器写(MEMW#)数据从外设接口传送到存储器单元;DMA读周期:读写逻辑产生IOW#控制逻辑产生存储器读(MEMR#)数据从存储器单元传送到外设接口。,22,3.控制逻辑,DMA周期内,控制逻辑通过产生控制信号和16位要存取的存储单元地址来控制DMA操作步骤。初始化时,通过对方式寄存器编程,使控制逻辑可以对各个通道的操作进行控制。,23,4锁存缓冲器(外接),使用8237A工作时,需要外接一个八位的地址锁存缓冲电路,它能够储存八位的地址信号,通过可控的三态门连接系统地址总线。在DMA传送之前,8237A从DB0DB7把存储器地址的A8A15送入这个锁存器。在DMA周期里,锁存器将锁存的地址送往系统地址总线的A8A15,同时从A0A7引脚发送地址的低八位。,24,5页面地址寄存器(外接),8237A控制了地址总线的16位,所以最多只能连续传送64K字节的数据。为了控制8086系统20位的物理地址,需要外接一个四位的“页面地址寄存器”(PC机地址:83H)页面地址寄存器的值由CPU写入8237A发送低16位地址时,高四位的地址从页面地址寄存器发往地址总线的A16A19,25,6.2.38237A的对外连接信号,8237A作为从模块时的引脚信号(1),RESET复位输入端,高电平有效。复位时,屏蔽寄存器被置1,其他寄存器均清0。CS#片选输入端,低电平有效,由A4A15译码得到。为低电平时,8237A被选中,CPU可以对8237A进行读写(进行预置或读取工作状态)。A3A0最低的4位地址线,双向信号引脚。DMA控制器作为从模块时,A3A0作为输入端,用来选择DMAC内部的16个端口地址。,26,8237A作为从模块时的引脚信号(2),IOR#IO设备读信号,双向、三态、低电平有效。作为从模块时为输入。有效时,CPU读DMA控制器内部寄存器的值。IOW#IO设备写信号,双向、三态、低电平有效。作为从模块时输入。有效时,CPU向DMA控制器的内部寄存器中写入信息(进行编程)。DB7DB08位双向三态数据线。DMA控制器作为从模块时,CPU通过DB7DB0对8237A进行读写。,27,8237A作为总线主模块时的引脚信号,(1)地址信号A3A0DMAC为主模块时,提供存储器最低4位地址(输出)。A7A4-提供存储器的中间4位地址(输出)DB7DB0输出当前地址寄存器中的高8位地址,并通过信号ADSTB打入外部锁存器,和A7A0输出的低8位地址一起构成16位地址。,28,地址信号ADSTB地址选通信号,输出,高电平有效。信号有效时,将DMAC高8位地址经DB7DB0送到外部锁存器。AEN地址允许信号,输出,高电平有效。把高12位地址(地址锁存器中高8位、页面地址寄存器最高4位)一起送到地址总线上,与芯片直接输出的低8位地址共同构成20位内存地址。AEN信号也使与CPU相连的地址锁存器无效。保证地址总线上的信号来自DMA控制器,而不是来自CPU。,29,(2)对存储器/外设接口的读写控制信号,IOR#作为主模块时,IOR#输出外设接口的读控制信号,信号有效时,IO接口部件中的数据被读出送往数据总线。IOW#作为主模块时,IOW#输出外设接口的写控制信号,信号有效时,存储器中读出的数据被写入IO接口中。READY准备就绪信号,输入,高电平有效。所用的存储器或IO接口的速度较慢时,使READY处于低电位,8237A会自动插入等待周期。数据准备就绪时,READY端为高电平,表示可以进行数据传输。,30,(2)对存储器/外设接口的读写控制信号,MEMR#存储器读信号,低电平有效,输出。信号有效时,所选中的存储器单元的内容被读到数据总线。MEMW#存储器写信号,低电平有效,输出。信号有效时,数据总线上的内容被写入选中的存储单元。,31,(3)DMA联络信号,DREQ通道DMA请求信号,输入。每个通道对应一个DREQ信号端,它的极性可以通过编程来选择。外设接口要求DMA传输时,使DREQ处于有效,DMAC控制器送来DMA响应信号DACK以后,接口撤除DREQ的有效电平。DACK通道DMA应答信号,输出。DMAC送给接口的回答信号,每个通道有一个DACK信号端。DMAC获得CPU送来的总线允许信号HLDA以后,产生DACK信号送到外设接口。DACK信号的极性可以通过编程选择。该信号相当于IO接口的地址选择信号。,32,HRQ总线请求信号,输出。8237A收到外设接口发来DREQ信号后,如果该通道的DMA请求没有被屏蔽,DMAC通过HRQ端向CPU发出总线请求。HLDA总线响应信号,输入。DMAC向CPU发总线请求信号HRQ以后,CPU发回的总线响应信号。8237A收到该信号后,便获得了总线控制权。HLDA也称为总线保持回答信号。EOP#DMA传输结束信号,低电平有效,双向。从外部向DMAC送一个EOP#信号时,DMA传输过程被强制性地结束。DMAC任一通道计数结束时,EOP#会输出一个有效电平,作为DMA传输结束信号。可以使用EOP#信号向CPU申请中断,进行DMA传输的结束处理。,33,3.其他引脚信号,CLK时钟输入端。8237A的时钟频率为3MHz;8237A-4的时钟频率为4MHz;8237A-5的时钟频率为5MHz后面两种DMA控制器是8237A的改进型,工作速度比较高,但工作原理及使用方法相同。电源,地提供8237A工作所需要的+5V电源。,34,4.小结,(1)作为从模块工作时,CPU对8237A进行预置或读取状态,8237A相当于一个IO接口CPU发来的高12位地址经过地址译码器产生片选信号,使得CS为低电平,表示本芯片片被选中。CPU发来的低4位地址送到8237A的相应引脚,选择内部寄存器。IOR#和IOW#作为输入信号,用作对8237A的读写控制。IOR#为低电平:CPU读取8237A内部寄存器的值。IOW#为低电平:CPU将数据写入8237A的内部寄存器。,35,(2)作为主模块工作时,向总线提供要访问的内存地址:高八位地址在ADSTB信号的配合下,通过DB7DB0输出到外部连接的地址锁存缓冲器。低八位通过A7A0输出AEN输出高电平:选通外部锁存器的输出三态门,将锁存器高8位地址送往A15A8页面地址寄存器向A16A19输出4位地址与CPU相连的三个地址锁存器停止工作在整个数据块的传输过程中,页面4位地址保持不变,因此,DMA传输的字节数限制在216以下。,36,向接口和存储器提供读写控制信号:输出IOR#和IOW#,控制外设接口的数据传输方向。输出MEMR#和MEMW#,控制存储器的读写。,(2)作为主模块工作时,37,38,6.2.48237A的工作时序,8237A使用独立于CPU的时钟;时钟周期分为两大类:空闲周期有效周期周期也称为状态(STATUS)。,39,1.空闲周期SI,8237A复位后就处于空闲周期:在此周期,CPU可对8237A作初始化编程或者,虽然已经初始化,但还未有DMA请求输入。空闲周期中,8237A要检查DREQ的状态,确定是否有通道请求DMA服务。同时也对CS端采样,判定CPU是否要对8237A进行读写操作。,40,2.有效周期(由S0S4五种周期组成),S0-等待周期8237A接到外设的DREQ请求,向CPU发出了HRQ,等待CPU让出总线控制权。得到来自CPU的HLDA响应后,结束S0状态。S1地址周期8237用DB0DB7送出高8位地址A8A15用ADSTB将高8位地址送入锁存器使AEN有效传输一段连续的数据时,存储器地址是相邻的,高8位地址往往是不变的。此时,S1可以省略。,41,S2数据读出周期:向外设送出DACK信号,启动外设工作送出数据读控制信号DMA读操作-送出MEMR#DMA写操作-送出IOR#S3-数据写入周期:送出写操作所需的控制信号:DMA读操作-送出IOW#DMA写操作-送出MEMW#S3状态结束时:READY无效,插入SW周期READY有效,进入S4周期,42,S4结束周期:结束本次一个字节传输。,存储器之间数据传输:从源地址中读出一个字节,存入8237A暂存寄存器将这个字节写入目的地址中每个阶段的完成都要经过4个周期(状态)。,S4之后应该是哪一个周期?,?,43,扩展写,写控制信号一般在S3开始有效;采用扩展写方式,写信号在S2就开始变得有效这种做法可以增加写操作时间,满足某些设备的需要。,44,压缩时序,正常时序中,S1用于锁定高8位地址高8位地址不变时,S1是可以省略的S3是一个延长周期,用来保证可靠的读写操作在追求高速传输,且器件的读写速度又可以跟得上时,S3也是可以省略的省略S3之后的时序称为压缩时序压缩时序下,一个字节的传输最少只要两个时钟周期(S2,S4)就可完成,45,6.38237A的编程使用,8237A:共占用16个端口地址(PC机内地址000FH)每个通道占用2个端口地址(共8个)其余8个端口地址由各通道共用地址锁存器(外配,不占用端口地址):锁存8237A送出的高8位地址信号发送高8位地址信号页面寄存器(外配,端口地址83H):存储和发送最高4位地址信号A19A16与8237A发出的16位地址组合得到20位地址信号,46,47,6.3.18237A通道专用寄存器,每一通道内包含四个16位的寄存器:基地址寄存器基字节数寄存器现行地址寄存器现行字节数计数器存放DMA传输的存储器地址及数据字节数每个通道内有一个8位的模式寄存器记录通道的工作方式,48,1基地址寄存器和基字节数寄存器,基地址寄存器存放DMA传送的内存起始地址:寄存器的内容在初始化时由程序写入先写低字节,后写高字节在整个数据块的DMA传输过程中内容保持不变写入后,其内容同时传送到现行地址寄存器基字节数寄存器存放DMA传送的字节数减1写入后,其内容同时传送到现行字节数寄存器这二个寄存器的内容只能写入,不能读出。,49,2.现行地址寄存器,来自基地址寄存器存放DMA传送的当前地址值每次DMA传送后,该寄存器的值自动增量或减量可由CPU读出(先低位,后高位)若设置为自动预置,则在每次计数结束后,自动恢复为它的初始值(即保存在基地址寄存器中的初值)。,50,3.现行字节数寄存器,存放DMA传送过程中没有传送完的字节数减1每次传送后,寄存器的值自动减1该寄存器的值减为FFFFH(-1)时,数据块传送结束,EOP#引脚变为低电平寄存器的值可由CPU读出若设置为自动预置,则在每次计数结束后,自动恢复为它的初始值(即保存在基字节数寄存器中的初值)。,51,图6-3,4.方式寄存器(BASE+0BH),52,6.3.28237A通道公用寄存器,53,图6-4,1.控制寄存器(BASE+08H),54,图6-5,2.状态寄存器(BASE+08H),55,图6-6,3.请求寄存器(BASE+09H),56,图6-7,屏蔽寄存器(BASE+0AH),57,图6-8,综合屏蔽寄存器(BASE+0FH),58,4.复位命令(BASE+0DH),复位命令的功能和RESET功能相同:使控制寄存器,状态寄存器、DMA请求寄存器、暂存器以及先后触发器都清0使屏蔽寄存器置位对端口地址为BASE+0DH的端口实施一次写操作,可以实现对8237A的复位操作。,59,8237A内的“先后触发器”:为0时,访问16位寄存器的低字节;为1时,访问高字节8237A复位时清0。每访问一次16位寄存器,能自动翻转(0变1或1变0)写入内存起始地址或字节计数器初值之前,将这个触发器清0,就可以按照先低位字节,后高位字节的顺序写入初值,清除先后触发器(BASE+0CH),60,6.3.38237A端口地址及通道分配,PC机中,8237A占据00H0FH共16个端口地址。8237A控制器各通道在PC机内的任务:CH0:用作动态存储器的刷新控制CH1:为用户预留CH2:软盘驱动器数据传输用的DMA控制CH3:硬盘驱动器数据传输用的DMA控制,61,6.3.48237A的编程,(1)发复位命令(*)(2)写命令字,设置8237A的工作方式(*)(3)写方式字,设置需使用的通道的工作方式(4)清除先/后触发器(5)写入内存储器起始地址(先写低位,后写高位)(6)写入传送的字节数-1(先写低位,后写高位)(7)清除该通道的屏蔽位(8)启动外部设备,如果是内存到输出设备,用指令设置第一次DMA请求,62,对于IBM-PC系列微型计算机,它的8237A通道0、2、3已分配使用,而且在开机时已对8237A作了初始化。在这种情况下,不允许再对它重新初始化和重新设置控制字上述编程过程的(1)、(2)二步改为:将所需使用的通道置屏蔽状态(这样做是为了在其他设置未完成时避免误动作)。,说明,63,2应用举例,用DMA方式从网络接收数据存入内存缓冲区使用8237A的通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 渔业生产技术培训与合作社合作协议
- 信息安全管理与审计工具箱
- 财务费用核算自动化工具集
- 一场突如其来的大雨事件记事类作文8篇范文
- 销售代理委托协议条款扩展文件
- 特种工种安全培训课件
- 特种工安全培训教学课件
- 企业知识管理与员工培训资源库
- 文件归档方案办公场景表格
- 建材销售个人工作总结
- 可爱的中国教案全册
- 小数除法竖式专项计算144题(有答案)
- 频谱监测及瞬态信号捕获技术课件
- 平凉市崆峒区大寨乡柳沟村地热水矿产资源开发利用方案
- 隧道安全质量培训课件
- 六年级上册语文期末复习句子专项训练及答案
- 2019人教版高中英语选择性必修一UNIT 1 People of Achievement 单词表
- 电力变压器基础知识课件
- JJG 373-1997四球摩擦试验机
- GB/T 37785-2019烟气脱硫石膏
- GB/T 29343-2012木薯淀粉
评论
0/150
提交评论