WEO啦

首页 » 正文内容 » 技术与DMA***

技术与DMA***

时间:2023-03-20 02:19:09  热度:2°C

1、1/第8章 DMA技术与DMA***/8/1 DMA技术概述 8/2 可编程DMA***8237A 8/3 DMA技术在微机系统中的应用/直接存储器存取/2/1/DMA(Direct Memory Access)的概念 DMA方式不用处理器干预完成M与I/O间数据传送。 DMA期间系统总线由其它主模块控制(驱动) 控制总线的主模块要提供系统的地址及控制信号。 DMA***与处理器配合可实现系统的DMA功能/8/1 DMA技术概述/3/2/ DMA系统组成及工作过程 DMA系统组成/4/DMAC的基本功能/接收接口往DMA***发出DMA请求信号后,DMA***能向CPU发出总线请求信号HOLD

2、(高电平)。 当CPU向DMA发出响应信号HLDA(高电平)以后,DMA能接管对总线的控制,进入DMA方式。 能向地址总线发出内存地址信息,对其进行寻址及修改地址指针/5/DMAC的基本功能/能向存储器或I/O接口发相应的读写控制信号。 能决定传送字节数,并判断DMA传送是否结束。 DMA过程结束,能向CPU发出DMA结束信号,HOLD变低/将总线控制权还给CPU,CPU恢复正常工作/6/允许 DMA/DMA 请求/DMAC发BUS请求/CPU响应DMA 放弃BUS/DMAC控制 传一个字节/块结束否/放弃总线中断请求/N/DMA 放 总 线/N/Y/字节传送/Y/DMA传送方式/7/允许 D

3、MA/DMA请求/DMAC发BUS请求/CPU 响应 DMA 放弃 BUS/DMAC控制 传一个字节/块结束否/放总线中断请求/DMA请求/N/Y/Y/N/块传送/DMA传送方式/8/允许 DMA/DMA请求/DMAC发出BUS请求/CPU响应DMA放弃总线/DMAC 控制传一个字节/块结束否/放总线中断请求/Y/DMA请求/Y/放总线/N/N/Y/随机请求 DEMAND REQUEST/DMA传送方式/9/I/O设备向DMAC发出DMA请求/DMAC向CPU发出总线请求/CPU在执行完当前指令的当前 的总线周期后,向DMAC发出 总线响应信号/CPU脱离对系统总线的控制, 由DMAC接管对系

4、统总线的控制/DMAC向I/O设备发出 的DMA应答信号/DMAC进行一个字节的传送/完成设定的字节数据传送, CPU恢复对系统总线的控制/DMA传送的过程/10/8/2 可编程DMA***8237A/8/2/1 8237A的主要特性 1具有四个***的DMA通道,每个通道都具有64K的存贮器寻址能力,即一次传送的最大长度为64K字节。 2可实现内存与外设之间的高速大批量数据传送 ,也可实现内存两个不同区域之间的高速数据传送。 3每个通道的DMA请求均可分别允许或禁止,且四个通道的DMA请求的优先权可由软件设置为固定的或循环的/11/8237A的主要特性/4具有单字节传送、数据块传送、请求传送和

5、级联传送四种工作方式。 5可用级联方式扩展DMA通道数目。 6DMA传送结束信号可由内部计数产生,也可由外部输入提供。 7单一的+5V电源,40个引脚双列直插式封装。 8采用5MHz时钟,传送速率可达1/6M字节/秒/12/8采用5MHz时钟,传送速率可达1/6M字节/秒。 8237进行一次DMA传送需要3个时钟周期(不包括***的等待周期SW)。时钟周期为200 ns,则一次DMA传送需要200 ns3200 ns700 ns(1/6 M字节/秒)。多加一个200 ns是考虑到人为***一个SW的缘故。另外,8237为了提高传输速率,可以在压缩定时状态下工作。在此状态下,每一个DMA总线周期仅用

