收藏 分销(赏)

DMA传输原理ppt.ppt

上传人:快乐****生活 文档编号:2293928 上传时间:2024-05-25 格式:PPT 页数:68 大小:861.50KB
下载 相关 举报
DMA传输原理ppt.ppt_第1页
第1页 / 共68页
DMA传输原理ppt.ppt_第2页
第2页 / 共68页
DMA传输原理ppt.ppt_第3页
第3页 / 共68页
DMA传输原理ppt.ppt_第4页
第4页 / 共68页
DMA传输原理ppt.ppt_第5页
第5页 / 共68页
点击查看更多>>
资源描述

1、1第6章 DMA传输6.1 DMA传输原理传输原理6.2 DMA控制器控制器8237A6.3 8237A的编程使用的编程使用2直接存储器传送直接存储器传送(Direct Memory AccessDMA)将外设的数据不经过将外设的数据不经过CPU直接送入内存储器,直接送入内存储器,或者或者,从内存储器不经过从内存储器不经过CPU直接送往外部设备直接送往外部设备一次一次DMA传送只需要执行一个传送只需要执行一个DMA周期(相当于一周期(相当于一个总线读写周期),因而能够满足高速外设数据个总线读写周期),因而能够满足高速外设数据传输的需要。传输的需要。36.1 DMA传输原理1.DMA控制器控制器

2、 使用使用DMA方式传输时,需要一个专门的器件来方式传输时,需要一个专门的器件来协调外设接口和内存储器的数据传输,这个专协调外设接口和内存储器的数据传输,这个专门的器件称为门的器件称为DMA控制器,简称控制器,简称DMAC。4DMAC内部的寄存器:内部的寄存器:地址寄存器地址寄存器:存放存放DMA传输时存储单元地址;传输时存储单元地址;字节计数器字节计数器:存放存放DMA传输的字节数传输的字节数;控制寄存器控制寄存器:存放由存放由CPU设定的设定的DMA传输方式,传输方式,控制命令等控制命令等;状态寄存器状态寄存器:存放存放DMAC当前的状态,包括有无当前的状态,包括有无DMA请求,是否结束等

3、请求,是否结束等。5图图6-16 DMAC在系统中有二种不同的作用在系统中有二种不同的作用:总线从模块总线从模块:CPU对对DMAC进行预置操作,也就是向进行预置操作,也就是向DMAC写入内存传送区的首地址、传送字节数和写入内存传送区的首地址、传送字节数和控制字时,控制字时,DMAC相当于一个外设接口,称为总相当于一个外设接口,称为总线从模块。线从模块。总线主模块总线主模块:进行进行DMA传输时,传输时,CPU暂停对系统总线的控暂停对系统总线的控制,制,DMAC取得了对总线的控制权,这时的取得了对总线的控制权,这时的DMAC称为总线主模块。称为总线主模块。72.DMA传输过程传输过程 总线请求

4、总线请求:DMAC向CPU申请使用总线 总线控制转移总线控制转移:CPU同意DMAC管理总线 数据传输数据传输:外设接口和存储器之间传输数据 修改地址和计数器修改地址和计数器:为下一次传输做准备 结束处理结束处理:DMAC放弃对总线的控制权 以上的过程完全由硬件电路实现,速度很快。以上的过程完全由硬件电路实现,速度很快。用用DMA方式进行一次数据传输所经历的时间称为方式进行一次数据传输所经历的时间称为“DMA周期周期”,大体上相当于一次总线读写周期的时间。,大体上相当于一次总线读写周期的时间。8例例:用用DMA方式将串行通信口接收到的方式将串行通信口接收到的200字节字节 的数据存入以的数据存

5、入以BUFFER为首地址内存区域为首地址内存区域 对对DMAC进行预置:向进行预置:向DMAC写入内存首地址写入内存首地址,传输字传输字 节数(节数(200),传输方向(外设接口),传输方向(外设接口内存),控制命令内存),控制命令 (允许(允许DMA传输)等;传输)等;对串行通信接口进行初始化,设置串行通信的参数,允对串行通信接口进行初始化,设置串行通信的参数,允 许串行输入等;许串行输入等;串口每输入一个数据,自动进行串口每输入一个数据,自动进行DMA传输;传输;最后一个数据传输结束后,最后一个数据传输结束后,DMAC发出传输结束信号发出传输结束信号 EOP。CPU可以通过查询知道传输已经

6、结束,也可以利可以通过查询知道传输已经结束,也可以利 用用EOP信号申请中断,在中断服务程序里进行结束处理。信号申请中断,在中断服务程序里进行结束处理。DMA方式传输方式传输200字节过程为:字节过程为:1次对次对DMAC初始化,初始化,1次对串口初始化,次对串口初始化,200次次DMA周期,周期,1次结束处理。次结束处理。93.8086系统中的系统中的DMA信号信号最小模式最小模式CPU通过通过HOLD接收接收DMA控制器的总线请求;控制器的总线请求;在在HLDA引脚上发出对总线请求的允许信号。引脚上发出对总线请求的允许信号。最大模式最大模式通过通过RQ/GT0和和RQ/GT1引脚接收引脚接

