微机原理及应用CH11 DMA技术与DMA控制器

上传人:n**** 文档编号:56859983 上传时间:2018-10-16 格式:PPT 页数:63 大小:994KB
返回 下载 相关 举报
微机原理及应用CH11 DMA技术与DMA控制器_第1页
第1页 / 共63页
微机原理及应用CH11 DMA技术与DMA控制器_第2页
第2页 / 共63页
微机原理及应用CH11 DMA技术与DMA控制器_第3页
第3页 / 共63页
微机原理及应用CH11 DMA技术与DMA控制器_第4页
第4页 / 共63页
微机原理及应用CH11 DMA技术与DMA控制器_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《微机原理及应用CH11 DMA技术与DMA控制器》由会员分享,可在线阅读,更多相关《微机原理及应用CH11 DMA技术与DMA控制器(63页珍藏版)》请在金锄头文库上搜索。

1、第11章 DMA技术与DMA控制器,11.1 DMA技术概述 11.2 可编程DMA控制器8237A 11.3 DMA技术在微机系统中的应用,无条件传送:传送之前不查询外设状态 程序控制方式 查询传送:传送之前查询外设状态 中断方式:外设准备好后向CPU申请中断, CPU响应中断完成数据传送。 DMA(直接存储器存取)方式:由专用硬件“DMA控制器” 控制内存和外设之间直接传送数据。 (不需要CPU干预),11.1 DMA技术概述,1、DMA传送方式的实现方法: 由专用接口芯片DMA控制器(称DMAC)控制传送过程; 当外设需传送数据时,通过DMAC向CPU发出总线请求; CPU发出总线响应信

2、号,释放总线; DMAC接管总线,控制外设、内存之间直接数据传送。,2、DMA传送方式的特点 外设和内存之间,直接进行数据传送,不通过CPU, 传送效率高。适用于在内存与高速外设、或两个高速外设之间进行大批量数据传送。 电路结构复杂,硬件开销较大。,DMA 传送过程示意图,CPU,DMAC,内存,外设,总线 响应,总线 请求,DREQ,DACK,11.1.1 DMAC的基本功能,接收接口往DMA控制器发出DMA请求信号后,DMA控制器能向CPU发出总线请求信号HOLD(高电平)。 当CPU向DMA发出响应信号HLDA(高电平)以后,DMA能接管对总线的控制,进入DMA方式。 能向地址总线发出内

3、存地址信息,对其进行寻址及修改地址指针。 能向存储器或I/O接口发相应的读写控制信号。 能决定传送字节数,并判断DMA传送是否结束。 DMA过程结束,能向CPU发出DMA结束信号,HOLD变低,将总线控制权还给CPU,CPU恢复正常工作。,11.1.2 DMAC的一般结构,图11.1 单通道DMAC的一般结构及其与I/O接口的连接,11.1.3 DMAC的工作方式,1、单字节传输方式:在单字节传输方式下,DMA控制器每次请求总线只传送一个字节数据,传送完后即释放总线控制权。 2、块传输方式(也称组传输方式):块传输方式是指DMA控制器每次请求总线连续传送一个数据块,待整个数据块全部传送完成后再

4、释放总线控制权。,3、请求传输方式:此方式与块传输方式基本类似,不同的是每传输完一个字节,DMA控制器都要检测由I/O接口发来的DMA请求信号是否仍然有效,如果该信号仍有效,则继续进行DMA传输;否则,就暂停传输,交还总线控制权给CPU,直至DMA请求信号再次变为有效,数据块传输则从刚才暂停的那一点继续进行下去。,11.1.4 DMA操作过程,若从外设往内存输入一个数据块(输入过程),在单字节传输方式下,主要工作过程为: 从I/O接口向DMA控制器发送DMA请求信号。 DMA控制器向CPU发总线请求信号,当得到CPU送来的总线允许信号后,DMA控制器获得总线控制权。 DMA控制器将其地址寄存器

5、的内容送到地址总线上。 DMA控制器往I/O接口发送DMA响应信号,并接着发出I/O接口的读信号,使I/O接口把数据送到数据总线上。,DMA控制器发出存储器写信号,使数据传送到由地址总线的地址所指向的内存单元。 地址寄存器加1。 字节计数器减1。 如果字节计数寄存器的值不为零,则返回第步,否则进入第步。 DMA控制器释放总线。,图11.2 以DMA方式输出一个字节数据的工作过程,11.2 可编程DMA控制器8237A,11.2.1 8237A的主要特性 1具有四个独立的DMA通道,每个通道都具有64K的存贮器寻址能力,即一次传送的最大长度为64K字节。 2可实现内存与外设之间的高速大批量数据传

6、送,也可实现内存两个不同区域之间的高速数据传送。 3每个通道的DMA请求均可分别允许或禁止,且四个通道的DMA请求的优先权可由软件设置为固定的或旋转的。,4具有单字节传送、数据块传送、请求传送和级联传送四种工作方式。 5可用级联方式扩展DMA通道数目。 6DMA传送结束信号可由内部计数产生,也可由外部输入提供。 7单一的+5V电源,40个引脚双列直插式封装。 8采用5MHz时钟,传送速率可达1.6M字节/秒。 98237可以级连,任意扩展通道数。,11.2.2 8237A的工作原理,18237A的编程结构 编程结构见下页图 内部有大量寄存器,内部寄存器的功能、端口地址等信息 参见表11.1.,

7、图11.3 8237A的编程结构,几点说明:,请求触发器每通道一位,四个通道的请求触发器占用同一个端口地址,实际上构成一个4位的寄存器,屏蔽触发器也是一样。 控制寄存器和状态寄存器共用一个端口地址,一个为只读,一个为只写。 写屏蔽字时有两种方式: 某一通道的屏蔽字,应写到1010端口; 四个通道屏蔽字,则写入1111端口。,各通道的基地址寄存器和当前地址寄存器的端口地址低四位是: 0000 0通道 0010 1通道 0100 2通道 0110 3通道 各通道的基字节数寄存器和当前字节计数器的端口地址低四位是: 0001 0通道 0011 1通道 0101 2通道 0111 3通道,8237A内

8、有一个先/后触发器,占1位,当其为0时对16位寄存器的低8位进行读/写操作,当其为1时,则对高8位进行读/写操作,且每读或写一次,先/后触发器的状态就自动翻转一次。 8237A复位后,先/后触发器为0。 8237A除可用RESET=1信号进行硬件控制的复位外,还可以用主清除命令进行软件控制的复位。软件复位是通过对1101端口进行写操作实现的。,28237A的总线模式 主模式(主动态):在DMA操作其间,8237A就处于主模式,这时它管理系统总线,发出地址和有关控制信号使数据在内存和外设端口之间或内存两个不同区域之间传递。 从模式(被动态):所谓从模式是指在没有进行DMA操作时,8237A象其他

9、接口芯片一样,可被CPU访问。即向其有关内部寄存器写入工作方式控制字,传送地址及字节数等,也可读取其状态信息。,38237A的外部引脚,8237A的工作时序 8237A使用独立的时钟信号,工作过程可以分为SI,S0,S1,S2,S3,SW,S4几个状态,每个状态占用1个时钟周期,因此状态也可以称为周期。 1) 空闲状态SI 2) 有效周期 3) 扩展写与压缩时序, DMA空闲周期SI 过渡状态S0 DMA请求应答状态 有效周期(S1、S2、S3、S4),空闲周期 当8237的任一通道都无请求时就进入空闲周期(Idle Cycle)。在空闲周期,8237始终执行SI状态,在每一个时钟周期都采样通

10、道的请求输入线DREQ。只要无请求就始终停留在SI状态。 在SI状态,可由CPU对8237编程或从8237读取状态。8237在SI状态也始终采样选片信号CS#,只要CS#信号变为有效,则CPU要对8237进行读/写操作。,当8237采样到CS#为低(有效)而HRQ也为低(无效),则进入程序状态,CPU就可以对8237的内部寄存器进行写入操作,以实现对8237的编程或者改变8237的工作状态。在这种情况下,由控制信号IOR#和IOW#、地址信号A3A0来选择8237内部不同的寄存器。 由于8237内部的地址寄存器和字节数计数器都是16位的,而数据线却是8位的,所以,在8237的内部有一个触发器称

11、为高/低触发器,由它来控制写入16位寄存器的高8位还是低 8位。8237还具有一些软件命令,这些命令是通过对地址线A3A0和IOW#、CS#信号的译码来决定的,不使用数据总线。,有效周期(Active Cycles) 当8237在SI状态采样到外设有请求,就脱离SI而进入S0状态,S0状态是DMA服务的第一个状态,在这个状态8237已经接收了外设的请求,向CPU发出了DMA请求信号HRQ,但尚未收到CPU的 DMA响应信号HLDA。当接收到HLDA就使8237进入工作状态,开始DMA传送。 工作状态是由S1、S2、S3、S4组成以完成数据传送,若外设的数据传送速度较慢,不能在S4之前完成,则可