6、两个时钟周期(200 ns2=400ns )就可实现,这大大提高了传输速率/13/8/2/2 8237A的工作原理/18237A的编程结构 编程结构见下页图 内部有大量寄存器,内部寄存器的功能、端口地址等信息 参见下表/14/Intel 8237A可编程DMA***框图/15/1)8237A组成说明: 8237A有四个***通道:通道0通道3。每个通道可***响应外部DMA请求,完成DMA传送/15/16/控制寄存器, 8位/16/四个通道公用/优先级编码电路-优先级裁决/17/8237的引脚功能/17/18/8237的引脚功能/请求/应答信号 外设接口电路向8237的请求信号:DREQ3DREQ

7、0 8237对外设接口电路的应答信号:DACK3DACK0 8237向CPU申请总线的信号:HRQ(连至CPU的HOLD) CPU向8237传送的允许使用总线信号:HLDA/CPU/DMA/外设/HRQ/DREQ/HLDA DACK/18/19/8237的引脚功能/地址信号 :CPU初始化8237或读8237状态时所需的片选信号 A7A0(输出):8237访问存储器的地址信号的低8位。 A3A0(输入):CPU初始化8237或读8237状态时,用于寻址8237内部寄存器/19/20/8237的引脚功能/数据信号(双向): DB7DB0/CPU为主控时,可以通过I/O读命令查询8237的状态寄存

8、器的内容,或通过I/O写命令对8237的内部寄存器进行编程,数据传送通过DB7DB0 8237为主控时, DB7DB0输出要访问的内存地址的高8位,并通过ADSTB锁存到外部地址锁存器中,和A7A0输出的低8位地址一起构成16位地址/20/21/8237的引脚功能/地址允许信号:AEN 8237作为主控时(8237控制总线),输出AEN=1。 8237作为从控时(CPU控制总线),输出AEN=0。 DMA传输结束信号: (双向) 当DMAC内部任一通道传输结束,8237发出 若由外部给DMAC送入有效的 ,则强制DMAC内部 所有通道结束传输/21/22/8237的引脚功能/MEMR/MEMW

9、/8237发出的存储器读/写信号/IOR/IOW/8237作为主控时,输出的I/O读/写信号。 8237作为从控时,CPU发出的I/O读/写信号,用于读/写8237/22/23/8237的引脚功能/ADSTB:地址选通信号/用于启动地址锁存器/READY:存储器或I/O的就绪信号/23/24/DMA***8237/工作方式 1)从模块工作方式: 当CPU将数据送入或取出8237时,DMA完全象一个普通的I/O接口,此时它工作于从模块/24/25/DMA***8237/D0D7 DB0DB7 IOR IOR CPU IOW IOW 8237 A0A3 A0A3 A4A15 CS 此时CPU对82

10、37进行初始化或读出8237中的状态/25/译码/26/DMA***8237/2)主模块工作方式: 此时DMA已取代CPU控制系统。它 将提供系统正常工作的地址信息,控 制信息完成DMA方式的数据传送/26/27/DMA***8237/AEN A0A7 A0A7 8237 EN ADSTB DB0DB7 A8A15 IOW IOR MEMW MEMR/27/STB 锁存器/28/DMA***8237/28/那对于20位地址线8237如何处理/由上可见8237工作于模块方式,可取代CPU产生地址及控制信息/8237A处于DMA方式时/全部地址均用来寻址存储器/无法同时提供I/O设备的端口地址/为

11、了寻址外部设备/8237A提供DACK信号/作为对请求DMA方式的外部设备的应答/并指明该外部设备被认可/可以进行DMA传送/在整个传输过程中只要DACK信号/IOR/IOW同时有效/就能完成读外部设备的I/O读写操作/所以/在DMA方式下/I/O设备的地址无效/即/以DACK代替了片选和译码功能/在8086/88系统中,系统的寻址范围是1MB,地址线有20条,即A0A19。为了能够在8086/88系统中使用8237来实现DMA,需要用硬件提供一组4位的页寄存器。 通道0、1、2、3各有一个4位的页寄存器。在进行DMA传送之前,这些页寄存器可利用I/O地址来装入和读出。当进行DMA传送时,DM