7、收DMA控制器的控制器的总线请求,发送对总线请求的允许信号。总线请求,发送对总线请求的允许信号。RQ/GT0引脚有较高的优先权。引脚有较高的优先权。106.2 DMA控制器8237A1 8237A芯片的主要特点芯片的主要特点 有有4个完全独立的个完全独立的DMA通道,可分别进行编程控制。通道,可分别进行编程控制。每个通道的每个通道的DMA请求均可分别允许和禁止,并对各通道进行请求均可分别允许和禁止,并对各通道进行 优先级排队。优先级排队。数据块最大为数据块最大为64KB,每传送一个字节后地址自动加每传送一个字节后地址自动加1或减或减1。DMA请求可以由外部输入,也可以由软件设置。请求可以由外部

8、输入,也可以由软件设置。可以用级联的方法扩展可以用级联的方法扩展DMA通道数。通道数。可以进行从存储器到存储器的数据传输,用于对存储区域进可以进行从存储器到存储器的数据传输,用于对存储区域进 行初始化。行初始化。112 8237A的工作方式的工作方式(1)单字节传输方式单字节传输方式8237A每申请一次总线,进行每申请一次总线,进行1个字节传输,然后释放系个字节传输,然后释放系统总线,一次统总线,一次DMA传输结束。传输结束。CPU可以在每个可以在每个DMA周期结束后控制总线,进行数据传输,周期结束后控制总线,进行数据传输,所以不会对系统的运行产生大的影响。所以不会对系统的运行产生大的影响。(

9、2)块传输方式块传输方式 DMA控制器获得总线控制权后,可以连续进入多个控制器获得总线控制权后,可以连续进入多个DMA周周期,进行多个字节的传输(最多期,进行多个字节的传输(最多64K字节)。字节)。这种方式可以获得最高的数据传输速度。如果一次传输的数这种方式可以获得最高的数据传输速度。如果一次传输的数据较多,对系统工作可能产生一定的影响。据较多,对系统工作可能产生一定的影响。12(3)请求传输方式请求传输方式 申请一次总线可以连续进行多个数据的传输。申请一次总线可以连续进行多个数据的传输。每传输每传输1个字节后,个字节后,8237A都对外设接口的请求信号都对外设接口的请求信号 进行测试:进行

10、测试:DREQ端无效,暂停传输;端无效,暂停传输;DREQ有效,接着进行下一个数据的传输。有效,接着进行下一个数据的传输。允许数据不连续,按照外设的最高速度进行数据传输,允许数据不连续,按照外设的最高速度进行数据传输,使用比较灵活。使用比较灵活。13(4)级联传输方式级联传输方式 几个几个8237A进行级联,一片进行级联,一片8237A用作主片,其余用用作主片,其余用 作从片,构成主从式作从片,构成主从式DMA系统。系统。从片收到外设接口的从片收到外设接口的DMA请求信号后,向请求信号后,向DMA控制器控制器 主片申请,再由主片向主片申请,再由主片向CPU申请。申请。一片主片最多可以连接四片从

11、片。这样,五片一片主片最多可以连接四片从片。这样,五片8237A 构成的二级构成的二级DMA系统,可以得到系统,可以得到16个个DMA通道。通道。级联时,主片通过软件在方式寄存器中设置为级联级联时,主片通过软件在方式寄存器中设置为级联 传输方式。从片设置成上面的三种方式之一。传输方式。从片设置成上面的三种方式之一。143 8237A的传输类型的传输类型(1)DMA写传输(写传输(IO存储器)存储器)(2)DMA读传输(存储器读传输(存储器IO)(3)DMA检验检验(完成校验过程,测试(完成校验过程,测试DMA控制器的状态)。控制器的状态)。(4)存储器到存储器传输)存储器到存储器传输 15 6