12、由Ready信号线在S2或S3与S4之间插入SW状态。 在存储器与存储器之间的传送,需要完成从存储器读和存储器写的操作,所以每一次传送需要8个时钟周期,在前4个周期S11、S12、S13、S14完成从存储器读的操作,后4个周期S21、S22、S23、S24完成存储器写操作。,11.2.3 8237A的编程,1命令字与状态字 模式寄存器 每个通道有一个8位的模式寄存器,用以规定通道的工作模式。但编程写入的模式控制字仍是8位,其最低两位用来指定写入的通道号。 模式字的格式如图11.5所示。,图11.5 8237A的模式字格式,命令寄存器 命令寄存器是四个通道公用的一个8位寄存器,用以控制整个823

13、7A的操作。即一片8237A只有一个命令寄存器,其内容对四个通道都有效。 命令字的格式如图11.6所示。,图11.6 8237A的命令字格式,请求寄存器 8237A的每个通道除了可以响应硬件的DMA请求信号DREQ外,当其工作在块传送方式时也可以响应由软件发出的DMA请求。 软件的DMA请求是通过使相应通道的“请求位”置位来实现的,它等效于外部产生一个有效的DREQ信号。 8237A每一个通道有一位“请求位”,四个通道的请求位构成一个4位的请求寄存器。 请求寄存器的命令字(请求命令字)格式如图11.8所示。,图11.8 8237A的请求寄存器的命令字格式,屏蔽寄存器 8237A每个通道有一位“

14、屏蔽位”,当其通道的“屏蔽位”置1时,则外部对应的DREQ信号被屏蔽,不予响应,从而禁止了该通道的DMA操作。 四个通道的“屏蔽位”构成一个4位的屏蔽寄存器。 有两种屏蔽命令字格式, 单独对某一个通道的屏蔽位进行置位或复位,如图11.9(a)所示; 另一种是可以同时设定四个通道的屏蔽位,也称综合屏蔽命令字,如图11.9(b)所示。,图11.9 8237A屏蔽字的两种格式,状态寄存器 8237A有一个可由CPU读取的状态寄存器,如图11.10所示。,图11.10 8237A的状态寄存器格式,现行地址寄存器 每一个通道有一个16位的现行地址寄存器。在这个寄存器中保持用于DMA传送的地址值,在每次传

15、送后这个寄存器的值自动增量或减量。在传送过程中地址的中间值就保存在这个寄存器中。 这个寄存器的值可由CPU写入或读出(分两次连续操作)。若编程为自动初始化,则在每次EOP#后,初始化为它的初始值(即保存在基地址寄存器中的值)。,现行字节数寄存器 每个通道有一个16位的现行字节数寄存器,它保持着要传送的字节数,在每次传送后此寄存器减量。在传送过程中字节数的中间值保存在这个寄存器中。当这个寄存器的值减为零,TC将产生。这个寄存器的值在程序状态可由CPU读出和写入。在自动初始化情况下,当EOP#产生时,它的值可初始化到起始状态。,基地址和基字节数寄存器 每一个通道有一对16位的基地址和基字节数寄存器

16、,它们存放着与现行寄存器相联系的初始值。在自动初始化情况下,这两个寄存器中的值用来恢复相应的现行寄存器中的初始值。在程序状态,基寄存器与它们相应的现行寄存器是同时由CPU写入的。这些寄存器的内容不能读出。,临时寄存器 在存储器到存储器的传送方式下,临时寄存器保存从源单元读出的数据,又由它写入目的单元。在传送完成时,它保留传送的最后一个字节,此字节可由CPU读出。READY信号使其复位。,软件命令 8237在编程状态还有两种软件命令,软件命令不需要通过数据总线写入控制字,而由8237直接对地址和控制信号进行译码。有两种软件命令:,(1)清除高/低触发器 8237内部的高/低触发器用以控制写入或读出16位寄存器的高字节还是低字节。如后表中所示,若触发器为零,则操作的为低字节;为“1”,则操作的为高字节。在复位以后,此触发器被清零,每当对16位寄存器进行一次操作,则此触发器改变状态。用此命令使它清零,以改变下面要进行的读/写操作的顺序。,(2)主清除命令 这个命令与硬件的RESET信号有相同的功能,即它使命令、状态、请求、临时寄存器以及内部的高/低触发器清零;使屏蔽寄存器各位全置为“1”(即屏蔽状态);使8237进入空闲周期,以便进行编程。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号