http://hi.baidu.com/phoebus08/blog/item/5d3ccffba88452d6b58f316d.html

1)EDMA概要

①EDMA数据传输有两种发起方式:

ü         CPU发起的EMDA数据传输(非同步方式):需要传输时,CPU设置ESR寄存器的相应位为1,从而触发一个EDMA事件的产生,事件对应的通道参数被送往地址硬件并且完成相应的处理,这种非同步方式的实时数据传输无需设定EER寄存器;

ü         事件触发方式EDMA数据传输(同步方式):ER寄存器保存外设发送过来的事件,一旦CPU设置EER寄存器的相应位为1后,ER中的事件才会提交给事件编码器(Event Encoder),并且进一步引起相关的传输参数的发送给地址产生硬件;如果EER中对应于某事件的位没有置1,则ER寄存器中的事件将保留,一旦置1则触发EDMA的传输,这种特性可以应用到EDMA Chain传输,需要EER和CCER结合使用;

②EDMA每个通道是和特定的系统事件绑定的,如下表所示:

③EDMA Chain Transfer:一个通道传完继续传另一个通道;

④EDMA Link Tansfer:设定参数后,通道的数据传输传完,再载入这个通道的其他参数设定,再进行数据传输;

(2)EDMA数据传输类型:

EDMA有两种类型的数据传输:1D和2D的(OPT.2DS和OPT.DDS标示源地址和目的地址的数据传输类型,即有4种组合方式);数据的维数表明了数据的组成方式:

①1D数据

数据组成是“块->帧->元素”;一个块中的每帧数据是独立处理(即可以理解亦为2D数据,但是第二维永远是1),每次处理是一个元素,因此一帧中的数据元素可以是在同一个内存地址、连续的地址或者是与同一帧中的前面的数据元素地址具有一定偏移(Offset,由ELEIDX通道参数指定)的某地址;不同帧之间的内存地址偏移由FRMIDX通道参数指定(两帧的第一个元素之间的偏移或者后一帧的第一个元素的地址与前一帧的最后一个元素地址的偏移,具体依赖于通道参数FS的设定);每帧的数据元素个数可以不同,由通道参数ELECNT指定,传完一帧数据后由ELERLD重新载入块中的下一帧的数据元素个数ELECNT;块中的帧的个数由通道参数FRMCNT指定;

1D数据传输有两种同步方式:OPT.FS=0,元素同步方式;OPT.FS=1,帧同步方式;

元素同步时,一次同步事件引起一帧中的一个元素的传输,每传输一次ELECNT递减1;当同步事件触发时,ELECNT=1表明是一帧的最后一个数据元素,此时EDMA控制器除了完成最后这个元素的传输外,还需要重新载入ELECNT(通过ELERLD)并且FRMCNT递减1;ELEIDX表示元素之间的偏移,FRMIDX表示一帧的最后一个元素和下一帧的第一个元素之间的偏移;如果OPT.LINK=1时,传输完成中断产生(FRMCNT=0)就重新从PRAM中载入当前通道的其他参数;

帧同步时,一次同步事件引起一帧数据的传输,FRMIDX表示两帧的第一个元素之间的偏移;

② 2D数据

数据组成为“块->数组->元素”,同一数组中的元素是连续存放的,因此ELEIDX无意义;数组中的元素素引表示2D的第一维,块中的数组索引表示2D的第二维;FRMIDX的值依赖于OPT.FS的设定;

OPT.FS=0:表示一次同步事件传输一个数组,此时FRMIDX是数组首地址之间的偏移;每传完一个数组,FRMCNT递减1;当OPT.LINK=1并且FRMCNT递减至0时,从PRAM的中重新载入当前通道的其他参数;

OPT.FS=1:表示一次同步事件传输一个块;FRMIDX表示前一个数组的最后一个元素的地址与后一个数组的第一个元素的地址之间的偏移;如果OPT.LINK等于1,则当整块数据传完时,重新从PRAM中为当前通道载入新的参数;

(3)EDMA传输过程的源/目的地址的修改

在每次同步事件触发EDMA数据传输,并且传输完成后,需要对源/目的地址进行更新;地址的更新方式由SUM/DUM进行设定,并且和2DS、2DD以及FS是密切相关的;

(4)数据元素大小和对齐方式

源/目的地址是在元素大小的边界对齐的,因此要注意指向源/目的地址的指针的类型需要和OPT.ESIZE匹配;

(5)FRMCNT和ELEMCNT的更新

    

QUESTION:每次进行计数更新时,ELERLD的值哪里来的??