12、.2.2 8237A的内部结构和外部连接的内部结构和外部连接8237A的内部结构分成二部分:的内部结构分成二部分:四个四个DMA通道通道和一个和一个公共控制公共控制部分部分16171.DMA通道通道8237A有四个独立的通道(有四个独立的通道(CH0一一CH3)每个通道每个通道:16位地址寄存器;位地址寄存器;16位字节计数器;位字节计数器;8位方式寄存器位方式寄存器;1位的位的DMA请求触发器请求触发器;1位的屏蔽触发器。位的屏蔽触发器。四个通道公用一个控制寄存器和一个状态寄存器。四个通道公用一个控制寄存器和一个状态寄存器。18DMA通道通道-地址寄存器地址寄存器 由基地址寄存器和当前地址寄

13、存器组成。由基地址寄存器和当前地址寄存器组成。对对8237编程时,把本通道编程时,把本通道DMA传输的地址初值写入基地址寄传输的地址初值写入基地址寄 存器,再由存器,再由8237A传送到当前地址寄存器。传送到当前地址寄存器。当前地址寄存器在每次当前地址寄存器在每次DMA传输后自动加传输后自动加 1或减或减1。CPU可以通过输入指令读出当前地址寄存器值可以通过输入指令读出当前地址寄存器值(每次读每次读8位位)。基地址寄存器不能被读出,且一直保持初值。基地址寄存器不能被读出,且一直保持初值。数据块传送完成后,可以把当前地址寄存器的内容恢复为基数据块传送完成后,可以把当前地址寄存器的内容恢复为基 地

14、址寄存器保存的初值。地址寄存器保存的初值。(需要在编程时设置(需要在编程时设置“自动预置自动预置”方式)方式)19DMA通道通道-字节计数器字节计数器 字节计数器由基本字节计数器和当前字节计数器组成。字节计数器由基本字节计数器和当前字节计数器组成。编程时,由指令把编程时,由指令把DMA传输的字节数写入基本字节计数器,传输的字节数写入基本字节计数器,继而传送到当前字节计数器继而传送到当前字节计数器(初值要比实际传输的字节数少初值要比实际传输的字节数少1)每进行一次每进行一次DMA传输,当前字节计数器自动减传输,当前字节计数器自动减1。它的值由。它的值由0 减到减到FFFFH(-1)时,产生计数结

15、束信号时,产生计数结束信号EOP。当前计数器的值可以由当前计数器的值可以由CPU通过输入指令分两次读出。通过输入指令分两次读出。202.读写逻辑读写逻辑8237A在系统总线中作为在系统总线中作为“从模块从模块”时时 接收接收CPU对对IO接口的读接口的读(IOR#)、写、写(IOW#)信号;信号;对地址总线的低对地址总线的低4位位(A0 A3)译码;译码;片选和片选和IOW#信号有效时,把数据总线的内容写入所寻信号有效时,把数据总线的内容写入所寻 址的寄存器址的寄存器;片选和片选和IOR#有效时,把选择的寄存器内容送到数据总有效时,把选择的寄存器内容送到数据总 线上。线上。212.读写逻辑读写

16、逻辑8237A在系统总线中作为在系统总线中作为“主模块主模块”时时 DMA写周期:写周期:读写逻辑产生读写逻辑产生IOR#控制逻辑产生存储器写(控制逻辑产生存储器写(MEMW#)数据从外设接口传送到存储器单元;数据从外设接口传送到存储器单元;DMA读周期:读周期:读写逻辑产生读写逻辑产生IOW#控制逻辑产生存储器读(控制逻辑产生存储器读(MEMR#)数据从存储器单元传送到外设接口。数据从存储器单元传送到外设接口。223.控制逻辑控制逻辑DMA周期内,控制逻辑通过产生控制信号和周期内,控制逻辑通过产生控制信号和16位要存位要存取的存储单元地址来控制取的存储单元地址来控制DMA操作步骤。操作步骤。

17、初始化时,通过对方式寄存器编程,使控制逻辑可以初始化时,通过对方式寄存器编程,使控制逻辑可以对各个通道的操作进行控制。对各个通道的操作进行控制。234 锁存缓冲器(外接)锁存缓冲器(外接)使用使用8237A工作时,需要外接一个八位的地址锁存缓工作时,需要外接一个八位的地址锁存缓冲电路,它能够储存八位的地址信号,通过可控的三冲电路,它能够储存八位的地址信号,通过可控的三态门连接系统地址总线。态门连接系统地址总线。在在DMA传送之前,传送之前,8237A从从DB0DB7把存储器地址的把存储器地址的A8A15送入这个锁存器。送入这个锁存器。在在DMA周期里,锁存器将锁存的地址送往系统地址总周期里,锁

18、存器将锁存的地址送往系统地址总线的线的A8A15,同时从同时从A0A7引脚发送地址的低八位。引脚发送地址的低八位。245 页面地址寄存器(外接)页面地址寄存器(外接)8237A控制了地址总线的控制了地址总线的16位,所以最多只能连续传位,所以最多只能连续传送送64K字节的数据。字节的数据。为了控制为了控制8086系统系统20位的物理地址,需要外接一个四位位的物理地址,需要外接一个四位的的“页面地址寄存器页面地址寄存器”(PC机地址:机地址:83H)页面地址寄存器的值由页面地址寄存器的值由CPU写入写入8237A发送低发送低16位地址时,高四位的地址从页面地址寄位地址时,高四位的地址从页面地址寄

19、存器发往地址总线的存器发往地址总线的A16A19256.2.3 8237A的对外连接信号的对外连接信号8237A作为从模块时的引脚信号(作为从模块时的引脚信号(1)RESET复位输入端,高电平有效。复位时,屏蔽寄存器复位输入端,高电平有效。复位时,屏蔽寄存器 被置被置1,其他寄存器均清,其他寄存器均清0。CS#片选输入端,低电平有效,由片选输入端,低电平有效,由A4A15译码得到。译码得到。为低电平时,为低电平时,8237A被选中,被选中,CPU可以对可以对8237A进进 行读写(进行预置或读取工作状态)。行读写(进行预置或读取工作状态)。A3A0最低的最低的4位地址线,双向信号引脚。位地址线

20、,双向信号引脚。DMA控制器控制器 作为从模块时,作为从模块时,A3A0作为输入端,用来选择作为输入端,用来选择 DMAC内部的内部的16个端口地址。个端口地址。2682378237A A作为从模块时的引脚信号(作为从模块时的引脚信号(2 2)IOR#IO设备读信号,双向、三态、低电平有效。设备读信号,双向、三态、低电平有效。作为从模块时为输入。有效时,作为从模块时为输入。有效时,CPU读读DMA控控 制器内部寄存器的值。制器内部寄存器的值。IOW#IO设备写信号,双向、三态、低电平有效。设备写信号,双向、三态、低电平有效。作为从模块时输入。有效时,作为从模块时输入。有效时,CPU向向DMA控

21、制控制 器的内部寄存器中写入信息(进行编程)。器的内部寄存器中写入信息(进行编程)。DB7DB08位双向三态数据线。位双向三态数据线。DMA控制器作为从控制器作为从 模块时,模块时,CPU通过通过DB7DB0对对8237A进行读写。进行读写。278237A作为总线主模块时的引脚信号作为总线主模块时的引脚信号(1)地址信号)地址信号A3A0 DMAC为主模块时,提供存储器最低为主模块时,提供存储器最低4位地址位地址 (输出)(输出)。A7A4-提供存储器的中间提供存储器的中间4位地址(输出)位地址(输出)DB7DB0 输出当前地址寄存器中的高输出当前地址寄存器中的高8位地址,并通过信号位地址,并

22、通过信号 ADSTB打入外部锁存器,和打入外部锁存器,和A7A0输出的低输出的低8位位 地址一起构成地址一起构成16位地址。位地址。28地址信号地址信号ADSTB地址选通信号,输出,高电平有效。信号有效地址选通信号,输出,高电平有效。信号有效 时,将时,将DMAC高高8位地址经位地址经DB7DB0送到外部送到外部 锁存器。锁存器。AEN地址允许信号,输出,高电平有效。地址允许信号,输出,高电平有效。把高把高12位地址(地址锁存器中高位地址(地址锁存器中高8位、页面地址寄位、页面地址寄 存器最高存器最高4位)一起送到地址总线上,与芯片直接位)一起送到地址总线上,与芯片直接 输出的低输出的低8位地

23、址共同构成位地址共同构成20位内存地址。位内存地址。AEN信号也使与信号也使与CPU相连的地址锁存器无效。保证相连的地址锁存器无效。保证 地址总线上的信号来自地址总线上的信号来自DMA控制器,而不是来自控制器,而不是来自 CPU。29(2)对存储器)对存储器/外设接口的读写控制信号外设接口的读写控制信号IOR#作为主模块时,作为主模块时,IOR#输出外设接口的读控制信输出外设接口的读控制信 号,信号有效时,号,信号有效时,IO接口部件中的数据被读出接口部件中的数据被读出 送往数据总线。送往数据总线。IOW#作为主模块时,作为主模块时,IOW#输出外设接口的写控制信输出外设接口的写控制信 号,信

24、号有效时,存储器中读出的数据被写入号,信号有效时,存储器中读出的数据被写入 IO接口中。接口中。READY准备就绪信号,输入,高电平有效。所用的存准备就绪信号,输入,高电平有效。所用的存 储器或储器或IO接口的速度较慢时,使接口的速度较慢时,使READY处于处于 低电位,低电位,8237A会自动插入等待周期。数据准备会自动插入等待周期。数据准备 就绪时,就绪时,READY端为高电平,表示可以进行数端为高电平,表示可以进行数 据传输。据传输。30(2)对存储器)对存储器/外设接口的读写控制信号外设接口的读写控制信号MEMR#存储器读信号,低电平有效,输出存储器读信号,低电平有效,输出。信号有效信

25、号有效 时,所选中的存储器单元的内容被读到数据时,所选中的存储器单元的内容被读到数据 总总 线。线。MEMW#存储器写信号,低电平有效,输出。信号有存储器写信号,低电平有效,输出。信号有 效时,数据总线上的内容被写入选中的存储单效时,数据总线上的内容被写入选中的存储单 元。元。31(3)DMA联络信号联络信号DREQ通道通道DMA请求信号,输入。请求信号,输入。每个通道对应一个每个通道对应一个DREQ信号端,它的极性可以信号端,它的极性可以 通过编程来选择。通过编程来选择。外设接口要求外设接口要求DMA传输时,使传输时,使DREQ处于有效,处于有效,DMAC控制器送来控制器送来DMA响应信号响

26、应信号DACK以后,以后,接口撤除接口撤除DREQ的有效电平。的有效电平。DACK通道通道DMA应答信号,输出。应答信号,输出。DMAC送给接口的回答送给接口的回答 信号,每个通道有一个信号,每个通道有一个DACK信号端。信号端。DMAC获得获得CPU送来的总线允许信号送来的总线允许信号HLDA以后,以后,产生产生DACK信号送到外设接口。信号送到外设接口。DACK信号的极性可以通过编程选择。该信号相当信号的极性可以通过编程选择。该信号相当 于于IO接口的地址选择信号。接口的地址选择信号。32HRQ总线请求信号,输出。总线请求信号,输出。8237A收到外设接口发来收到外设接口发来 DREQ信号

27、后,如果该通道的信号后,如果该通道的DMA请求没有被请求没有被 屏蔽,屏蔽,DMAC通过通过HRQ端向端向CPU发出总线请求。发出总线请求。HLDA总线响应信号,输入。总线响应信号,输入。DMAC向向CPU发总线请发总线请求信号求信号HRQ以后,以后,CPU发回的总线响应信号。发回的总线响应信号。8237A收到该信号后,便获得了总线控制权。收到该信号后,便获得了总线控制权。HLDA也称为总线保持回答信号。也称为总线保持回答信号。EOP#DMA传输结束信号,低电平有效,双向。传输结束信号,低电平有效,双向。从外部向从外部向DMAC送一个送一个 EOP#信号时,信号时,DMA传输过程传输过程 被强

28、制性地结束。被强制性地结束。DMAC任一通道计数结束时,任一通道计数结束时,EOP#会输出一个有效会输出一个有效 电平,作为电平,作为DMA传输结束信号。可以使用传输结束信号。可以使用EOP#信号向信号向 CPU申请中断,进行申请中断,进行DMA传输的结束处理。传输的结束处理。333.其他引脚信号其他引脚信号CLK时钟输入端。时钟输入端。8237A的时钟频率为的时钟频率为3MHz;8237A-4的时钟频率为的时钟频率为4MHz;8237A-5的时钟频率为的时钟频率为5MHz后面两种后面两种DMA控制器是控制器是8237A的改进型,工作的改进型,工作速度比较高,但工作原理及使用方法相同。速度比较

29、高,但工作原理及使用方法相同。电源,地电源,地提供提供8237A工作所需要的工作所需要的+5V电源。电源。344.小结小结(1)作为从模块工作时)作为从模块工作时 CPU对对8237A进行预置或读取状态,进行预置或读取状态,8237A相当于一个相当于一个IO接接口口CPU发来的高发来的高12位地址经过地址译码器产生片选信号,使得位地址经过地址译码器产生片选信号,使得CS为低电平,表示本芯片片被选中。为低电平,表示本芯片片被选中。CPU发来的低发来的低4位地址送到位地址送到8237A的相应引脚,选择内部寄存的相应引脚,选择内部寄存器。器。IOR#和和IOW#作为输入信号,用作对作为输入信号,用作

30、对8237A的读写控制。的读写控制。IOR#为低电平:为低电平:CPU读取读取8237A内部寄存器的值。内部寄存器的值。IOW#为低电平:为低电平:CPU将数据写入将数据写入8237A的内部寄存器。的内部寄存器。35(2)作为主模块工作时)作为主模块工作时 向总线提供要访问的内存地址向总线提供要访问的内存地址:高八位地址在高八位地址在ADSTB信号的配合下,通过信号的配合下,通过DB7DB0输出输出到外部连接的地址锁存缓冲器。到外部连接的地址锁存缓冲器。低八位通过低八位通过A7A0输出输出AEN输出高电平:输出高电平:选通外部锁存器的输出三态门,将锁存器高选通外部锁存器的输出三态门,将锁存器高

31、8位地址送位地址送往往A15A8页面地址寄存器向页面地址寄存器向A16A19输出输出4位地址位地址与与CPU相连的三个地址锁存器停止工作相连的三个地址锁存器停止工作在整个数据块的传输过程中,页面在整个数据块的传输过程中,页面4位地址保持不变,因位地址保持不变,因此,此,DMA传输的字节数限制在传输的字节数限制在 216以下。以下。36向接口和存储器提供读写控制信号向接口和存储器提供读写控制信号:输出输出IOR#和和IOW#,控制外设接口的数据传输方向。,控制外设接口的数据传输方向。输出输出MEMR#和和MEMW#,控制存储器的读写。控制存储器的读写。(2)作为主模块工作时作为主模块工作时 37