12、AC将A0A15放在系统总线上,同时页寄存器把A16A19也放在系统总线上,形成A0A19这20位地址信号实现DMA传送。其地址产生如图所示/29/利用页寄存器产生存储器地址/29/30/8237A的工作方式/DMA传送方式 单字节传送方式 数据块传送方式 请求传送方式 级连方式 DMA传送类型 DMA读 DMA写 DMA检验 存储器到存储器的传送/31/1) DMA传送单字节方式/每次DMA传送时仅传送一个字节 传送一个字节之后,字节数寄存器减1,地址寄存器加1或减1,HRQ变为无效 8237A释放系统总线,将控制权还给CPU 若传送后使字节数从0减到FFFFH,则终结DMA传送或重新初始化

13、 特点: 一次传送一个字节,效率略低 DMA传送之间CPU有机会重新获取总线控制权/DMA传送方式/32/2) DMA传送数据块方式/由DREQ启动就连续地传送数据,直到字节数寄存器从0减到FFFFH终止计数,或由外部输入有效信号终结DMA传送 DREQ只需维持有效到DACK有效 特点: 一次请求传送一个数据块,效率高 整个DMA传送期间CPU长时间无法控制总线(无法响应其他DMA请求、无法处理中断等/33/3) DMA传送请求方式/DREQ信号有效就连续传送数据 DREQ信号无效,DMA传送被暂时中止,8237A释放总线,CPU可继续操作 DMA通道的地址和字节数的中间值仍被保持 DREQ信

14、号再次有效,DMA传送就继续进行 如果字节数寄存器从0减到FFFFH,或者由外部送来一个有效的信号,将终止计数 特点: DMA操作可由外设利用DREQ信号控制传送的过程/34/4) DMA传送级连方式/用于通过多个8237A级连以扩展通道 第***的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上 第***芯片的优先权等级与所连通道的优先权相对应 第一级只起优先权网络的作用,实际的操作由第***芯片完成 还可由第***扩展到第***等/35/8237A的级联/36/DMA读把数据由存储器传送到外设 由MEMR*有效从存储器读出数据,由IOW*有效把这一数据写入外设 DMA写把外设输入的数据写

15、入存储器 由IOR*有效从外设输入数据,由MEMW*有效把这一数据写入存储器。 DMA检验空操作 8237A不进行任何检验 外设可以进行DMA校验 存储器和I/O控制线保持无效,不进行传送/DMA传送类型/37/固定使用通道0和通道1 通道0的地址寄存器存源区地址 通道1的地址寄存器存目的区地址,通道1的字节数寄存器存传送的字节数 传送由设置通道0的软件请求启动 每传送一字节需用8个时钟周期 前4个时钟周期用通道0地址寄存器的地址从源区读数据送入8237A的临时寄存器 后4个时钟周期用通道1地址寄存器的地址把临时寄存器中的数据写入目的区/存储器到存储器的传送/38/8237A的工作方式由写模式

