1 / 90

第 8 章 DMA 技术与 DMA 控制器

第 8 章 DMA 技术与 DMA 控制器. § 8.1 DMA 技术概述 § 8.2 可编程 DMA 控制器 8237A § 8.3 DMA 技术在微机系统中的应用. 直接存储器存取. §8.1 DMA 技术概述. 1.DMA(Direct Memory Access) 的概念 DMA 方式不用处理器干预完成 M 与 I/O 间数据传送。 DMA 期间系统总线由其它主模块控制 ( 驱动 ) 控制总线的主模块要提供系统的地址及控制信号。 DMA 控制器与处理器配合可实现系统的 DMA 功能。. 地址总线. HOLD

rae
Download Presentation

第 8 章 DMA 技术与 DMA 控制器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第8章 DMA技术与DMA控制器 §8.1 DMA技术概述 §8.2 可编程DMA控制器8237A §8.3 DMA技术在微机系统中的应用 直接存储器存取

  2. §8.1 DMA技术概述 1.DMA(Direct Memory Access)的概念 • DMA方式不用处理器干预完成M与I/O间数据传送。 • DMA期间系统总线由其它主模块控制(驱动) • 控制总线的主模块要提供系统的地址及控制信号。 • DMA控制器与处理器配合可实现系统的DMA功能。

  3. 地址总线 HOLD HLDA 总线 请求 DMA 请求 I / O 设备 HRQ DREQ DMAC HLDA DACK 总线 响应 DMA 响应 CPU 控制总线 数据总线 2. DMA系统组成及工作过程․ DMA系统组成

  4. DMAC的基本功能 • 接收接口往DMA控制器发出DMA请求信号后,DMA控制器能向CPU发出总线请求信号HOLD(高电平)。 • 当CPU向DMA发出响应信号HLDA(高电平)以后,DMA能接管对总线的控制,进入DMA方式。 • 能向地址总线发出内存地址信息,对其进行寻址及修改地址指针。

  5. DMAC的基本功能 • 能向存储器或I/O接口发相应的读写控制信号。 • 能决定传送字节数,并判断DMA传送是否结束。 • DMA过程结束,能向CPU发出DMA结束信号,HOLD变低,将总线控制权还给CPU,CPU恢复正常工作。

  6. ․DMA传送方式 允许 DMA DMA 请求? N Y DMAC发BUS请求 CPU响应DMA 放弃BUS DMAC控制 传一个字节 DMA 放 总 线 N 块结束否? Y 放弃总线中断请求 字节传送

  7. ․DMA传送方式 允许 DMA DMA请求? DMAC发BUS请求 CPU 响应 DMA 放弃 BUS DMAC控制 传一个字节 Y N 块结束否? DMA请求? 块传送 N Y 放总线中断请求

  8. ․DMA传送方式 允许 DMA N DMA请求? Y DMAC发出BUS请求 CPU响应DMA放弃总线 DMAC 控制传一个字节 Y 块结束否? DMA请求? N Y 放总线 放总线中断请求 随机请求 DEMAND REQUEST

  9. DMA传送的过程 I/O设备向DMAC发出DMA请求 完成设定的字节数据传送, CPU恢复对系统总线的控制 DMAC向CPU发出总线请求 DMAC进行一个字节的传送 • CPU在执行完当前指令的当前 • 的总线周期后,向DMAC发出 • 总线响应信号 DMAC向I/O设备发出 的DMA应答信号 CPU脱离对系统总线的控制, 由DMAC接管对系统总线的控制

  10. §8.2 可编程DMA控制器8237A • §8.2.1 8237A的主要特性 • 1.具有四个独立的DMA通道,每个通道都具有64K的存贮器寻址能力,即一次传送的最大长度为64K字节。 • 2.可实现内存与外设之间的高速大批量数据传送,也可实现内存两个不同区域之间的高速数据传送。 • 3.每个通道的DMA请求均可分别允许或禁止,且四个通道的DMA请求的优先权可由软件设置为固定的或循环的。

  11. 8237A的主要特性 • 4.具有单字节传送、数据块传送、请求传送和级联传送四种工作方式。 • 5.可用级联方式扩展DMA通道数目。 • 6.DMA传送结束信号可由内部计数产生,也可由外部输入提供。 • 7.单一的+5V电源,40个引脚双列直插式封装。 • 8.采用5MHz时钟,传送速率可达1.6M字节/秒。

  12. 8.采用5MHz时钟,传送速率可达1.6M字节/秒。 • 8237进行一次DMA传送需要3个时钟周期(不包括插入的等待周期SW)。时钟周期为200 ns,则一次DMA传送需要200 ns×3+200 ns=700 ns(1.6 M字节/秒)。多加一个200 ns是考虑到人为插入一个SW的缘故。另外,8237为了提高传输速率,可以在压缩定时状态下工作。在此状态下,每一个DMA总线周期仅用两个时钟周期(200 ns×2=400ns )就可实现,这大大提高了传输速率。  

  13. §8.2.2 8237A的工作原理 • 1.8237A的编程结构 • 编程结构见下页图 • 内部有大量寄存器,内部寄存器的功能、端口地址等信息 参见下表.

  14. Intel 8237A可编程DMA控制器框图

  15. 基地址寄存器 ----放DMA传送RAM地址初值 • 地址寄存器2个16位 当前地址寄存器: ----DMA传送时内容变化,可读。 每个通道 基字节数寄存器: ----DMA传送的总字节数。 • 字节数寄存器2个16位 当前字节数寄存器: ----DMA传送时内容变化,可读。 • 模式REG, 1个8位 • 1个DMA请求触发器 • 1个DMA屏蔽触发器 1)8237A组成说明: • 8237A有四个独立通道:通道0~通道3。每个通道可独立响应外部DMA请求,完成DMA传送。 • 15

  16. 状态寄存器, 8位 • 屏蔽寄存器,8位。 • 请求标志寄存器, 8位 • 作从模块----接收CPU的信号和命令字,产生控制,读/写内部寄存器 • 暂存器, 8位 • 定时和控制逻辑 • 作主模块----控制总线,产生控制命令完成DMA传送 • 四个通道公用 • 优先级编码电路---优先级裁决 • 控制寄存器, 8位 • 16

  17. 8237的引脚功能 • 17

  18. 8237的引脚功能 • 请求/应答信号 • 外设接口电路向8237的请求信号:DREQ3~DREQ0 • 8237对外设接口电路的应答信号:DACK3~DACK0 • 8237向CPU申请总线的信号:HRQ(连至CPU的HOLD) • CPU向8237传送的允许使用总线信号:HLDA DREQ HRQ • 外设 • CPU • DMA HLDA DACK • 18

  19. 8237的引脚功能 • 地址信号 • :CPU初始化8237或读8237状态时所需的片选信号 • A7~A0(输出):8237访问存储器的地址信号的低8位。 • A3~A0(输入):CPU初始化8237或读8237状态时,用于寻址8237内部寄存器 • 19

  20. 8237的引脚功能 • 数据信号(双向): DB7~DB0 CPU为主控时,可以通过I/O读命令查询8237的状态寄存器的内容,或通过I/O写命令对8237的内部寄存器进行编程,数据传送通过DB7~DB0 8237为主控时, DB7~DB0输出要访问的内存地址的高8位,并通过ADSTB锁存到外部地址锁存器中,和A7~A0输出的低8位地址一起构成16位地址 • 20

  21. 8237的引脚功能 • 地址允许信号:AEN • 8237作为主控时(8237控制总线),输出AEN=1。 • 8237作为从控时(CPU控制总线),输出AEN=0。 • DMA传输结束信号: (双向) • 当DMAC内部任一通道传输结束,8237发出 • 若由外部给DMAC送入有效的 ,则强制DMAC内部 • 所有通道结束传输。 • 21

  22. 8237的引脚功能 MEMR/MEMW: 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 2)主模块工作方式: 此时DMA已取代CPU控制系统。它 将提供系统正常工作的地址信息,控 制信息完成DMA方式的数据传送。 • 26

  26. DMA控制器8237 • 8237A处于DMA方式时,全部地址均用来寻址存储器,无法同时提供I/O设备的端口地址.为了寻址外部设备,8237A提供DACK信号,作为对请求DMA方式的外部设备的应答,并指明该外部设备被认可,可以进行DMA传送.在整个传输过程中只要DACK信号,IOR,IOW同时有效,就能完成读外部设备的I/O读写操作.所以,在DMA方式下,I/O设备的地址无效.即:以DACK代替了片选和译码功能. 那对于20位地址线8237如何处理? 由上可见8237工作于模块方式,可取代CPU产生地址及控制信息。 • 在8086/88系统中,系统的寻址范围是1MB,地址线有20条,即A0~A19。为了能够在8086/88系统中使用8237来实现DMA,需要用硬件提供一组4位的页寄存器。 • 通道0、1、2、3各有一个4位的页寄存器。在进行DMA传送之前,这些页寄存器可利用I/O地址来装入和读出。当进行DMA传送时,DMAC将A0~A15放在系统总线上,同时页寄存器把A16~A19也放在系统总线上,形成A0~A19这20位地址信号实现DMA传送。其地址产生如图所示。 • 28

  27. 利用页寄存器产生存储器地址 • 29

  28. 8237A的工作方式 • DMA传送方式 ·单字节传送方式 ·数据块传送方式 ·请求传送方式 ·级连方式 • DMA传送类型 ·DMA读 ·DMA写 · DMA检验 • 存储器到存储器的传送

  29. DMA传送方式 (1) DMA传送-单字节方式 • 每次DMA传送时仅传送一个字节 • 传送一个字节之后,字节数寄存器减1,地址寄存器加1或减1,HRQ变为无效 • 8237A释放系统总线,将控制权还给CPU • 若传送后使字节数从0减到FFFFH,则终结DMA传送或重新初始化 • 特点: • 一次传送一个字节,效率略低 • DMA传送之间CPU有机会重新获取总线控制权

  30. (2) DMA传送-数据块方式 • 由DREQ启动就连续地传送数据,直到字节数寄存器从0减到FFFFH终止计数,或由外部输入有效信号终结DMA传送 • DREQ只需维持有效到DACK有效 • 特点: • 一次请求传送一个数据块,效率高 • 整个DMA传送期间CPU长时间无法控制总线(无法响应其他DMA请求、无法处理中断等)

  31. (3) DMA传送-请求方式 • DREQ信号有效就连续传送数据 • DREQ信号无效,DMA传送被暂时中止,8237A释放总线,CPU可继续操作 • DMA通道的地址和字节数的中间值仍被保持 • DREQ信号再次有效,DMA传送就继续进行 • 如果字节数寄存器从0减到FFFFH,或者由外部送来一个有效的信号,将终止计数 • 特点: • DMA操作可由外设利用DREQ信号控制传送的过程

  32. (4) DMA传送-级连方式 • 用于通过多个8237A级连以扩展通道 • 第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上 • 第二级芯片的优先权等级与所连通道的优先权相对应 • 第一级只起优先权网络的作用,实际的操作由第二级芯片完成 • 还可由第二级扩展到第三级等

  33. 第二级 第一级 8237 | 微处理器 HRQ DREQ 0 | | HOLD HRQ DACK 0 HLDA ... ... | HLDA HLDA | HRQ DREQ 3 3 DACK | HLDA 8237 8237A的级联

  34. DMA传送类型 • DMA读——把数据由存储器传送到外设 • 由MEMR*有效从存储器读出数据,由IOW*有效把这一数据写入外设 • DMA写——把外设输入的数据写入存储器 • 由IOR*有效从外设输入数据,由MEMW*有效把这一数据写入存储器。 • DMA检验——空操作 • 8237A不进行任何检验 • 外设可以进行DMA校验 • 存储器和I/O控制线保持无效,不进行传送

  35. 存储器到存储器的传送 • 固定使用通道0和通道1 • 通道0的地址寄存器存源区地址 • 通道1的地址寄存器存目的区地址,通道1的字节数寄存器存传送的字节数 • 传送由设置通道0的软件请求启动 • 每传送一字节需用8个时钟周期 • 前4个时钟周期用通道0地址寄存器的地址从源区读数据送入8237A的临时寄存器 • 后4个时钟周期用通道1地址寄存器的地址把临时寄存器中的数据写入目的区

  36. 8237A的工作方式由写模式寄存器决定 • 存放相应通道的方式控制字 • 选择某个DMA通道的工作方式 • 其中用最低2位选择哪个DMA通道 请看方式字的格式

  37. 方式字格式(写B号) 00 请求模式 01 单字节模式 10 数据块模式 11 级联模式 00 DMA校验 01 DMA写 10 DMA读 11 非法 ×× 若D7D6=11 0 地址增量(加1) 1 地址减量(减1) 0 禁止自动初始化 1 允许自动初始化 00 通道0 01 通道1 10 通道2 11 通道3

  38. DMA控制器8237 • 自动预置功能: • D4:当设置为自动预置时,每当DMA过程结束信号EOP*产生时(不论是内部终止计数还是外部输入该信号)用基地址寄存器和基字节数寄存器的内容,使相应的现行寄存器恢复为初始值,包括恢复屏蔽位、允许DMA请求这样就作好了下一次DMA传送的准备 • 40

  39. DMA控制器8237 D3 D2:传输方式设定 写输入: I/O设备往内存写入数据。 读输入; 将内存数据送往I/O设备。 校验传输:用于对读传输和写传输功能进行 校验,是虚拟传输,8237此时只产 生EOP信号和地址信号。 • 41

  40. DMA控制器8237 存 储 器 8237 8237 A0~A7 存 储 器 A0~A15 MEMW MEMR D0~D7 I/O 设备 IOR I/O 设备 IOW 写传输读传输 • 42

  41. 8.4 827A的时序 当8237A没有被外围设备用来进行DMA操作时,此时它处于所谓空闲状态。在这种状态下,微处理器可以向这个DMA控制器输出命令以及读/写它的内部寄存器 。

  42. DMA空闲周期SI • 过渡状态S0 • 有效周期(S1、S2、S3、S4) DMA控制器的工作时序 8237A内部状态变化流程

  43. 8237A的工作时序·空闲周期 • 8237A的任一通道都没有DMA请求时 • 8237A由微处理器控制作为一个接口芯片 • CPU可对8237A编程,或从8237A读取状态 • 8237A采样CS*选片信号,该信号有效,CPU就要对8237A进行读/写操作 • 8237A还采样通道的请求输入信号DREQ,该信号有效,就进入有效周期 进入有效周期

  44. 8237A的工作时序·有效周期 • 8237A采样到外设有DMA请求,就脱离空闲周期进入有效周期 • 8237A作为系统的主控芯片,控制DMA传送操作 • DMA传送借用系统总线完成,其控制信号以及工作时序类似CPU总线周期 进入DMA传送时序

  45. Si Si S0 S0 S1 S2 S3 S4 S2 S3 S4 Si Si CLK DREQ HRQ HLDA AEN ADSTB DB0~DB7 A0~A7 DACK MEMR(IOR) IOW(MEMW) DMA传送时序

  46. 8237A的工作周期、时序与模式 a) S1 周期: DMAC在S1 状态发出地址允许AEN信号,通过数据总线DB0~DB7将高8位地址A8 ~A15锁存起来。多数情况下,这几位地址不需改变,故可直接进入S2周期。 b)S2周期:①修改存储单元的低8位地址,(高8位已锁存) ②向I/O发请求回答信号DACK,准备 传送数据。 c)S3周期:送高8位地址A8 ~A15到地址总线,发出MEMR或IOR读命令,从内存或I/O准备传送数据。 d)S4周期:发IOW或MEMR命令。 用普通时序时,每进行一次DMA传输,一般用3个时钟周期( S2 S3 S4);压缩时序,用两个时钟周期(S2S4),此时只更新低8位地址,不修改高8位地址 • 48

  47. 8237A的寄存器 • 8237A共有10种内部寄存器,对它们的操作有时需要配合3个软件命令 • 8237A的“软件命令” • 不需要通过数据总线写入控制字 • 直接由地址和控制信号译码实现 全部都用地址A0~A3区分

  48. 8.5 8237A 的控制寄存器和状态寄存器 1. 8237A 的控制寄存器 • 存放8237A的命令字 • 设置8237A芯片的操作方式 • 影响每个DMA通道 • 复位时使命令寄存器清零 • 设置D2=0才使8237A可以作为DMA控制器 请看命令字的格式

  49. 0 DACK低有效 1 DACK高有效 0 滞后写 1 扩展写 × 若D3=1 0 DREQ高有效 1 DREQ低有效 0 固定优先权 1 循环优先权 0 允许DMAC工作 1 禁止DMAC工作 0 禁止存储器之间传送 1 允许存储器之间传送 0 正常时序 1 压缩时序 × 若D0=1 0 允许通道0地址改变 1 禁止通道0地址改变 × 若D0=0 命令字格式 • 8237A 控制/命令寄存器格式(写8号):硬件设置与运行控制 • 8237A硬件设置:

  50. DMA控制器8237 D7 D6 D5 D4 D3 D2 D1 D0 DO:为1则为内存到内存的传送。此时通道0用于存放源地址,通道1用于存放目的地址及计数值。 控制寄存器格式和有关问题: • 52

More Related