32、386.2.4 8237A的工作时序的工作时序8237A使用独立于使用独立于CPU的时钟;的时钟;时钟周期分为两大类:时钟周期分为两大类:空闲周期空闲周期有效周期有效周期周期也称为状态(周期也称为状态(STATUS)。)。391.空闲周期空闲周期SI 8237A复位后就处于空闲周期:复位后就处于空闲周期:在此周期,在此周期,CPU可对可对8237A作初始化编程作初始化编程或者,虽然已经初始化,但还未有或者,虽然已经初始化,但还未有DMA请求输入。请求输入。空闲周期中,空闲周期中,8237A要检查要检查DREQ的状态,确定是否的状态,确定是否有通道请求有通道请求DMA服务。服务。同时也对同时也对

33、CS端采样,判定端采样,判定CPU是否要对是否要对8237A进行进行读写操作。读写操作。402.有效周期有效周期(由由S0S4五种周期组成五种周期组成)S0-等待周期等待周期8237A接到外设的接到外设的DREQ请求,向请求,向CPU发出了发出了HRQ,等待等待CPU让出总线控制权。让出总线控制权。得到来自得到来自CPU的的HLDA响应后,结束响应后,结束S0状态。状态。S1地址周期地址周期8237用用DB0DB7送出高送出高8位地址位地址A8A15用用ADSTB将高将高8位地址送入锁存器位地址送入锁存器使使AEN有效有效v传输一段连续的数据时,存储器地址是相邻的,高传输一段连续的数据时,存储

