Blackfin533的DMA技术及其在图像处理中的应用

2007-03-09 19:03:27来源: 互联网
摘要:介绍了Blackfin533中DMA的类型及特点,描述了DMA在实时图像处理领域数据传输中的重要应用,给出了两个具体的应用实例,最后指出了使用Blackfin533的DMA时应注意的事项。 关键词:Blackfin533;DMA;实时图像处理;数据传输 直接存储器存取(Direct Memory Access,简称DMA对计算机系统是非常重要的。它可以使CPU在运行指令的同时从外部存储器或设备中存取数据,也可以在CPU不参与的情况下,由专用的DMA控制器存取数据。 1 Blackfin533中的DMA Blackfin系列DSP产品包括ADSP-BF535和ADSP-BF533/2/1两类,都是AD公司最新的基于微信号体系结构的DSP,这些器件含有两个MAC,并集成了大量的外围设备和存储器接口,每秒运算速度最高可达1200MMAC,因而比较适用于各种视频、音频、通信领域。 BF533处理器有多个独立的DMA控制器,它能以最小的处理器内核消耗支持数据的自动传输。DMA传输可以发生在BF533处理器的内存与支持DMA的任一外设之间。此外,DMA还可以完成有DMA功能的外设与连接在外部存储器接口上的外部设备(包括SDRAM控制器和异步存储控制器)之间数据传输。BF533处理器可利用DMA在存储器空间内部,以及在一个存储器空间和外围设备之间传输数据,并可以指定传输操作,以便完全集成化的DMA控制器独立于处理器完成数据传输时返回到正常的处理。 BF533处理器的DMA控制器同时支持1D和2D DMA传输,其DMA传输初始化可以通过寄存器状态描述符块中的一组参数来实现。2D DMA行和列最大可支持64k%26;#215;64k个元素任意数。而且列的步长可小于行的步长,并可执行交叉存取的数据流。这一个特点在某些视频应用场合特别有用。 Blackfin533有12个通道DMA控制器。有DMA功能的外设包括SPORTs、SPI、UART和PPI。每个支持DMA的外设至少有一个专用的DMA通道。DMA控制器可以完成的几种数据传输类型如下: (1)存储器和存储器之间(MDMA); (2)存储器和串行外设接口(SPI)之间; (3)存储器和串行接口 (SPORT)之间; (4)存储器和通用异步收发器UART接口之间; (5)存储器和并行外设接口(PPI)之间; BF533处理器上的DMA传输可以基于描述符,也可以基于寄存器。基于描述符的DMA传输需要用存放在存储器内的一组参数来初始化一个DMA序列。这种传输允许多个DMA序列链接在一起。在基于描述符的DMA操作中,一个DMA通道可以通过编程自动建立起来,并可在当前序列完成后开始另一个DMA传输。基于寄存器的DMA允许处理器直接对控制寄存器编程来启动一个DMA传输。传输完成后,为了连续传输数据,也可以用它们原来设置的值自动更新控制寄存器。 2 DMA在数字图像处理中的应用 DMA是数字信号处理器(DSP)中用于快速数据交换的重要技术,它具有独立于CPU的后台批量数据传输能力,能够满足实时图像处理中的高速数据传输要求。由于图像处理的原始数据量很大,同时图像处理中也会产生等量的中间数据,对于片内存储资源有限的高速DSP芯片来说,一般需要借用外部存储空间。为了提高系统的实时处理能力,可以将数据在不同存储空间的转移任务交给DMA来完成,从而使CPU只专注于数据的计算。同时DMA对数据的重排功能可以优化图像数据在内存中的存储,这不仅可以提高内部存储空间的利用效率,也可以提高数据的传输效率。虽然图像数据的传输也可由软件实现,但会消耗大量的CPU时钟周期,从而使DSP的高速性能难以发挥。而由DMA来进行同样的工作却不占用CPU的时钟周期。 BF533内部专门为适应视频数据处理而增加的二维DMA及相关寄存器有以下几种: (1)配置寄存器(DMAx CONFIG/MDMA yy CONFIG)主要用来设置二维DMA方式使能和中断产生方式,其中中断可以在一行结束时产生,也可以在整个DMA结束时产生。 (2)内层循环计数寄存器(DMAx X COUNT/MDMA yy X COUNT)用于在二维DMA时保存内层循环的数目(或称行数),该数目必须大于等于2。 (3)内层循环地址增量寄存器(DMAx X MODI-FY/MDMA yy X MODIFY)用于在二维DMA时保存每一次内层循环计数器加1之后(也就是在内层每传输完一个元素,但不包括每个内层的最后一个元素),DMA操作(读或写)地址在内存中的增量,此增量应该是二维DMA操作的数据单元长度的整数倍,如二维DMA进行16位读写时,此增量必须是2NN≠0倍。 (4)外层循环计数寄存器(DMAx Y COUNT/MDMA yy Y COUNT):该寄存器仅在二维DMA中使用,任务是保存外层循环的数目(或称位列数)。 (5)外层循环地址增量寄存器(DMAx Y MODI-FY/MDMA yy Y MODIFY):该寄存器也仅在二维DMA中使用,任务是保存每次外层循环计数器加1后,DMA操作地址在内存中的增量,该值可以为负,且应为二维DMA操作数据单元长度的整数倍。3 应用举例 存储器的有效利用对系统设计者来说是需要着重考虑的问题。外部存储器比较昂贵,而且其存取时具有较长的延迟。为了克服上述问题,Blackfin处理器片上集成有SDRAM控制器,可支持片外存储器。因为视频数据率要求非常苛刻,帧缓冲区必须设立在外部存储器上。这样,当处理器操作一个缓存时,另一个缓存便可以存储通过PPI并用DMA传输的数据,见图1。 下例可将BF533的PPI接口上从图像采集芯片ADV7183传送过来的视频流中的一场视频图像(720%26;#215;288像素)存储到外部存储器SDRAM中。 具体程序代码如下: Init_DMA()  { *pDMA0 START ADDR = 0x0; //把图像存放在SDRAM中的起始地址//0x00000000处; *pDMA0 X COUNT = 720; //图像的行数; *pDMA0 X MODIFY = 0x4; //在内层每次传完一个元素后地址的增量,因为每次传输32位,所以是0x4 *pDMA0 Y COUNT =72; //外层循环的数目,因为总的缓存为720%26;#215;288字节,所以288/4=72 *pDMA0 Y MODIFY = 0x4; //传完一行数据后DMA的地址增量,因为是存储空间是连续的,所以是0x4 *pDMA0 PERIPHERAL MAP = 0x0 //外设PPI的DMA开启; *pDMA0 CONFIG = DMAEN |DI EN|WNR|WDSIZE 32|RESTART|DMA2D|DI EN; //使能DMA,整个DMA结束产生中断,存储器写。32位传输,重新开始前丢失FIFO中的数据。 } 当一个完整的图像帧存放在SDRAM后,数据将传输到内部L1数据存储器中,这样,处理器内核用一个时钟周期的延迟就可以访问到数据。为此,DMA控制器可以用二维传输获得像素块。图2所示是一个16%26;#215;16“宏块”的传输示意图。 图2 为了有效地从原图像中传输一个图像块,一般需要控制四个参数:X Count、Y Count、X Modify和Y Modify。其中X Count和Y Count分别表示水平和垂直方向上读入/读出的元素数。在此应用中“水平”和“垂直”是抽象的概念,因为图像数据在外存中实际上是线性存储的。另外两个参数X Modify和Y Modify是在传输了必需的X Count和Y Count后跨越的数据量。从性能上看,任何时候最多四个唯一的SDRAM内部子组(bank)都是活动的。这意味着在视频结构中,PPI填充一个子组(bank)时,2D到1D DMA只是把数据从一个子组(bank)拖进来,而没有额外的子组(bank)激活延迟。下面是一个2D到1D的DMA传输代码: 2Dto1D_DMA() { unsigned char *p; p=0x0; *pMDMA_D0_START_ADDR=p+L1buffer; //L1buffer是L1缓冲区的地址 *pMDMA_D0_X_COUNT=64; //16%26;#215;16/4=64; *pMDMA_D0_X_MODIFY=4; pMDMA_S0_START_ADDR =p+Sourcebuffer; //Sourcebuffer是16%26;#215;16图像块在SDRAM中的地址 *pMDMA_S0_X_COUNT=4; *pMDMA_S0_X_MODIFY=4; *pMDMA_S0_Y_COUNT=16; *pMDMA_S0_Y_MODIFY=708; // 720-16+4=708 *pMDMA_S0_CONFIG=WDSIZE32|DMAEN|DMA2D; *pMDMA_D0_CONFIG=DI EN|WDSIZE32|WNR|DMAEN; *pMDMA_D0_IRQ STATUS=0x1; //消除中断; 4 BF533中DMA的使用注意事项 下面两种情况会导致DMA总线错误: (1)数据没有对齐 当要传送的数据与当前地址不相符时,可能发生数据没有对齐的错误。数据不对齐包括有情况:第一是当DMA CONFIG 寄存器的WDSIZE为1(16bit)时,地址的最低位不等于0;第二是当WD-SIZE为2(32bit)时,最低两位地址不等于00。如果出现上述错误,IRQ寄存器中的位2应被置位。 (2)非法存储器访问 发生非法存储器访问时(如访问MMR空间),处理器将得到一个错误响应并导致以下结果:第一是DMA通道会结束当前的单个或突发式传送;第二是DMA信道的使能位(配置字的bit0)将被清零;第三是产生一个总线错误中断并使IRQ 状态寄存器中的位2被置位。 还有一点就是要保证对MDMA中MDMA_S0_CONFIG(MDMA S1 CONFIG位的写入一定要在写入MDMA_D0_CONFIG(MDMA_D1_CONFIG)之前。 5 总结 一般情况下,图像处理系统的最大特点是运算数据量大,数据量往往大于片内存储器容量,所以必须借助DMA在片内高速存储区与片外低速存储区之间进行数据交换,以提高数据处理速度。多数情形下,数据传输所花的时间往往超过数据处理的时间。因此,合理使用DMA来提高数据传输率,可起到很好的作用。
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/dsp/200703/10333.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved