梁贺斌,冯水春,周 海,卞春江,王小燕,毛博年
(1.中国科学院国家空间科学中心 北京 100190;2.中国科学院大学 北京100190)
TMS320C6455在实时图像处理系统中的应用
梁贺斌1,2,冯水春1,周 海1,卞春江1,王小燕1,毛博年1
(1.中国科学院国家空间科学中心 北京 100190;2.中国科学院大学 北京100190)
为了完成图像目标点的检测和确认,同时实现FPGA与DSP之间的通信数据高速传输,文中基于高速DSP芯片TMS320C6455提出了一种数字图像处理系统设计方案。该系统硬件部分用来模拟图像数据输入输出,软件部分基于Code Composer Studio(CCS)平台采用C语言编程实现。通过软件设计和外部存储器接口(EMIF)、增强型直接存储器(EDMA)等底层配置的实现,完成了图像实时处理过程,并实现了FPGA与DSP之间的高速通信。实验结果表明,利用该芯片设计的图像处理系统完全满足设计要求,实时性较好,系统集成度高,该设计方案在数字图像处理领域具有很大的应用价值。
TMS320C6455;数字图像处理;数字信号处理器;外部存储器接口;增强型直接存储器
DSP技术的迅速发展使得DSP技术在通信、航天、军事、自动控制等领域得到越来越广泛的应用,而DSP芯片的诞生,对实现各种DSP的应用系统有着积极的推动作用,使得理论研究能够在低成本的系统中得到应用,其中,DSP图像处理系统便是其中的一种[1-5]。
DSP图像处理系统设计包括硬件和软件两个方面,硬件设计需要考虑到运算的精度、系统的成本及体积、功耗等,并在此基础上选择合适的DSP芯片,进而设计芯片的外围电路等;软件设计主要在选择的DSP芯片基础上编写相应的DSP程序,编程语言以C语言及汇编语言居多。针对德州仪器(Ti)公司的DSP芯片,一般采用CCS工具软件进行开发,其中,CCSv5是一个集成了Eclipse软件的开发环境,包括了编辑、编译、软件模拟和调试等所有需要的软件[6]。
DSP系统由FPGA和DSP两个部分组成,要实现FPGA与DSP之间高速数据传输,就不得不考虑EDMA方式,EDMA最大的优势就是可以在不占用CPU资源的情况下完成映射存储空间的数据搬移,这些数据搬移可以在片内存储器、片内外设或者外部器件之间进行,且在CPU后台实现[7-9]。
系统的总体设计如图1所示,FPGA预处理模块将经过预处理之后的数据由输入FIFO通过DSP的存储器接口传给DSP,然后DSP通过EDMA方式将参数及数据保存到内部存储器,并进行图像处理,处理后的数据通过本地EMIF以EDMA方式将数据传输到FPGA的输出FIFO中,进行后面的操作。
此外,DSP内部设计了数据解析协议,对数据解析及参数提取后,提供图像处理需要的实际参数,将处理后的数据按照约定的格式经过DSP与FPGA间的接口传递给FPGA。
2.1 TMS320C6455简介
TMS320C6455(以下简称C6455)是目前Ti DSP定点芯片的顶级产品之一,在图像处理等方面具有较高的性能,且适用于高级语言编程[10]。C6455时钟频率为 1.2 GHz,16位定点处理能力为9600MMAC/s,而ADI的高端产品Tiger-SHARC定点处理能力为4800MMAC/s.此外,C6455很好的解决了芯片间数据传输问题,这使得多处理器平台的搭建更加方便高效,可见,C6455在通信、图像处理等领域将得到广泛应用。文中在C6455芯片的基础之上,深入研究并利用EMIF和GPIO等模块实现了EDMA实时搬移图像数据功能。
2.2 C6455的设计及功能实现
DSP的设计及实现,需要考虑时钟频率、通用输入/输出、DMA直接存储器和中断触发等方面的问题。如图1中DSP模块所示,根据C6455的特点,主要从GPIO、EMIFA模块、EDMA控制器以及中断初始化等方面着手,完成DSP的设计及功能实现[11-15]。
图1 DSP总体设计图
2.2.1 GPIO配置及其初始化
GPIO,即通用输入/输出,根据指定的通用引脚功能配置为输入/输出。设置为输出时,用户可通过向内部寄存器写数据来控制输出引脚驱动的状态;设置为输入时,可以通过读取内部寄存器的数据来检测输入状态。而且,在不同的中断和事件产生模式下,GPIO能够产生CPU中断和EDMA事件,GPIO框架如图2所示。
图2 GPIO框图
C6455中共有16个通用输入输出管脚,每一个管脚都可以单独进行配置成如下功能之一:通用输入管脚 Input、通用输出管脚 Output以及中断和EDMA事件管脚。GPIO方向(GPDIR)寄存器控制GPIO管脚是输入还是输出,对应bit置0表示该管脚配置为输出管脚;对应bit置1表示该管脚配置为输入管脚。根据需要通过配置C6455的外设配置寄存器来使能GPIO模块,可以调用CSL库的API函数,这里利用CSL_FINST库函数把C6455中的PERCFG0寄存器中GPIO对应位置1,ENABLE使能GPIO模块,调用CSL_gpioInit函数对GPIO模块进行初始化,并通过CSL_gpioOpen函数打开GPIO模块,使能GPIO相应管脚作为中断源,并配置PIN管脚的方向及中断触发方式,这里配置CSL_GPIO_PIN5管脚为中断源,上升沿触发,输入有效,如果有其它需求,按照同样的方法进行配置[11]。
2.2.2 EMIFA模块配置及其初始化
外部存储器接口(EMIF)负责将DSP芯片与其它外部设备进行连接,它可以同时连接FLASH和SDRAM芯片,为DSP扩展外部程序和数据的存储空间。图3为TMS320C64X的EMIFA接口信号,SDCKE为ADRAM时钟使能,只适用于EMIFA,其它信号同时适用于EMIFB。EMIF的时钟ECLKOUT基于EMIF输入时钟ECLKIN在片内产生,外部ECLKIN时钟可由FPGA提供。EMIF时钟在器件复位时可以通过编程具体配置,即可以由外部时钟、ECLKIN或者内部CPU时钟驱动,不过FPGA直接提供的时钟和频率更容易更改。
此外,EMIFA接口可以支持8、16、32或64位系统接口,一般情况下存储器等外部器件默认为字节侧右对齐,支持大端和小端模式。其中,字节顺序(Endianess)决定了存取的方式是小端还是大端模式。正确运行EMIF还需要根据同步还是异步存储设置CE控制寄存器等,不同的外接存储器接口通过内存映射到DSP存储器空间,这里选择同步工作模式。
图3 EMIFA接口
通过EMIF接口,使得DSP可以和FPGA很方便地进行大数据量的数据传输。C6455的EMIFA可以访问多种外部存储器,如SRAM、ROM、FLASH等,也包括FPGA。与FPGA通信,需要使用的管脚要少很多,EMIFA共支持4个外部存储器,比如可以把CE2分配给FPGA,CE3分配给SRAM,CE4分配给FLASH等,这里选择把CE2、CE3分配给FPGA,CE4未分配。FPGA内部RAM数据的读取,只需设定EDMA要读取的数据的基地址是0xA0000000,以及读取的数据的长度即可,因为FPGA内部时序逻辑可以产生地址,不必使用地址线。
表1 CEn配置寄存器
CEn配置寄存器的结构如表1所示,与FPGA连 接 时 , 主 要 考 虑 R_ENABLE、W_LTNCY、R_LTNCY和SBSIZE 4个参数,不同的值表示不同的含义:R_ENABLE设置SRE/SADS管脚功能,这里赋值为1表示管脚功能为 SRE,即 Read Enable;W_LTNCY为写延时周期,取值为0,表示0周期延时;W_LTNCY为读延时周期,取值为3,表示读延迟为3周期;SBSIZE为3,表示数据位宽为64为数据总线,即CE2CFG=0x8000010A,表示DSP开始读FPGA的RAM,经过3个ECLKOUT周期后第一个数据会出现在数据总线上。下一步,可以利用CSL配置 EMIFA模块,首先 CSL_FINST使能设备的EMIFA功能 ,利 用 CSL_EmifaMemType配 置CE2CFG寄存器的参数,并调用CSL_emifaInit函数将EMIFA模块初始化,之后CSL_emifaOpen函数打开EMIFA模块并利用CSL_emifaHwSetup函数将配置的参数设置到打开的EMIFA模块中,配置结束。
2.2.3 EDMA控制器设置及初始化
EDMA,即增强型直接存储器访问,是C6455及其他C6000系列所特有的性能,执行所有二级高速缓存或内存控制器与外设之间的数据传输,图4为EDMA事件的具体传输参数结构。
图4 EDMA事件的传输参数结构
EDMA进行数据传输时可以通过同步和非同步两种方式完成初始化,其中,非同步方式由CPU发起,传输数据时CPU将ESR事件设置寄存器相应事件位置1,触发EDMA通道事件;同步方式则不同,事件触发并被保存在ER事件寄存器中,CPU对相应的寄存器置1,ER保存的事件提交给相应的事件编码器,调用参数,尽管该传输由事件触发,但事件本身须先由CPU使能,EER事件寄存器负责该事件的使能控制,因此,如果对应于该事件的对应位没有置1,则ER寄存器继续保留该事件直到CPU对相应的寄存器置1,才能触发EDMA进行传输。
对于由某个事件触发的EDMA传输,数据单元计数值及帧计数值的更新方式取决于传输类型(1D或2D)和同步方式的设置,EDMA控制器将自动跟踪数据单元计数值的变化,按照数据大小或数据单元/帧索引值对传输地址进行更新,源/目的地址的更新模式由实际的传输类型决定。
EDMA全部 16个通道共享一个中断信号EDMA_INT,传输结束后,EDMA控制器负责向CPU发送通道数据传输结束的中断,而且C6455允许多个EDMA通道拥有相同的传输结束代码值,使CPU执行相同的中断服务子程序,并在中断服务程序中,清除相应的中断标记。此外,事件链接EDMA通道功能可以使一个EDMA传输完成后链接到其他通道的传输,这里设置为NULL,表示链接到一个空的通道参数集,EDMA传输停止,其他传输的数据可以在EDMA初始化过程中利用CSL_Edma3ParamSetup以及其他CSL函数按照实际需求进行调整,源/目的地址可以在程序中用到时再进行赋值。
2.2.4 中断初始化
C6455的每个中断都有对应的映射事件,且事件编码是固定的,根据项目需求,要让INT5映射到GPIO5,根据表2得知,GPINT5即GPIO 5中断对应的事件编号为56,事件编号直接设置为0x38。
表2 中断对应的映射事件
利用CSL实现C6455的中断配置过程,调用CSL_intcInit函数初始化中断模块,使能不可屏蔽中断NMI,并调用CSL_intcGlobalEnable函数全局中断使能,利用 CSL_intcOpen函数打开中断模块将GPIO5中断时间映射到系统中断INT5,然后调用CSL_intcPlugEvent-Handler函数绑定中断服务程序,最后使能该事件开始监听,至此中断机制配置完成,下一步进行中断服务程序的编写。
中断服务程序的配置过程,包括两个部分,第一部分是GPIO5等CPU触发的外部中断,当FPGA信号上升沿触发有效时,CPU事件触发并调用该中断服务函数开始EDMA搬数;第二部分是DSP内部EDMA的中断,根据上一节EDMA的原理,EDMA搬数完成后也会产生一个数据传输结束中断,同时标志符将赋值为1,表明数据搬移完毕,然后CPU开始进行图像处理。CPU图像处理结束后,利用EDMA方式将得到的目标点坐标信息按数据解析格式返回给FPGA,DSP任务完成。
图像处理是对EDMA导入C6455的内部数字图像数据进行处理,通过图像及参数提取、自适应阈值算法等,提取出目标信息,称为疑似目标点。在此基础之上,通过目标确认算法,即利用对比度关联域值计算分割功能提取FPGA预处理的扩展图像中疑似目标点的目标区域和背景区域,并按遥控参数要求计算邻域相关对比度,完成目标确认过程。最后得出最终的目标坐标位置,将坐标位置信息返回FPGA。图像处理算法流程如图5所示。
图5 图像处理算法流程
3.1 背景图像的提取与更新
DSP接收到的图像为扩展后的全幅图,而实际DSP进行图像处理时的图像为未扩边的背景图像,因此,需要从扩展图像中先提取出实际的背景图像。通过传输的图像数据及参数,得到扩展的边长,从而确定实际图像在扩展图像中的起始及终点坐标,以便进行图像处理。
一帧图像处理结束,得到目标点坐标信息,DSP按照数据解析协议将目标点打包后按照EDMA方式发送给FPGA,随后对下一帧的图像进行读取和处理,直到所有帧的图像都处理完毕。在DSP收到中断时,EDMA将搬移经FPGA预处理的背景图像数据,并覆盖掉上次读取的图像数据,更新之后,进行本次的图像处理过程。
3.2 目标点检测和确认
通过对图像数据进行分块处理,按照水平扫描、垂直扫描方向的坐标变化直接对图像数据进行重组,按行列方向找寻8*8小图像坐标,能够求取每个8*8小图的阈值Ts,并根据Ts进行判断,从而得到疑似目标点,此即为自适应阈值算法,具体计算如公式(1)所示:
其中μs、σs分别为块图像的均值和均方差,k为可调门限控制参数且由FPGA根据返回的目标点个数进行调控。
疑似目标点的确认过程,就是在自适应阈值算法的基础之上,以疑似目标点为中心,以扩边后的图像为背景图像,取小的目标区域和大的环状背景区域进行处理,利用公式(2)完成确认过程:
其中,μtl、μs、σs分别表示目标区域均值、 背景区域均值 (环形)和环形背景区域均方差,kc参数为FPGA提供。通过相互比较,确认疑似目标点是否满足条件。随后,遍历整个图像数据,依次求出相应子图像满足条件的目标点,并将其坐标信息存储下来。
3.3 软件设计
C6455实现图像处理的软件设计,是在FPGA对图像进行扩边和求残差等预处理操作的前提下,按照上述的图像处理算法进行软件设计,实现图像处理的具体软件流程如图6所示。
图6 C6455实现图像处理的软件流程图
C6455完成初始化,在收到中断后通过EDMA方式将参数及数据保存到内部存储器,当标识变量赋值为1时表示EDMA本次搬数过程结束,然后完成背景图像更新和参数数据提取。下一步,通过自适应阈值算法处理背景图像得到疑似目标点,然后利用目标确认算法完成确认,最后以EDMA方式将满足条件的目标点按照约定的格式打包发送给FPGA,这样便完成了本次图像的目标点检测和信息获取。
搭建好DSP和FPGA硬件平台,通过测试,发现DSP在读取数据时仍存在数据丢包的现象。因此,需要进一步对底层配置进行完善,即对EDMA初始化和中断初始化部分进行修改。通过不断地调试和修改,最终程序编译通过。如图7所示,模拟图像数据输入之后,读入的数据顺利写到DSP内存,红色即为读取的数值,实现了与FPGA间的基本通信。
在读取数据后,DSP直接对读入的图像数据进行算法处理,并最终以EDMA方式将确定后的目标信息成功返回给了FPGA。
图7 系统调试结果
文中以TMS320C6455芯片为核心,通过对C6455芯片的EMIF和EDMA等模块部分的研究,参考相关的CSL驱动程序,实现了数字图像目标点的检测,且最高可完成DSP与FPGA之间64位高速数据通信。测试结果证明,该设计能够有效地实现数字图像目标点的有效检测,实时性好,可以为其他的图像实时处理等相关项目提供借鉴。
调试过程中,EDMA模块的初始化实现是最关键的部分,也是实验最具挑战的部分。在满足系统设计要求的前提下,其搬移数据存储的大小端模式、确定搬数选用的通道、搬数的源地址及目的地址、传输数据的长度以及是否有DMA中断响应等都是要考虑的问题。此外,在双FPGA与双C6455系统协作进行图像处理过程中发现实际的数据吞吐速率距离理论速率有一定的差距。如何解决C6455与FPGA之间相互协作的高效性,如何进一步优化图像数据读取和处理的算法,以便更好地提高数据吞吐率,是下一步的研究方向。
[1]董言治,娄树理,刘松涛.TMS320C6000系列DSP系列结构原理与应用教程[M].北京:清华大学出版社,2014.
[2]韦金辰,李刚,王臣业,等.TMS320C6000系列DSP原理与应用系统设计 [M].北京:机械工业出版社,2012.
[3]江思敏,刘畅.TMS320C6000系列DSP应用开发教程——DSP应用开发教程系列[M].北京:机械工业出版社,2005.
[4]郑阿奇,孙承龙.DSP开发宝典[M].北京:电子工业出版社,2012.
[5]刘伟,王玮,卢恒炜,等.DSP原理与应用系列设计[M].北京:电子工业出版社,2012
[6]德州仪器公司.牛金海,等编译.Code Composer Studio(CCS)集成开发环境(IDE)入门指导书,2010.
[7]汪安民,张松灿,常春藤.TMS350C6000 DSP实用技术与开发案例[M].北京:人民邮电出版社[z],2008.
[8]李方慧.TMS320C6000系列DSPs原理与应用[M].2版.北京:电子工业出版社,2003.
[9]孙进平,王俊,李伟,等.DSP/FPGA嵌入式实时处理技术及应用[M].北京:北京航空航天大学出版社,2011.
[10]Texas Instruments.TMS320C6455 Fixed-Point Digital Signal Processor[EB/OL].www.ti.com.
[11]Texas Instruments.TMS320C6455 Chip Support Library API Reference Guide[EB/OL].www.ti.com.
[12]Texas Instruments.TMS320C645x DSP Software-Programmable Phase-Locked Loop (PLL)Controller User's Guide[EB/OL].www.ti.com.
[13]Texas Instruments.TMS320C6000 DSP External Memory Interface(EMIF)Reference Guide[EB/OL]. www.ti.com.
[14]Texas Instruments.TMS320C645x DSP Enhanced DMA(EDMA3)Controller User's Guide[EB/OL]. www.ti.com.
[15]Texas Instruments.TMS320C645x DSP General-Purpose Input or Output(GPIO)User's Guide[EB/ OL].www.ti.com.
Application of TMS320C6455 in real-time image processing
LIANG He-bin1,2,FENG Shui-chun1,ZHOU Hai1,BIAN Chun-jiang1,WANG Xiao-yan1,MAO Bo-nian1
(1.National Space Science Center,Chinese Academy Sciences,Beijing 100190,China;2.University of Chinese Academy Sciences,Beijing 100190,China)
To search for the goal points in the digital image and realize the high-speed data communication between FPGA and DSP,a system based on the high-speed DSP-TMS320C6455 was developed.The hardware part is to emulate the input or output data,and C was applied to complete the software part by Code Composer Studio(CCS).The image processing system was designed and realized by software design and configuring External Memory Interface(EMIF)、Enhanced DMA(EDMA)and so on,which finished the task of real-time image processing and high-speed communication.From the experimental results,the Image Processing System is reasonable and ideal so that it totally satisfy the needs,it is a real-time system and works efficiently.Above all,the design is useful and can be applied to many other parts of Digital Image Processing.
TMS320C6455;digital image processing;DSP;EMIF;EDMA
TN919
A
1674-6236(2017)09-0179-05
2016-03-15稿件编号:201603185
梁贺斌(1991—),男,河南驻马店人,硕士。研究方向:电子信息工程、计算机应用技术。