dsp原理与应用-第4章 edma

上传人:tia****nde 文档编号:70852285 上传时间:2019-01-18 格式:PPT 页数:33 大小:1.91MB
返回 下载 相关 举报
dsp原理与应用-第4章 edma_第1页
第1页 / 共33页
dsp原理与应用-第4章 edma_第2页
第2页 / 共33页
dsp原理与应用-第4章 edma_第3页
第3页 / 共33页
dsp原理与应用-第4章 edma_第4页
第4页 / 共33页
dsp原理与应用-第4章 edma_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《dsp原理与应用-第4章 edma》由会员分享,可在线阅读,更多相关《dsp原理与应用-第4章 edma(33页珍藏版)》请在金锄头文库上搜索。

1、第四章 增强直接存储器访问(EDMA),从 到 外部存储器 片内数据存储器 片内数据存储器 片内程序存储器 外部存储器 传输的实现: 由CPU控制实现数据传输,效率低 DMA直接存储器访问,效率高,不需CPU干预,DMA 数据传输,EDMA的特点,C621x/C671x/C64x特有 EDMA控制器基于RAM结构 比DMA的增强之处如下: 提供了16个通道 由事件触发相应通道的传输 通道优先级可设置 支持不同结构数据的传输链接 独特的快速DMA(QDMA),C671x,EDMA控制器的结构,事件寄存器对EDMA事件进行捕获,触发一个EDMA通道开始数据传输。参数RAM中的传输参数被送入地址发生

2、器硬件,产生读写所需的地址。,C671x,2.硬件地址产生器,1.参数RAM,3.事件编码器,4.事件中断处理寄存器,EDMA传输中的几个基本概念,数据单元(element)的传输:单个数据单元从源地址向目的地址传输 帧(frame):1组数据单元组成1帧,帧中的数据单元可以连续存放,也可以间隔存放,帧一般用于1维传输 阵列(array): 1组连续的数据单元组成1个阵列,阵列一般用于2维传输 块(block):多个帧或多个阵列的数据组成1个数据块 1维传输:多个数据帧组成1个1维数据传输 2维传输:多个数据阵列组成1个2维数据传输,第1维是阵列中的数据单元,第2维是阵列的个数。,C671x,

3、EDMA传输中的几个基本概念,C671x,数据单元,块,块,同步事件,每个通道都与一个事件关联,由这些事件触发相应通道的传输,不能由多个事件触发 事件寄存器(ER)负责捕获所有的事件,事件使能寄存器(EER)控制每一个事件的使能/禁止 由事件信号的上升沿触发EDMA控制器 如果有多个事件同时发生,则由事件编码器进行排序,C671x,EDMA的参数RAM,容量为2KB,总共可以存放85组EDMA传输控制参数,其内容包括三部分: 16个EDMA通道入口参数,每组6个字 用于重加载/链接的传输参数组,每组6个字 空余“草稿区”,8个字节 一旦事件发生器捕捉到某个事件,控制寄存器将从参数RAM的16组

4、入口参数中读取事件对应的控制参数,送往地址发生器,发起传输,C671x,EDMA参数存储结构,可选参数(Options Parameter),C671x,字段具体含义需查阅参考文献 TMS320C6000 DSP EDMA Controller Reference Guide (Rev. A).pdf,数据单元字长,传输结束码,帧同步,连接使能,EDMA参数存储结构,源地址(SRC)/目标地址(DST):32位,EDMA访问的起始源地址和目标地址,以字节为单位,通过OPT中的SUM/ DUM位设定对SRC/DST地址的修改方式。 数据单元计数(ELECNT):存放1帧或1个阵列中的数据单元个数

5、,有效范围165535。 帧/阵列计数(FRMCNT):存放的是1-D数据传输中的帧计数,或是2-D数据传输中的阵列计数,最大值为65536。 数据单元/帧/阵列索引(Element/Frame/Array Index):作为地址修改的索引值。数据单元索引只能应用于1-D传输,作为下一数据单元的地址偏移值(2-D传输不允许数据单元间隔存放)。帧/阵列索引用于控制下一帧/阵列的地址索引值。 数据计数的重加载(Element Count Reload):用于在每帧最后一个数据元素传输之后,重新加载传输计数值。这一参数只应用于1-D传输中。 连接地址(Link Address):当设定可选参数中LI

6、NK=1时,可以由连接地址确定下一个EDMA事件采用参数的装载/重装载地址,从而将多组EDMA传输参数形成EDMA传输链。,C671x,EDMA的启动,两种方式启动EDMA: CPU启动EDMA/非同步的EDMA,CPU通过写事件置位寄存器(ESR),强制触发对应事件,启动1个EDMA通道 由事件触发的EDMA,事件锁存器一旦捕获到一个触发事件,并且事件本身已被使能,那么该事件将启动传输操作,C671x,多组EDMA传输参数的连接,将不同的EDMA传输参数连接起来,组成一个参数链,为同一个通道服务,C671x,多个EDMA通道的链接(chaining),由一个EDMA通道的传输结束触发另一个E

7、DMA通道的传输 不同于EDMA连接(linking),EDMA连接是利用多组参数依次重加载某一个EDMA通道参数 触发由当前通道的传输结束码对应的EDMA通道的传输,C671x,EDMA中断,所有16个通道共用一个中断信号EDMA_INT, 利用CIPR寄存器来判断发生了哪个事件 通道的传输结束代码TCC值与CIPR位一一对应,不同的通道可以有相同的TCC,所以不同的通道可以产生完全相同的中断,处理相同的服务程序。,C671x,快速DMA(QDMA),几乎支持EDMA的所有传输模式,不支持参数连接 两组寄存器,第二组是第一组的“伪映射”,每组包含5个寄存器,是C671x搬移数据最有效的手段

8、一个典型的QDMA操作如下: QDMA_SRC = SRC_ADDRESS;/设置源地址 QDMA_DST = DST_ADDRESS; /设置目标地址 QDMA_CNT = NUM; /设置阵列的帧计数 QDMA_IDX = 0x00000000; /不采用索引 QDMA_S_OPT = 0x21B80001;/设定帧同步,1维源,2维目标,启动传输 示例:0401,0402,C671x,双通道数据搬移加速控制器,双通道数据搬移加速控制器(dMAX)用于处理内部数据存储控制器和C672x DSP外围设备之间用户编程数据的传输,dMAX也允许任何可寻址存储空间之间的数据传输,包括内部存储器、外

9、设和外部存储器。,C672x,dMAX的控制器框图,包括: 事件和中断处理寄存器 事件编码器 高优先级事件参数随机存储器(PaRAM) 低优先级事件参数随机存储器PaRAM 用于高优先级事件的地址生成器MAX0(HiMAX) 用于低优先级事件的地址生成器MAX1(LoMAX),C672x,参数存储器(PaRAM),每个PaRAM包括: 一个事件入口表(event entry table) 事件入口描述了事件的类型,并且把事件和一个传输类型或一个中断相联系。如果一个事件入口把事件和一个传输类型相联系,事件入口就会包含一个指向传输入口表中某个传输入口的指针。 一个传输入口表(transfer en

10、try table) 传输入口表可以包括最多八个传输入口。传输入口要设定dMAX进行传输所需要的细节。如果一个传输入口把事件和一个中断相联系,事件入口就会设定当事件到达时对CPU产生一个什么样的中断。,C672x,参数存储器(PaRAM),PaRAM存储器的大小等于128个字长(32位的字),PaRAM中事件入口表位于0x00和0x1F(字地址,下同)之间,0x20-0x27保留,传输入口表使用其余的部分,一个指向传输入口(PTE)的指针定义了从PaRAM基点到传输入口起始点的字偏移量。,C672x,参数存储器(PaRAM),事件入口表最多可以有32个事件入口,每个事件入口为1个字长(4字节)