(6)EDMA Linking Transfer

    当传输完成时(根据当前通道参数设定已经传完所有数据了,具体条件如下表所示),并且OPT.LINK=1,EDMA控制器会根据通道参数LINK(非OPT.LINK,16bits)从PaRAM中的其他位置(以24个字节对齐,因为通道参数为6WORD)重新载入当前传输通道的参数;可以链接到一个空的通道参数集(NULL Parameter)来停止EDMA传输,也可以自链接(用于循环缓冲处理或者重复的数据传输);Linking过程中不对相关寄存器作判定;

(7)EDMA中断

    C64X DSP的EDMA控制器的所有64个通道只产生一种中断:EDMA_INT。如果需要让第n个EDMA通道(或者QDMA请求)可以在传输完成时可以产生中断通知CPU的话,应该如下设定:

u       OPT.TCINT=1:表示启用传输完成中断

u       OPT.TCC=n:在传输完成时,CIPR[TCC]=1,用于标记对应通道的传输完成,即便对应的CIER位没有启动,传输完成事件还是会在CIPR记录,即挂起的含义所在;

u       OPT.CIER[n]=1:表示立即允许挂起的第n个通道传输完成事件触发EDMA_INT中断发送给CPU;

其中,TCC用于表示的通道的位数不够时,可以扩展使用TCCM(即TCCM:TCC),CIPR和CIER均由两个寄存器组成:CIPRL+CIPRH以及CIERL+CIERH。

中断服务例程ISR读取CIPR,确定哪一个通道完成了数据传输,进行相应的处理。ISR在进行处理之前需要清除CIPR中确定了通道的位(写入1到相关位清除,写入0不起作用),目的是记录以后的传输完成事件的发生。在中断服务例程对某通道的传输完成中断进行服务后,因为期间有可能有其他通道传输完成了,也已经设置了CIPR中的相应位,或者也有可能本来有好几个中断挂起了并且现在触发了,因此中断服务例程必须检查所有的CIPR并全部完成中断服务才行。当CIPR[n]&CIER[n]=1时,则设置对应的IFR为1,防止在退出ISR时丢失中断并且使得可以多次调用ISR。中断服务例程的一个任务是清除CIPR和CIER中的与通道对应的位。

C64X DSP除了传输完成中断外,还有交替性传输完成中断,即在传输过程中完成一个传输子过程(如传完一个数据元素、传完一个帧/数组数据;2D帧同步传输没有交替性传输完成中断)给CPU发送一个中断,相应的设定由OPT.ATINT、OPT.ATCC设定,处理过程和传输完成中断雷同,区别只是在传输还没全部完成的过程中进行中断处理而已。

(8)QDMA

    QDMA数据传输总是帧同步的,即对于1D数据传输而言每次同步事件传输一帧数据,对于2D数据传输而言每次同步事件传输一块数据。因此,QOPT.FS对于QDMA是无意义的。另外,QDMA是一次性快速传输的,因此也没有中间传输过程这个概念,即没有交替性传输完成中断。

QDMA没有Linking方式的传输,但是有Chaining方式的传输。QDMA有两组内存映射寄存器用于设定通道参数,如下图所示:

其中,QDMA寄存器集只用于配置,QDMA psedudo寄存器集可以用于提交QDMA请求。

(9)EDMA控制器的请求提交

    请求包括L2控制器(Cache服务、访问未Cache的内存以及QDMA传输)、EDMA通道、HPI/PCI。Transfer Crossbar为请求排定优先级。

(10) Event Encoder 事件编码器

    事件寄存器ER(包括ERL和ERH)用于捕获对应于64个EDMA通道的事件。在事件编码器中只是负责提交请求,事件的优先局依赖于EDMA通道参数的设定,并且在Transfer Crossbar中才正式排定。

(11)Parameter RAM

    Parameter RAM位于EDMA控制器内部,只有设备总线可以对之进行访问。PRAM表大小为2KB,其组成为:

①     64个24字节(即每项6个32bits的字WORD)的表项,用于保存64个通道的参数,也可作为保存Linking时候需要进行重载的通道参数;

②     21个24字节(即每项6个32bits的字WORD)的表项,用于保存Linking时候需要进行重载的通道参数;

③     剩余的8个字节;

每个通道参数(6WORDS)如下:

(12)EDMA Chaining 传输

Chaining传输的含义是当一个EDMA通道传输完成时,触发另一个EDMA通道的传输。

TCINT需要设为1,根据当前通道的(TCCM:)TCC值,设定CCER(CCERL+CCERH)的)(TCCM:)TCC位的值,表示当前通道传输完成后触发(TCCM:)TCC通道的数据传输。

Chaining传输也可以交替性传输完成,使用ATTC指定要触发的通道。

转载于:https://www.cnblogs.com/fpga/archive/2009/10/13/1582516.html