34、器地址是相邻的,高8位位地址往往是不变的。此时,地址往往是不变的。此时,S1可以省略。可以省略。41S2数据读出周期:数据读出周期:向外设送出向外设送出DACK信号,启动外设工作信号,启动外设工作送出数据读控制信号送出数据读控制信号DMA读操作读操作-送出送出MEMR#DMA写操作写操作-送出送出IOR#S3-数据写入周期:数据写入周期:送出写操作所需的控制信号:送出写操作所需的控制信号:DMA读操作读操作-送出送出IOW#DMA写操作写操作-送出送出MEMW#S3状态结束时:状态结束时:READY无效,插入无效,插入SW周期周期READY有效,进入有效,进入S4周期周期42S4结束周期:结束

35、周期:结束本次一个字节传输。结束本次一个字节传输。存储器之间数据传输:存储器之间数据传输:从源地址中读出一个字节,存入从源地址中读出一个字节,存入8237A暂存寄存器暂存寄存器将这个字节写入目的地址中将这个字节写入目的地址中每个阶段的完成都要经过每个阶段的完成都要经过4个周期(状态)。个周期(状态)。S4之后应该是哪一个周期?之后应该是哪一个周期?43扩展写扩展写 写控制信号一般在写控制信号一般在S3开始有效;开始有效;采用扩展写方式,写信号在采用扩展写方式,写信号在S2就开始变得有效这就开始变得有效这种做法可以增加写操作时间,满足某些设备的需种做法可以增加写操作时间,满足某些设备的需要。要。

36、44压缩时序压缩时序正常时序中,正常时序中,S1用于锁定高用于锁定高8位地址位地址高高8位地址不变时,位地址不变时,S1是可以省略的是可以省略的S3是一个延长周期,用来保证可靠的读写操作是一个延长周期,用来保证可靠的读写操作在追求高速传输,且器件的读写速度又可以跟得上时,在追求高速传输,且器件的读写速度又可以跟得上时,S3也是可以省略的也是可以省略的省略省略S3之后的时序称为压缩时序之后的时序称为压缩时序压缩时序下,一个字节的传输最少只要两个时钟周期压缩时序下,一个字节的传输最少只要两个时钟周期(S2,S4)就可完成就可完成456.3 8237A的编程使用8237A:共占用共占用16个端口地址