16、寄存器决定/存放相应通道的方式控制字 选择某个DMA通道的工作方式 其中用最低2位选择哪个DMA通道/请看方式字的格式/39/方式字格式(写B号/00 请求模式 01 单字节模式 10 数据块模式 11 级联模式/0 地址增量(加1) 1 地址减量(减1/0 禁止自动初始化 1 允许自动初始化/00DMA校验 01DMA写 10DMA读 11非法 若D7D611/00 通道0 01 通道1 10 通道2 11 通道3/40/DMA***8237/自动预置功能: D4:当设置为自动预置时,每当DMA过程结束信号EOP*产生时(不论是内部终止计数还是外部输入该信号)用基地址寄存器和基字节数寄存器的

17、内容,使相应的现行寄存器恢复为初始值,包括恢复***位、允许DMA请求这样就作好了下一次DMA传送的准备/40/41/DMA***8237/D3 D2:传输方式设定 写输入: I/O设备往内存写入数据。 读输入; 将内存数据送往I/O设备。 校验传输:用于对读传输和写传输功能进行 校验,是虚拟传输,8237此时只产 生EOP信号和地址信号/41/42/DMA***8237/42/8237/存 储 器/I/O 设备/8237/写传输 读传输/存 储 器/I/O 设备/A0A15/MEMW/IOR/D0D7/A0A7/MEMR/IOW/43/当8237A没有被外围设备用来进行DMA操作时,此时它处于

18、所谓空闲状态。在这种状态下,微处理器可以向这个DMA***输出命令以及读写它的内部寄存器/8/4 827A的时序/44/DMA***的工作时序/DMA空闲周期SI 过渡状态S0 有效周期(S1、S2、S3、S4/8237A内部状态变化流程/45/8237A的工作时序空闲周期/8237A的任一通道都没有DMA请求时 8237A由微处理器控制作为一个接口芯片 CPU可对8237A编程,或从8237A读取状态 8237A采样CS*选片信号,该信号有效,CPU就要对8237A进行读/写操作 8237A还采样通道的请求输入信号DREQ,该信号有效,就进入有效周期/进入有效周期/46/8237A的工作时序

19、有效周期/8237A采样到外设有DMA请求,就脱离空闲周期进入有效周期 8237A作为系统的主控芯片,控制DMA传送操作 DMA传送借用系统总线完成,其控制信号以及工作时序类似CPU总线周期/进入DMA传送时序/47/DMA传送时序/48/a) S1 周期: DMAC在S1 状态发出地址允许AEN信号,通过数据总线DB0DB7将高8位地址A8 A15锁存起来。多数情况下,这几位地址不需改变,故可直接进入S2周期。 b) S2周期:修改存储单元的低8位地址,(高8位已锁存) 向I/O发请求回答信号DACK,准备 传送数据。 c) S3周期:送高8位地址A8 A15到地址总线,发出MEMR或IOR

20、读命令,从内存或I/O准备传送数据。 d) S4周期:发IOW或MEMR命令。 用普通时序时,每进行一次DMA传输,一般用3个时钟周期( S2 S3 S4 );压缩时序,用两个时钟周期(S2 S4 ),此时只更新低8位地址,不修改高8位地址/48/8237A的工作周期、时序与模式/49/8237A的寄存器/8237A共有10种内部寄存器,对它们的操作有时需要配合3个软件命令 8237A的“软件命令” 不需要通过数据总线写入控制字 直接由地址和控制信号译码实现/全部都用地址A0A3区分/50/1/ 8237A 的控制寄存器/存放8237A的命令字 设置8237A芯片的操作方式 影响每个DMA通道

21、 复位时使命令寄存器清零 设置D20才使8237A可以作为DMA***/请看命令字的格式/8/5 8237A 的控制寄存器和状态寄存器/51/命令字格式/8237A 控制/命令寄存器格式(写8号):硬件设置与运行控制 8237A硬件设置/52/DMA***8237/控制寄存器格式和有关问题/52/D7 D6 D5 D4 D3 D2 D1 D0/DO:为1则为内存到内存的传送。此时通道0用于存放源地址,通道1用于存放目的地址及计数值/53/DMA***8237/D0D7/53/8237/暂存器/内存/内存/A0A15/MEMW/MEMR/D0D7/内存到内存的传输/54/DMA***8237/D

22、1:为1时,可实现内存到内存时,使源 地址不变而目的地址变化,用于实现 内存的初始化。 D2:为0启动8237工作,D2为1停止8237 作。 D3:为0普通时序,为1压缩时序。 当地址范围仅用于A7A0时的DMA时 序为压缩时序,即一次可传送最多 256个数据/54/55/DMA通道的优先权方式/D4=0 固定优先权方式优先权固定 通道0优先权最高,通道1其次,通道2再次,通道3最低 D4=1 循环优先权方式优先权循环变化 最近一次服务的通道在下次循环中变成最低优先权,其他通道依次轮流相应的优先权/DMA传送不存在嵌套/D5:为0不扩展写信号;为1扩展写信号,使MEMW,IOW扩展2个时钟周