EDMA 和QDMA相关推荐

  1. EDMA - DMA QDMA 完美总结

    EDMA - DMA QDMA -------------------------------- 做个参考,和6487/8 的EDMA3的user guide有点区别. --------------- ...

  2. EDMA 和QDMA 还看不懂,先收藏着

    1)EDMA概要 ①EDMA数据传输有两种发起方式: ü         CPU发起的EMDA数据传输(非同步方式):需要传输时,CPU设置ESR寄存器的相应位为1,从而触发一个EDMA事件的产生,事 ...

  3. C64X EDMA优先级及优先级队列

    C64X EDMA优先级及优先级队列 下图为EDMA传输请求方框图: 从图中我们可以看到,请求有三种: l L2控制器传输请求:L2控制器发布所有用于CACHE服务的传输请求:如存取非CACHE内存. ...

  4. DaVinci DM6437 中文教程

    一.DaVinci DM6437 概述 TMS320DM6437是TI公司2006年推出的.专门为高性能.低成本视频应用开发的.主频600MHz的.32位定点DSP达芬奇 (DaVinci(TM)) ...

  5. AM4379 EDMA相关总结

    最近一直在做GPMC与FPGA通信问题,为了提高读写速度,需要使用EDMA,所以在学习DMA过程中记录下自己学习过程与借鉴大牛们总结的相关经验. 一.增强型直接内存访问控制器(EDMA)相关介绍 1. ...

  6. C6678学习-EDMA

    文章目录 1.简介 1. EDMA3概述 2.EDMA3的组成 3.EDMA3的工作流程 4.EDMA3通道控制器(EDMA3CC) 5.触发方式 2.EDMA3的传输 1.传输数据块的定义 2.传输 ...

  7. - TMS320C6748———EDMA简介及配置

    一.EDMA模块介绍 TMS320C6748是一款高性能DSP,非常适合用来跑大数据量的算法,而这样的算法往往需要保证实时性,那么这么大规模的数据怎么进行运算能够让程序跑的最快,我们知道DSP中运算最 ...

  8. DSP原理学习笔记--第七章--增强直接存储器访问(EDMA)

    第七章 增强直接存储器访问(EDMA) 第七章 增强直接存储器访问(EDMA) DMA 数据传输 EDMA的特点 EDMA控制器的结构 EDMA传输中的术语 EDMA传输方式 同步事件 EDMA通道与 ...

  9. Xiaojie雷达之路---EDMA Driver External Functions详解

    文章目录 getNumInstances init open configErrorMonitoring configChannel startDmaTransfer isTransferComple ...

最新文章

  1. Codeforces 173E Camping Groups 线段树
  2. SpringBoot集成Cache缓存(Redis缓存,RedisTemplate方式)
  3. jdbc连接mysql正规方法_JDBC基础篇(MYSQL)——通过JDBC连接数据库的三种方式
  4. java bio例子_传统的BIO
  5. 像excel一样规律填充(二)
  6. 基于TortoiseGit完成本地代码上传Git远程仓库中
  7. .Net向Page和UpdatePanel输出JS
  8. 开根号的笔算算法图解_用笔算开根号
  9. RXJS Operators
  10. Android性能优化之页面优化
  11. numpy函数:arange(),reshape()用法,
  12. 2016福州大学软件工程第二次作业成绩
  13. 7-76 查询水果价格
  14. The HTTP header line [connection : Keep-alive] does not conform to RFC 7230 and has been ignored
  15. 带之字独特好听、个性充满活力的女孩名字
  16. 无障碍应用程序:无障碍访问和无障碍入门
  17. 黑客与画家:硅谷创业之父Paul Graham文集
  18. Android Gson在Kotlin data class中的使用
  19. SEO关键词排名-百度点击软件(刷关键词排名、百度指数、百度相关、竞价点击-全能软件)
  20. Python学习路线2019升级版(课程大纲+视频教程+网盘资源下载)

热门文章

  1. PKplayer(P2P播放器)开源P2P播放器综述
  2. 超前进位加法器(附Verilog代码)
  3. RealPlayer 11 简体中文最新正式版下载
  4. 基于SSH的便利店、超市管理系统
  5. 管家婆财贸双全使用说明(五)数据备份和恢复
  6. 中国移动首测6G,确保中国在移动通信技术上的领先优势
  7. 作业答案解析:尚学堂Java300集 第一章
  8. Python如何将仅包含音频内容的Mp4,提取并转换为Mp3
  9. 2021-08-27 网安实验-Windows系统渗透测试之.NET框架0Day漏洞(CVE-2017-8759)
  10. 解决The package java.awt is not accessible或者javax.swing is not accessible的问题