基于DM642的EDMA图像处理系统
1 前言
DM642 (TMS320DM642)型处理器是TI最新推出的面向多媒体处理领域的数字信号处理器(DSPDSP
dsp是digital signal processor的简称,即数字信号处理器。它是用来完成实时信号处理的硬件平台,能够接受模拟信号将其转换成二进制的数字信号,并能进行一定形式的编辑,还具有可编程性。由于强大的数据处理能力和快捷的运行速度,dsp在信息科学领域发挥着越来越大的作用。 [全文]
).给多媒体设备的实现提供了另一种有效的手段。 DM642建立在C64x DSP核基础上.采纳德州仪器公司开发的第二代高性能的先进的超长指令字结构VeloeiTl.2TM,在600MHz的时钟频率下.DM642每秒可以进行24亿次16位的乘累加或48亿次的8位的乘累加。这样强大的运算能力使得DM642可以进行实时多视频图像处理。它的增强型直接内存
内存的正式叫法是内存储器,以此来与外存储器区分开。物理上它安装在计算机内部,通常安装在主板上,所以称为内存。它的作用是供临时存储处理器需要处理的数据或处理后的结果,可见内存是计算机处理器的工作空间。它是处理器运行的程序和数据必须驻留于其中的一个临时存储区域,是计算机十分重要的部件。 [全文]
存取 (EDMA)对DSP图像处理系统是非常重要的,它可以在没有微处理器
微处理器也称为中心处理器,是电子计算机的主要设备之一。其功能主要是解释计算机指令以及处理计算机软件中的数据。所谓的计算机的可编程性主要是指对微处理器的编程。微处理器是计算机中的核心配件,只有火柴盒那么大,几十张纸那么厚,但它却是一台计算机的运算核心和操纵核心。计算机中所有操作都由微处理器负责读取指令,对指令译码并执行指令的核心部件。微处理器、内部存储器和输入/输出设备是电子计算机的三大核心部件。 [全文]
参与的情况下完成映射存储空间中数据搬移。灵活使用EDMA可以大大提高数据传输效率。以:DM642为例,结合Sobel算法给出EDMA的一种具体操纵和实现方法。2 DM642的EDMA操纵器
DM042的EMDA能提供超过2Gb/s的外部带宽.支持64路独立触发的事件传输,总共有85个参数对“Linking”或“Chaining”进行配置。LINKing是在1个事件被触发时同意1个序列进行传输。Chaining是当1个通道的数据传输完毕时触发另1个通道的数据传输。 Linking和Chaining使得仅仅被微处理器初始配置之后EDMA能够连续的自动运行。EDMA的特点决定了其适合图像处理的功能。由于图像处理的原始数据量很大.同时图像处理中也会产生同等量的中间数据.对于片内存储资源有限的高速DSP来说,一般需要借用外部存储空间。为了提高系统的实时处理能力.可以将数据在不同存储空间转移的任务交给EDMA来完成,而微处理器只用于数据的计算。同时,EDMA对数据重排功能可以优化图像数据在内存中的存储,这不仅可以提高内部存储空间的利用效率.而且可以提高数据的传输速率。虽然对图像数据的传输也可由软件实现,但将消耗大量的微处理器时钟周期。使DSP的高速性能难以发挥。而由EDMA来完成同样的工作几乎不占用微处理器的时钟周期。
在C64xDSP中.EDMA操纵器负责片内L2存储器存储器
存储器是用来存储程序和数据的部件,有了存储器,计算机才有记忆功能,才能保证正常工作。它根据操纵器指定的位置存进和取出信息。 [全文]
与其他设备之间的数据传输。EDMA操纵器和DMA在结构上有很大的不同.其增强之处包括:提供了64个通道;
通道间的优先级可以设置;
支持不同结构数据传输的链接。
EDMA操纵器由以下几部分组成;
事件和中断处理寄存器;
事件编码器编码器
编码器为传感器(Sensor)类的一种,主要用来侦测机械运动的速度、位置、角度、距离或计数,除了应用在产业机械外,许多的马达操纵如伺服马达、BLDC伺服马达均需配备编码器以供马达操纵器作为换相、速度及位置的检出所以应用范围相当广泛。根据检测原理,编码器可分为光学式、磁式、感应式和电容式。根据其刻度方法及信号输出形式,分为增量式编码器和绝对式编码器。光电编码器是利用光栅衍射原理实现位移-数字变换的,从50年代开始应用于机床和计算仪器,因其结构简洁、计量精度高、寿命长等优点,在国内外受到重视和推广,在周密定位、速度、长度、加速度、振动等方面得到广泛的应用。 [全文]
;参数RAM;
硬件地址产生。
其中,事件寄存器操纵对EDMA事件进行捕捉。1个事件相当于1个同步信号,由它触发1个EDMA通道开始数据传输。假如有多个事件同时产生.则由事件编码器对它进行分辨。EDMA的参数RAM中存放了有关的传输参数,这些参数会被送入地址产生器硬件.进而产生读写操作所需要的地址。
EDMA支持8bit、16bit和32bit数据的存储。在EDMA中定义了下列概念:
(1) 数据单元(element)的传输。单个数据单元从源地址向目的地址传输.假如需要,每1个数据单元都可以由同步事件触发传输;
(2) 帧(frame)。l组数据单元组成1帧,l帧中的数据单元可以是相邻连续存放的,也可以是间隔存放的.帧传输可以选择是否受同步事件操纵,“帧” 一般在1维传输中提及;
(3) 阵列(array)。1组连续的数据单元组成1个阵列.在1个阵列中的数据单元不同意间隔存放。1个阵列的传输可以选择是否受同步事件操纵。“阵列 ”一般在2维传输中提及;
(4) 块(block)。多个帧或者多个阵列的数据组成1个数据块;
(5) 1维(1一D)传输。多个数据帧组成1个1维的数据传输。Block中帧的个数可以是 l~65536。
(6) 2维(2一D)传输。多个数据阵列组成1个2维的数据传输。第1维是阵列中的数据单元,第2维是阵列的个数。
3 EDMA的操纵机制
3.1 事件与事件操纵寄存器
EDMA有64个通道.每1个通道都有1个事件与之关联.由这些事件触发相应通道的传输。
3.2 传输参数与参数 RAM
EDMA操纵器与DMA操纵器在结构上有所区别。C64x的.EDMA操纵器是基于RAM结构。参数.RAM(ParAMEter RAM。PaRAM)的容量是2KB,总共可以存放85组EDMA传输操纵参数。多组参数还可以彼此连接起来,从而实现某些负责数据流的传输.例如循环缓存和数据排序等。参数RAM中保存的内容包括:
64个EDMA通道对应的入口传输参数.每组参数包括6个字;
用于重加载,链接的传输参数组。每组参数包括24字节;
8字节空余的RAM可以作为“草稿区”(scratch pad area)。
一旦捕捉到某个事件.操纵器将从PaRAM顶部的64组入口参数中读取数据对应的操纵参数送往地址产生器硬件。
表l给出1组EDMA传输参数的内部结构,总共6个字.192bit。可以通过32bit的外设总线总线
总线是将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。通俗的说,就是多个部件间的公共连线,用于在各个部件之间传输信息。人们经常以MHz表示的速度来描述总线频率。 [全文]
对EDMA的参数.RAM进行访问。可选参数(Option Parameter),32bit,用户可以根据情况选择设置该参数。
SRC/DST地址.32bit,用于存放EDMA访问起始的源地址和目的地址,可以通过可选参数中的SUM/DUM位设定对SRC/DST地址的修改方式。
数据单元计数(Element Count),16bit无符号数.存放l帧(1一D传输)或1个阵列(2一D传输)中的数据单元数。
帧/阵列计数(Frame/Array Count),16bit无符号数.存放的是1-D数据传输中的帧计数,或是2一D数据传输中的阵列计数。
数据单元,帧,阵列索引(Element/Frame/ArrayIndex).16bit无符号数,作为地址修改的索引值。数据单元索引只应用于1-D 传输,为下一数据单元的地址偏移值(2一D传输不同意数据单元间隔存放)。帧,阵列索引用于操纵下一帧,阵列的地址索引。
数据计数的重加载(Element Count Reload),16bit无符号数。用于在每帧最后一个数据元素传输之后.重新加载传输计数值。这个参数只能用于1一D传输中。
链接地址(Link Address),16bit。当设定可选参数中的LINK=1时,可以由链接地址确定下1个EDMA事件采纳参数的装载,重装载地址,从而使多组 EDMA传输参数形成EDMA传输链。
4 EDMA的传输操作
EDMA进行数据传输时有2种启动方式,1种是微处理器启动.另1种是由同步事件触发。每1个通道的启动是相互独立的。
4.1 微处理器启动EDMA/非同步的 EDMA
微处理器可以通过写事件置位寄存器(ESR)启动1个EDMA通道。向ESR中某1位写1时,将强行触发对应的事件。此时,与正常的事件响应过程类似, EDMA的PaRAM中的传输参数被送入地址产生器.完成对EMIF、L2存储器或外设的存取访问。由微处理器启动的EDMA属于非同步的数据传输。EER 中的事件使能与否不会影响这种EDMA传输的启动。
4.2 由事件触发 EDMA
一旦事件编码器捕捉到1个触发事件并锁存在ER寄存器中,将导致PaRAM中对应的参数被送入地址产生器.进而执行有关的传输操作。尽管是由事件启动传输操作,但是事件本身必须首先被微处理器使能。EER寄存器负责操纵事件的使能。触发EDMA传输的同步事件可以源于外设,外部器件的中断或某个EDMA通道结束。与DMA的情况不同,与EDMA的每1个通道相关联的触发事件是固定的。因此,假如假设EER中的EVT4=1,那么EXT_INT4引脚的外部中断信号就会启动EDMA通道4的传输。所以,每个事件也就指定了1个特定的EDMA通道。
5 在实时图像处理系统中的应用
在实时图形处理系统中,经常是把数据块转移,例如从视频通道采集数据传送到SDRAM中作为后续处理的缓存,或是把数据传送到片内RAM中。EDMA使数据的传送简洁易行。下面以把数据从视频通道传送到片内RAM中并作Sobel边缘提取算法和把数据从视频通道传送到SDRAM中并作So—bel边缘提取算法为例。
(1)把数据从视频通道通过1维方式传送到片内RAM中并作Sobel边缘提取算法
只对摄像头摄像头
摄像头是一种输入器件,是用来组成电脑或其他机器的视觉系统的重要部件。摄像头如今已成为人们日常沟通,视频会议,安防监控和远程医疗等活动不可或缺的器材之一。 [全文]
采集的I块数据进行Sobel边缘提取。采纳一维EDMA传送方式,每1次传送采集1行中的部分数据(DAT_copy()函数)。在PAL制式下.先把1行数据放到nMemTemp数组中,然后对从144行到432行、从180列到435列的图像进行Sobel边缘提取.最后把变换后的数据输出到显示缓冲区.如图1所示。因为Sobel算法需要3行数据,所以可以开发1个可以存放3行数据的缓冲区,通过指针的交换把从视频通道过来的数据分别放到缓冲区中。保存的3行图像使用翻卷的缓冲区治理,3个变量分别指示当前使用的y行、y—l行和y一2行在缓冲区中的起始偏移量。可以这样:轮流往3块缓存区拷贝数据.只要改变拷贝的指针就可以。在拷贝当前这1块的时候.已经拷贝的另外2块数据依旧没有变化,所以就可以实现3块数据保存采集图像中的相邻3行数据.如表2所示。
(2)把数据从视频通道通过2维方式传送到SDRAM中并作Sobel边缘提取算法可以通过DAT_copy2d 0函数直接把采集的l幅图像亮度重量存放到SDRAM中,如下:
其中.m_dbFrameBufferTemp是指向SDRAM中缓冲区的指针,numPixels是1行的像素数,num-Lines是行数。当把数据存放到SDRAM的1个数组中后.Sobel算法的实现就非常简洁了。当然也可以参照1维的方法来实现。
6 结束语
大批量的图像数据传输和复杂算法的处理一直是高速数字图像处理器的速度瓶颈,利用DSP的EDMA功能可以在不中断信号处理器算法处理工作的同时完成图像数据的搬移,在有效地解决了大批量图像数据传输速度瓶颈的同时,又能让DSP的处理器核专门从事算法处理工作,极大地提高了系统的并行性能。
来源:蝴蝶
该文章来至网络或用户,仅供学习交流之用,版权归原作者所有。
如有侵权,请及时与我们联系!