23、期/56/DMA***8237/2/ 状态寄存器格式/56/D7 D6 D5 D4 D3 D2 D1 D0/D0 D1 D2 D3:表示4个通道计数结束状态 1:结束; 0:未结束 D4 D5 D6 D7:表示4个通道DMA请求情 况 1:申请; 0:无申请/读8号/57/3/ 请求寄存器/存放软件DMA请求状态 除硬件DMA请求外,当工作在数据块传送方式时也可以通过软件发出DMA请求 若是存贮器到存贮器传送,则必须由软件请求启动通道0/请看请求字的格式/58/请求字格式/8237A DMA 请求寄存器 格式(写9号/D6: 1:DREQ高电平有效/59/***寄存器/控制外设硬件DMA请求是否

24、被响应(为0允许),各个通道互相***。3种方法: 单通道***字只对一个DMA通道***位进行设置 主***字对4个DMA通道***位同时进行设置 清***寄存器命令使4个***位都清零(允许) 复位使4个通道全置于***状态 当一个通道的DMA过程结束,如果不是工作在自动初始化方式,则这一通道的***位置位,必须再次编程为允许,才能进行下次DMA传送/请看***字的格式/60/单通道***字格式/8237A ***寄存器格式 (单一位)(写A号/61/主***字格式/Di0 清通道I***位Di1 置通道I***位/8237A 全4位 MASK 寄存器 格式 (写F号/62/临时寄存器/在存储器到存储器的传送方式下,临

25、时寄存器保存从源存储单元读出的数据,该数据又被写入到目的存储单元 传送完成,临时寄存器只会保留最后一个字节,可由CPU读出 复位使临时寄存器内容为零/63/4/ 8237的字节指针(1) 现行地址寄存器/保持DMA传送的当前地址值 每次传送后该寄存器的值自动加1或减1 这个寄存器的值可由CPU写入和读出/基地址寄存器 存放初始值/64/2) 现行字节数寄存器/保持DMA传送的剩余字节数 每次传送后,该寄存器的值减1 这个寄存器的值可由CPU写入和读出 该寄存器的值减至0,再减1(从0减到FFFFH)时,终止计数/基字节数寄存器 存放初始值/传送N个字节,初始值为N1/65/读写通道寄存器/CP

26、U与8237A之间通过8位数据总线交换信息,8237A的通道寄存器均为16位 需要两次读写操作才能实现CPU与8237A之间的一个完整数据的交换 8237A内含一个高/低触发器,用来控制读写通道寄存器的高、低字节/66/高/低触发器/该触发器为0,控制读写低字节 该触发器为1,控制读写高字节 软、硬件复位后,触发器为0 每次读写通道寄存器,自动改变触发器状态。如果对16位寄存器的操作用两次连续读写进行,就不必清除这个触发器 清除高/低触发器软件命令(A3A2A1A01100)将使高/低触发器清零/67/3个软件命令/清除高/低触发器软件命令 A3A2A1A01100=0CH,使高/低触发器清零

27、 主清除命令 A3A2A1A01101=0DH,使高/低触发器清零 还使命令、状态、请求、临时寄存器清零 使***寄存器置为全1(禁止DMA请求) 主清除命令与硬件的RESET信号具有相同的功能 清***寄存器命令 A3A2A1A01110=0EH,使4个***位都清零(允许DMA请求/68/内部寄存器的寻址问题/占用16个端口地址 问题:如此多的寄存器,采用什么方法只用16个端口地址就能访问到? 端口分配表(见下页/68/69/8237内部寄存器的寻址/70/8/7 8237的编程/1/ 编程步骤 8237的编程通常可按如下步骤进行: (1) 输出主清除命令;总清时只要求对总清地址进行写操作并不关

28、心写入什么数据。 (2) 置页面寄存器; (3) 写入基和当前地址寄存器; (4) 写入基和当前字节计数寄存器; (5) 写入模式寄存器; (6) 写入命令寄存器; (7) 写入***寄存器; (8) 写入请求寄存器/70/71/其中第(8)步是采用软件DMA请求时所需要的,由此可将相应的请求命令字写入指定通道,从而启动DMA传送过程; 若为硬件DMA请求,则无需此步骤,只要在完成了(1)(7)步编程后,由通道的DREQ信号即可启动DMA传送过程/71/72/编程举例 在IBMPC系统中,试利用8237通道1,将内存8000H:0H开始的16K字节数据传送至磁盘(地址增量传送)。 要求采用块传送

29、方式,传送完不自动预置,DREQ和DACK均为高电平有效,固定优先级,普通时序,不扩展写信号。 系统中8237的端口地址为00H0FH。 通道1“页面寄存器”的端口地址为83H/72/73/89H/块方式/读传送/通道1/地址增量/非自动初始化/1)确定模式字/73/74/2)确定命令字/非存储器至 存储器传送/无意义/***允许/普通时序/DACK 高电平有效/DREQ 高电平有效/正常写/固定优先级/80H/74/75/3)确定***字/01H/通道1的***位复位/75/76/初始化程序如下/OUT 0DH,AL ; 输出主清除命令 MOV AL/ 08H ; 置通道1“页面寄存器” 页面地

30、址为8(A19 A16=08H) OUT 83H/ AL MOV AL, 00H ; 写入基和当前地址低8位 OUT 02H,AL MOV AL,00H ; 写入基和当前地址高8位 OUT 02H,AL MOV AL,00H ; 写入基和当前字节计数寄存器低8位 OUT 03H,AL MOV AL,40H ; 写入基和当前字节计数寄存器高8位 OUT 03H,AL MOV AL,89H ; 输出模式字 OUT 0BH,AL MOV AL,80H ; 输出命令字 OUT 08H,AL ;8237内部寄存器的寻址 MOV AL,01H ; 输出***字 OUT 0AH,AL/76/77/8237A的

31、编程(续1/DMA通道的DMA传送编程: 将存储器起始地址写入地址寄存器(如果采用地址减量工作,则是结尾地址) 将本次DMA传送的数据个数写入字节数寄存器(个数要减1) 确定通道的工作方式,写入方式寄存器 写入***寄存器复位通道***位,允许DMA请求/请看实例/78/8237A的编程(续2/两种方法反映DMA过程结束(即终止计数、发生TC): 状态寄存器的低4位 信号(需配合DACK响应信号确定通道) 应用程序处理DMA传送过程结束: 采用软件查询状态字 采用硬件中断在中断服务程序处理/79/8237A的应用/8237A在PC系列机的使用情况 DMA写传送 DMA设定子程序/80/8237A在

32、IBM PC系列机上的应用/IBM PC/XT机使用一片8237A 通道0:动态存贮器DRAM刷新 通道1:用户使用或SDLC卡 通道2:内存与软盘的高速数据交换 通道3:内存与硬盘的高速数据交换 IBM PC/AT机采用两片8237A DMAC1包含通道03,支持8位数据传送 DMAC2组成通道47,通道57支持16位数据传送,通道4用于级连/81/1) 8237A的初始化/8237A初始化写入命令字为0,确定了: DREQ高电平有效、DACK低电平有效,固定优先权(依次为通道0、17) 不进行存储器到存储器的数据传输 PC机用DMA控制电路进行刷新,所以DMA传送不能长时间占用总线(不应超

33、过15s),一般只能使用单字节传送方式 在PC系列机上,用户如果使用DMA通道,要注意遵从上述系统要求。除了要禁止8237A工作,用户通常不必操作命令寄存器/82/2) 高位地址的形成/DMA传送时的高位地址由“页面寄存器”提供 页面寄存器由CPU的输出指令实现写入 DMAC1的通道0通道3:8237A提供系统A0A15低16位地址,页面寄存器输出系统A16A23高8位地址 DMAC2的通道5通道7:8237A提供系统A1A16的16位地址,而系统A0被强迫为逻辑0,页面寄存器仅输出高7位地址A17A23/页面寄存器不会自动增减量 高位地址在DMA传送过程中不改变/83/DMA通道0的刷新编程/out 0dh/al/DMAC主清除命令 mov al/0 out 08/al/DMAC命令字 mov al/0 out

温馨提示:
1. WEO啦仅展示《技术与DMA***》的部分公开内容,版权归原著者或相关公司所有。
2. 文档内容来源于互联网免费公开的渠道,若文档所含内容侵犯了您的版权或隐私,请通知我们立即删除。
3. 当前页面地址:https://www.weo.la/doc/4981063b03cbbda5.html 复制内容请保留相关链接。