您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > DMA内存访问技术详解
第11章DMA技术与DMA控制器§11.1DMA技术概述§11.2可编程DMA控制器8237A§11.3DMA技术在微机系统中的应用直接存储器存取§11.1DMA技术概述1、DMA传送方式的实现方法:由专用接口芯片DMA控制器(简称DMAC)控制传送过程;当外设需传送数据时,通过DMAC向CPU发出总线请求;CPU发出总线响应信号,释放总线;DMAC接管总线,控制外设、内存之间进行直接数据传送。DMAC撤消总线请求;CPU撤消总线响应,并重新接管总线。DMA技术概述2、DMA传送方式的特点外设和内存之间,直接进行数据传送,不通过CPU,传送效率高。适用于在内存与高速外设、内存两个区域之间,或两个高速外设之间进行大批量数据传送。电路结构复杂,硬件开销较大DMA传送过程示意图总线响应总线请求CPUDMAC内存外设DMA请求DREQDMA响应DACK总线§11.1.1DMAC的基本功能接收接口往DMA控制器发出DMA请求信号后,DMA控制器能向CPU发出总线请求信号HOLD(高电平)。当CPU向DMA发出响应信号HLDA(高电平)以后,DMA能接管对总线的控制,进入DMA方式。能向地址总线发出内存地址信息,对其进行寻址及修改地址指针。DMAC的基本功能能向存储器或I/O接口发相应的读写控制信号。能决定传送字节数,并判断DMA传送是否结束。DMA过程结束,能向CPU发出DMA结束信号,HOLD变低,将总线控制权还给CPU,CPU恢复正常工作。§11.1.2DMAC的一般结构图9.1单通道DMAC的一般结构及其与I/O接口的连接地址总线地址译码器DMA控制器计数结束信号(可作为中断请求信号)字节计数寄存器地址寄存器状态寄存器控制寄存器总线回答总线请求控制总线数据总线外设DMA请求DMA响应中断请求数据输出寄存器数据输入寄存器状态寄存器控制寄存器I/O接口控制总线数据总线地址总线§11.1.3DMAC的工作方式1、单字节传输方式:在单字节传输方式下,DMA控制器每次请求总线只传送一个字节数据,传送完后即释放总线控制权。2、块传输方式(也称组传输方式):块传输方式是指DMA控制器每次请求总线连续传送一个数据块,待整个数据块全部传送完成后再释放总线控制权。3、请求传输方式:此方式与块传输方式基本类似,不同的是每传输完一个字节,DMA控制器都要检测由I/O接口发来的DMA请求信号是否仍然有效,如果该信号仍有效,则继续进行DMA传输;否则,就暂停传输,交还总线控制权给CPU,直至DMA请求信号再次变为有效,数据块传输则从刚才暂停的那一点继续进行下去。§11.1.4DMA操作过程(以输入数据块为例)若从外设往内存输入一个数据块(输入过程),在单字节传输方式下,主要工作过程为:①从I/O接口向DMA控制器发送DMA请求信号;②DMA控制器向CPU发总线请求信号,当得到CPU送来的总线允许信号后,DMA控制器获得总线控制权;③DMA控制器将其地址寄存器的内容送到地址总线上;④DMA控制器往I/O接口发送DMA响应信号,并接着发出I/O接口的读信号,使I/O接口把数据送到数据总线上;DMA操作过程⑤DMA控制器发出端口读信号和存储器写信号,使数据传送到由地址总线的地址所指向的内存单元;⑥地址寄存器加1;⑦字节计数器减1;⑧如果字节计数寄存器的值不为零,则返回第①步,否则进入第⑨步;⑨DMA控制器释放总线;内存把数据送数据总线内存8086和总线控制逻辑HOLDHLDA发送总线请求控制总线总线允许地址总线数据总线接口DMA控制器接口准备就绪,发送DMA请求发端口读和内存写信号I/O设备DMA请求得到确认32516489DMA控制器把地址送地址总线撤消总线请求8086收回总线控制权7图11.2以DMA方式输出一个字节数据的工作过程DMA控制器数据端口状态/控制端口地址寄存器计数器控制/状态寄存器CPU存储器HOLDHLDA数据缓冲寄存器DMA请求触发器输入设备DMA请求DMA响应ReadyDMA控制器工作原理图1§11.2可编程DMA控制器8237A§11.2.18237A的主要特性1.具有四个独立的DMA通道,每个通道都具有64K的存贮器寻址能力,即一次传送的最大长度为64K字节。2.可实现内存与外设之间的高速大批量数据传送,也可实现内存两个不同区域之间的高速数据传送。3.每个通道的DMA请求均可分别允许或禁止,且四个通道的DMA请求的优先权可由软件设置为固定的或旋转的。8237A的主要特性4.具有单字节传送、数据块传送、请求传送和级联传送四种工作方式。5.可用级联方式扩展DMA通道数目。6.DMA传送结束信号可由内部计数产生,也可由外部输入提供。7.单一的+5V电源,40个引脚双列直插式封装。8.采用5MHz时钟,传送速率可达1.6M字节/秒。9.8237可以级连,任意扩展通道数。§11.2.28237A的工作原理1.8237A的编程结构编程结构见下页图内部有大量寄存器,内部寄存器的功能、端口地址等信息参见表11.1.IO/M地址译码器A15~A8A7~A0接数据总线A3~A0A7~A4CSDB7~DB0ADSTB锁存器STBENAEN使CPU的地址锁存器无效时钟HLDAHOLDCLKHLDAHRQ地电源控制寄存器状态寄存器请求触发器屏蔽触发器模式寄存器当前地址寄存器基地址寄存器当前字节计数器基本字节寄存器暂存器通道0通道1通道2通道3IORMEMRIOWMEMWREADYRESETDREQ0DACK0DREQ1DACK1DREQ2DACK2DREQ3DACK3EOP+5V图11.38237A的编程结构82C37A内部逻辑框图寄存器名称功能位数数量所属CPU访问方式端口地址低4位控制寄存器存放命令字81四通道共用只写1000状态寄存器存放状态字81四通道共用只读1000工作模式寄存器存放模式字84每通道一个只写1011基地址寄存器存放存贮器起始地址164每通道一个只写0000~0111中的偶地址当前地址寄存器存放存贮器当前地址164每通道一个可读/写0000~0111中的偶地址基字节数计数器存放传送字节总数164每通道一个只写0000~0111中的奇地址当前字节计数器存放尚未传送的字节总数164每通道一个可读/写0000~0111中的偶地址请求触发器设置DMA请求标志14每通道一个只写1001屏蔽触发器设置通道屏蔽标志14每通道一个只写1010或1111暂存寄存器用于两存贮区之间的传送81四通道共用只读1101表11.18237A内部寄存器的功能、端口地址等信息几点说明:请求触发器每通道一位,四个通道的请求触发器占用同一个端口地址,实际上构成一个4位的寄存器,屏蔽触发器也是一样。控制寄存器和状态寄存器共用一个端口地址,一个为只读,一个为只写。写屏蔽字时有两种方式:某一通道的屏蔽字,应写到1010端口;四个通道屏蔽字,则写入1111端口。几点说明:各通道的基地址寄存器和当前地址寄存器的端口地址低四位是:00000通道00101通道01002通道01103通道各通道的基字节数寄存器和当前字节计数器的端口地址低四位是:00010通道00111通道01012通道01113通道几点说明:8237A内有一个先/后触发器,占1位,当其为0时对16位寄存器的低8位进行读/写操作,当其为1时,则对高8位进行读/写操作,且每读或写一次,先/后触发器的状态就自动翻转一次。8237A复位后,先/后触发器为08237A除可用RESET=1信号进行硬件控制的复位外,还可以用主清除命令进行软件控制的复位。软件复位是通过对1101端口进行写操作实现的。8237A的工作原理2.8237A的总线模式主模式(主动态):在DMA操作其间,8237A就处于主模式,这时它管理系统总线,发出地址和有关控制信号使数据在内存和外设端口之间或内存两个不同区域之间传递。从模式(被动态):所谓从模式是指在没有进行DMA操作时,8237A象其他接口芯片一样,可被CPU访问。即向其有关内部寄存器写入工作方式控制字,传送地址及字节数等,也可读取其状态信息;DREQ0DREQ1DREQ2DACK3403938373635343332313029282726252423222120191817161514131211109876543218237/8237-2(NOTE11)READYHLDAADSTBAENEOPDB4A3A2A1A0VCC(+5V)DB0DB1DB2DB3HRQCSCLKRESETDACK2DREQ3DACK0DACK1DB5DB6DB7(GND)VCCA4A5A6A7MEMWMEMRIOWIOR3.8237A的外部引脚图11.48237A的引脚配置§11.2.38237A的编程1.命令字与状态字模式寄存器每个通道有一个8位的模式寄存器,用以规定通道的工作模式。但编程写入的模式控制字仍是8位,其最低两位用来指定写入的通道号。模式字的格式如图11.5所示。D7D6D5D4D3D1D0D200请求传送方式01单字节传送方式10块传送方式11联级方式0地址增11地址减10禁止自动初始化1允许自动初始化00选择通道001选择通道110选择通道211选择通道300校验传送01写传送(I/O内存)10读传送(内存I/O)11非法图11.58237A的模式字格式8237A的编程命令寄存器命令寄存器是四个通道公用的一个8位寄存器,用以控制整个8237A的操作。即一片8237A只有一个命令寄存器,其内容对四个通道都有效。命令字的格式如图11.6所示。D7D6D5D4D3D1D0D20DACK低电平有效1DACK高电平有效0DREQ高电平有效1DREQ低电平有效0正常写1扩展写0固定优先级1循环优先级0禁止存储器到存储器传送1允许存储器到存储器传送0禁止通道0地址保持1允许通道0地址保持若D0=00控制器允许1控制器禁止0普通时序1压缩时序若D0=1若D3=1图11.68237A的命令字格式8237A的编程请求寄存器8237A的每个通道除了可以响应硬件的DMA请求信号DREQ外,当其工作在块传送方式时也可以响应由软件发出的DMA请求。软件的DMA请求是通过使相应通道的“请求位”置位来实现的,它等效于外部产生一个有效的DREQ信号。8237A每一个通道有一位“请求位”,四个通道的请求位构成一个4位的请求寄存器。请求寄存器的命令字(请求命令字)格式如图11.8所示。D7D6D5D4D3D1D0D200选择通道001选择通道110选择通道211选择通道30清除请求1设置请求无关图11.88237A的请求寄存器的命令字格式8237A的编程屏蔽寄存器8237A每个通道有一位“屏蔽位”,当其通道的“屏蔽位”置1时,则外部对应的DREQ信号被屏蔽,不予响应,从而禁止了该通道的DMA操作。四个通道的“屏蔽位”构成一个4位的屏蔽寄存器。有两种屏蔽命令字格式,单独对某一个通道的屏蔽位进行置位或复位,如图11.9(a)所示;另一种是可以同时设定四个通道的屏蔽位,也称综合屏蔽命令字,如图11.9(b)所示。图11.98237A屏蔽字的两种格式D7D6D5D4D3D1D0D200选择通道001选择通道110选择通道211选择通道30清除屏蔽位1置位屏蔽位无关D7D6D5D4D3D1D0D2无关(a)0清除通道0屏蔽位1置位通道0屏蔽位0清除通道1屏蔽位1置位通道1屏蔽位0清除通道2屏蔽位1置位通道2屏蔽位0清除通道3屏蔽位1置位通道3屏蔽位(b)(a)单通道屏蔽字格式(b)四通道屏蔽字格式8237A的编程状态寄存器8237A有一个可由CPU读取的状态寄存器,如图11.10所示。D7D6D5D4D3D1D0D21通道3有请求1通道2有请求1通道1有请求1通道0有请求1通道0传输结束1通道1传输结束1通道2传输结束1通道3传输结束图11
本文标题:DMA内存访问技术详解
链接地址:https://www.777doc.com/doc-3375473 .html