11、 传输入口表最多可以包括8个传输入口,传输入口表的大小等于88个字长,每个传输入口的大小是11个字长。无论是高优先级还是低优先级PaRAM都可以有总共8个传输入口。,C672x,通用数据传输的事件入口,通用数据传输事件入口如下图所示,下表为各字段的详细解释,C672x,通用数据传输的传输入口,有两种传输入口表,每种可以有最多8个传输入口。一种表与高优先级事件相联系,另一种与低优先级事件相联系。传输入口的大小固定为11个字长。不同传输类型传输入口的格式是不同的,通用数据传输的传输入口见下图 。,C672x,1D数据块搬移传输示例,程序操作过程中,经常要把数据块从一个位置搬移到另一个位置,而且经常

12、在片内和片外存储器之间搬移。dMAX执行的最基本的操作就是一个数据块的搬移。本例中,数据的一部分从外部存储器复制到内部存储器。数据块是255半字长,存储在地址0x80000000处,它要被传输到内部地址0x10001000处。数据传输如右图,C672x,1D数据块搬移传输示例,此传输的参数如右图。 事件10用于触发这个传输,事件10是由CPU向DETR寄存器的位1写入0然后写入1来触发的。 因为DEPR10=1,事件信号10的上升边界触发一个事件。 因为DELPR10=1,事件是由LoMAX处理的。,DEPR10=1 DELPR10=1 DEER10=1,C672x,数据单元同步1D传输示例,

13、本例中,有六个数据单元从外部储存器拷贝到内部储存器。六个半字长的源数据起始于地址0x80000000,源索引等于2(将要传输的源数据单元之间间隔一个数据单元)。数据将被传输到连续的目的存储块中,其在内部存储器的起始地址为0x10001000。 收到第一个同步事件后数据传输的存储器快照如右图。,C672x,数据单元同步1D传输示例,此传输的参数如右图。 事件0是由CPU向DETR寄存器的位1写入0然后写入1来触发的 因为DEPR0=1,事件信号0的上升边界触发一个事件。 因为DEHPR0=1,事件是由HiMAX处理的。,DEPR0=1 DELPR0=1 DEER0=1,C672x,数据单元同步1

14、D传输示例,收到所有6个同步事件后数据传输的存储器快照如右图。,C672x,什么是FIFO?,FIFO是英文First Input First Output的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。,什么情况下用FIFO?,FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端是计算机的PCI总线,假设其AD采集的速率为16位 100K SPS,那么每秒的数据量为10

15、0K16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。,FIFO的参数,FIFO的宽度:也就是英文资料里常看到的THE WIDTH,它指的是FIFO一次读写操作的数据位,就像MCU有8位和16位,ARM 32位等等,FIFO的宽度在单片成品IC中是固定的,也有可选择的,如果用FPGA自己实现一个FIFO,其数据位,也就

16、是宽度是可以自己定义的。,FIFO的深度:THE DEEPTH,它指的是FIFO可以存储多少个N位的数据(如果宽度为N)。如一个8位的FIFO,若深度为8,它可以存储8个8位的数据,深度为12 ,就可以存储12个8位的数据,FIFO的深度可大可小,个人认为FIFO深度的计算并无一个固定的公式。在FIFO实际工作中,其数据的满/空标志可以控制数据的继续写入或读出。在一个具体的应用中也不可能由一些参数算数精确的所需FIFO深度为多少,这在写速度大于读速度的理想状态下是可行的,但在实际中用到的FIFO深度往往要大于计算值。一般来说根据电路的具体情况,在兼顾系统性能和FIFO成本的情况下估算一个大概的宽度和深度就可以了。而对于写速度慢于读速度的应用,FIFO的深度要根据读出的数据结构和读出数据的由那些具体的要求来确定。,FIFO的参数,FIFO的标志,满

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号