37、(个端口地址(PC机内地址机内地址000FH)每个通道占用每个通道占用2个端口地址(共个端口地址(共8个)个)其余其余8个端口地址由各通道共用个端口地址由各通道共用地址锁存器(外配,不占用端口地址):地址锁存器(外配,不占用端口地址):锁存锁存8237A送出的高送出的高8位地址信号位地址信号发送高发送高8位地址信号位地址信号页面寄存器(外配,端口地址页面寄存器(外配,端口地址83H):):存储和发送最高存储和发送最高4位地址信号位地址信号A19A16与与8237A发出的发出的16位地址组合得到位地址组合得到20位地址信号位地址信号46地址地址读操作读操作写操作写操作0读通道读通道0基地址寄存器

38、基地址寄存器写通道写通道0当前地址寄存器当前地址寄存器1读通道读通道0基本字节计数器基本字节计数器写通道写通道0当前字节计数器当前字节计数器2读通道读通道1基地址寄存器基地址寄存器写通道写通道1当前地址寄存器当前地址寄存器3读通道读通道1基本字节计数器基本字节计数器写通道写通道1当前字节计数器当前字节计数器4读通道读通道2基地址寄存器基地址寄存器写通道写通道2当前地址寄存器当前地址寄存器5读通道读通道2基本字节计数器基本字节计数器写通道写通道1当前字节计数器当前字节计数器6读通道读通道3基地址寄存器基地址寄存器写通道写通道3当前地址寄存器当前地址寄存器7读通道读通道3基本字节计数器基本字节计数

39、器写通道写通道3当前字节计数器当前字节计数器8读状态寄存器读状态寄存器写命令寄存器写命令寄存器9写请求寄存器写请求寄存器10写单个屏蔽寄存器写单个屏蔽寄存器11写工作方式寄存器写工作方式寄存器12清除先清除先/后触发器后触发器13读暂存寄存器读暂存寄存器写总清寄存器写总清寄存器14屏蔽位总清命令屏蔽位总清命令15综合屏蔽命令综合屏蔽命令476.3.1 8237A通道专用寄存器v每一通道内包含四个每一通道内包含四个16位的寄存器:位的寄存器:基地址寄存器基地址寄存器基字节数寄存器基字节数寄存器现行地址寄存器现行地址寄存器现行字节数计数器现行字节数计数器存放存放DMA传输的存储器地址及数据字节数传

40、输的存储器地址及数据字节数v每个通道内有一个每个通道内有一个8位的模式寄存器位的模式寄存器记录通道的工作方式记录通道的工作方式481 基地址寄存器和基字节数寄存器基地址寄存器和基字节数寄存器 基地址寄存器存放基地址寄存器存放DMA传送的内存起始地址:传送的内存起始地址:寄存器的内容在初始化时由程序写入寄存器的内容在初始化时由程序写入先写低字节,后写高字节先写低字节,后写高字节在整个数据块的在整个数据块的DMA传输过程中内容保持不变传输过程中内容保持不变写入后,其内容同时传送到现行地址寄存器写入后,其内容同时传送到现行地址寄存器基字节数寄存器存放基字节数寄存器存放DMA传送的字节数减传送的字节数

41、减1写入后,其内容同时传送到现行字节数寄存器写入后,其内容同时传送到现行字节数寄存器这二个寄存器的内容只能写入,不能读出。这二个寄存器的内容只能写入,不能读出。492.现行地址寄存器现行地址寄存器 来自基地址寄存器来自基地址寄存器存放存放DMA传送的当前地址值传送的当前地址值每次每次DMA传送后,该寄存器的值自动增量或减量传送后,该寄存器的值自动增量或减量可由可由CPU读出(先低位,后高位)读出(先低位,后高位)若设置为自动预置,则在每次计数结束后,自动恢复为它若设置为自动预置,则在每次计数结束后,自动恢复为它的初始值(即保存在基地址寄存器中的初值)。的初始值(即保存在基地址寄存器中的初值)。

42、503.现行字节数寄存器现行字节数寄存器 存放存放DMA传送过程中没有传送完的字节数减传送过程中没有传送完的字节数减1每次传送后,寄存器的值自动减每次传送后,寄存器的值自动减1该寄存器的值减为该寄存器的值减为FFFFH(-1)时,数据块传送结束,时,数据块传送结束,EOP#引脚变为低电平引脚变为低电平寄存器的值可由寄存器的值可由CPU读出读出若设置为自动预置,则在每次计数结束后,自动恢复为它若设置为自动预置,则在每次计数结束后,自动恢复为它的初始值(即保存在基字节数寄存器中的初值)。的初始值(即保存在基字节数寄存器中的初值)。51图图6-34.方式寄存器方式寄存器 (BASE+0BH)526.

43、3.2 8237A通道公用寄存器通道公用寄存器53图图6-41.控制寄存器(控制寄存器(BASE+08H)54图图6-52.状态寄存器(状态寄存器(BASE+08H)55图图6-63.请求寄存器(请求寄存器(BASE+09H)56图图6-7屏蔽寄存器(屏蔽寄存器(BASE+0AH)57图图6-8综合屏蔽寄存器(综合屏蔽寄存器(BASE+0FH)584.复位命令(复位命令(BASE+0DH)复位命令的功能和复位命令的功能和RESET功能相同:功能相同:使控制寄存器,状态寄存器、使控制寄存器,状态寄存器、DMA请求寄存器、暂存器请求寄存器、暂存器以及先后触发器都清以及先后触发器都清0使屏蔽寄存器置

44、位使屏蔽寄存器置位对端口地址为对端口地址为BASE+0DH的端口实施一次写操作,的端口实施一次写操作,可以实现对可以实现对8237A的复位操作。的复位操作。59 8237A内的内的“先后触发器先后触发器”:为为0时,访问时,访问16位寄存器的低字节;位寄存器的低字节;为为1时,访问高字节时,访问高字节8237A复位时清复位时清0。每访问一次每访问一次16位寄存器,能自动翻转(位寄存器,能自动翻转(0变变1或或1变变0)写入内存起始地址或字节计数器初值之前,将这个触发器写入内存起始地址或字节计数器初值之前,将这个触发器清清0,就可以按照先低位字节,后高位字节的顺序写入初值,就可以按照先低位字节,

45、后高位字节的顺序写入初值清除先后触发器(清除先后触发器(BASE+0CH)606.3.3 8237A端口地址及通道分配端口地址及通道分配PC机中,机中,8237A占据占据00H0FH共共16个端口地址。个端口地址。8237A控制器各通道在控制器各通道在PC机内的任务:机内的任务:CH0:用作动态存储器的刷新控制用作动态存储器的刷新控制CH1:为用户预留为用户预留CH2:软盘驱动器数据传输用的软盘驱动器数据传输用的DMA控制控制CH3:硬盘驱动器数据传输用的硬盘驱动器数据传输用的DMA控制控制616.3.4 8237A的编程的编程(1)发复位命令()发复位命令(*)(2)写命令字,设置)写命令字

46、,设置8237A的工作方式(的工作方式(*)(3)写方式字,设置需使用的通道的工作方式)写方式字,设置需使用的通道的工作方式(4)清除先)清除先/后触发器后触发器(5)写入内存储器起始地址(先写低位,后写高位)写入内存储器起始地址(先写低位,后写高位)(6)写入传送的字节数)写入传送的字节数-1(先写低位,后写高位)(先写低位,后写高位)(7)清除该通道的屏蔽位)清除该通道的屏蔽位(8)启动外部设备,如果是内存到输出设备,用指令)启动外部设备,如果是内存到输出设备,用指令设置第一次设置第一次DMA请求请求62v对于对于IBM-PC系列微型计算机,它的系列微型计算机,它的8237A通道通道0、2

47、、3已分配使用,而且在开机时已对已分配使用,而且在开机时已对8237A作了初始化。作了初始化。在这种情况下,不允许再对它重新初始化和重新设置在这种情况下,不允许再对它重新初始化和重新设置控制字控制字v上述编程过程的(上述编程过程的(1)、()、(2)二步改为:将所需使用)二步改为:将所需使用的通道置屏蔽状态(这样做是为了在其他设置未完成的通道置屏蔽状态(这样做是为了在其他设置未完成时避免误动作)。时避免误动作)。说说 明明632 应用举例应用举例用用DMA方式从网络接收数据存入内存缓冲区方式从网络接收数据存入内存缓冲区使用使用8237A的通道的通道1;8237A端口地址端口地址00H0FH;面

48、地址寄存器地址面地址寄存器地址83H;内存缓冲区地址为内存缓冲区地址为2100:0030H;数据块以数据块以1AH为结束标志;为结束标志;总长度不超过总长度不超过300字节。字节。64MOVAL,00000101BOUT0AH,AL;写屏蔽寄存器写屏蔽寄存器,屏蔽通道屏蔽通道1MOVAL,00000101B;方式字方式字:请求传输请求传输,地址增地址增OUT0BH,AL ;非自动预置非自动预置,写传输写传输,通道通道1MOVAL,02HOUT83H,AL;页面地址页面地址=02HOUT0CH,AL;清先清先/后触发器后触发器MOVAL,30HOUT02H,AL;写低位地址写低位地址(30H)M

49、OVAL,10HOUT02H,AL;写高位地址写高位地址(10H)65MOVAX,300;传输字节数传输字节数DECAXOUT03H,AL;写字节数低位写字节数低位MOVAL,AHOUT03H,AL;写字节数高位写字节数高位MOVAL,00000001BOUT0AH,AL ;清除通道清除通道1屏蔽屏蔽CALLSET_NET;对网络设备进行设置对网络设备进行设置PUSHDSMOVAX,2103HMOVDS,AX ;DS置初值,缓冲区首地址置初值,缓冲区首地址 DS:0000H66WT:OUT 0CH,AL;清先清先/后触发器后触发器IN AL,03HMOV BL,ALIN AL,03HMOV B

50、H,AL ;未传输字节数送未传输字节数送BXSUB BX,300-1NEG BX ;BX中为已传输字节数中为已传输字节数CMP BYTE PTRBX,1AH;传输完成否?传输完成否?JNZ WT ;没完成则等待没完成则等待MOV AL,00000101BOUT 0AH,AL ;完成后屏蔽通道完成后屏蔽通道1POP DS67习题61 什么是什么是DMA传输?传输?DMA传输有什么优点?为什么?传输有什么优点?为什么?2 叙述一次数据块叙述一次数据块DMA传输和一个数据传输和一个数据DMA传输的全过传输的全过程。程。3 什么叫什么叫DMA通道?它如何组成?通道?它如何组成?4 DMA控制器控制器8

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服