n5嵌入式系统常用模块设计(2).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统原理与设计 第五讲 嵌入式系统常用模块设计(2) DMA简述 1) DMA控制器结构 S3C44B0X有4路DMA控制器,其中两路称为ZDMA(General DMA)被连到SSB(Samsung System Bus)总线上,另外两路称为BDMA(Bridge DMA)是SSB和SPB(Samsung Peripheral Bus)之间的接口层,相当于一个桥,因此称为桥DMA。 ZDMA和BDMA都可以由指令启动,也可以有内部外设和外部请求引脚来请求启动。ZDMA、BDMA结构。 ZDMA 控制器框图 BDMA 控制器框图 ZDMA用来在存储器到存储器、存储器到I/O、I/O装置到存储器之间传输数据。BDMA控制器只能在连到SPB上的I/O外设(如UART, IIS和SIO)与存储器之间传输数据。 ZDMA最大的特性是on-the-fly模式,on-the-fly模式有不可分割的读写周期,在这点上ZDMA与普通的DMA不同,从而可以减少在外部存储器和外部可寻址的外设之间DMA操作的周期数。 对于ZDMA,S3C44B0X有一个4字的FIFO缓冲来支持4字突发DMA传输,而BDMA不支持突发DMA传输,因此存储器之间的传输数据最好用ZDMA传输,来提供高的传输速度。 S3C444B0X ZDMA/BDMA操作 1) 外部DMA REQ/ACK 协议 对于ZDMA ,有四种类型的外部DMA请求/应答协议: ① 握手模式(Handshake Mode) 一个单独的应答对应一个单独的DMA请求,在该模式,DMA操作期间的读写周期不可分割,因此在一个DMA操作完成前,不能把总线让给其它总线控制器使用。 一次nXDREQ请求引起一次DMA传输(可以是一个字节,一个半字或一个字)。 ② 单步模式(Single Step Mode) 单步模式意味着一次DMA传输有两个DMA应答周期(产生两个应答信号nXDACK)指示DMA读和写周期,主要用与测试和调试模式,在读写周期之间,总线控制权可以让给其它总线控制器。 ③ 连续模式(Whole Service Mode) 在该模式,一次DMA请求将产生连续的DMA传输,直到规定的DMA传输数传输完,在DMA传输期间,nXDACK一直有效,DMA请求信号被释放。并且在每次传输一个数据单元后,释放一次总线控制权,以便其它总线控制器有机会可以占用总线。 ④ 手动模式(Demand Mode) 在该模式,只要DMA请求信号一直有效,DMA传输就持续进行,并且一直占用总线控制权,因此应该预防传输周期超过规定的最大时间。 DMA传输模式 单位(Unit)传输模式 1个单位读,然后1个单位写 块(Block)传输模式 4个字突发读, 然后4个字突发写,因此传输的数据个数应当是16字节的倍数。 On_the_fly块传模式 1个单位读或1个单位写,读写同时进行。 ZDMA控制寄存器 ZDCON0/1 是ZDMA 0/1 控制寄存器 ZDMA其他寄存器 ZDISRC0/1是ZDMA0/1初始源地址寄存器 ZDIDES0/1是ZDMA0/1初始目标地址寄存器 ZDICNT0/1是ZDMA0/1初始计数寄存器 ZDCSRC0/1是ZDMA0/1当前源地址寄存器 ZDCDES0/1是ZDMA0/1当前目标地址寄存器 ZDCCNT0/1是ZDMA0/1当前计数寄存器 ZDMA0/1 初始当前计数器寄存器 ZDMA0/1 初始当前计数器寄存器 BDMA控制寄存器 BDCON0/1是BDMA0/1控制寄存器 BDMA其他寄存器 BDISRC0/1是BDMA0/1初始源地址寄存器 BDIDES0/1是BDMA0/1初始目标地址寄存器 BDICNT0/1是BDMA0/1初始计数寄存器 BDCSRC0/1是BDMA0/1当前源地址寄存器 BDCDES0/1是BDMA0/1当前目标地址寄存器 BDCCNT0/1是BDMA0/1 当前计数寄存器 BDMA目标地址寄存器 BDMA计数寄存器 # **************************************** # * change BDMACON reset value for BDMA * # **************************************** ldr r0, =BDIDES0 ldr r1, =0 /* BDIDESn reset value should be 0*/ str r1, [r0] ldr r0, =B

文档评论(0)

151****0104 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档