基于TMS320C6678DSP多核编程的SPECAN成像处理算法实现*
2017-11-01李佳洋
李佳洋
(中国西南电子技术研究所, 成都 610036)
基于TMS320C6678DSP多核编程的SPECAN成像处理算法实现*
李佳洋
(中国西南电子技术研究所, 成都 610036)
介绍了SPECAN(SPECtral analysis)SAR成像算法基于2片TMS320C6678的工程实现。文中对SPECAN SAR成像算法原理做了简单介绍,对算法工程化实现进行重点描述,着重对实现过程中DSP多核间同步、2片DSP间的同步、多核多通道EDMA传输以及大数据量存取及解决措施进行了介绍,并给出了工程实现结果。与其他几种成像算法工程化比较,通过结论可知对于成像精度要求不高,但要求快速实时处理时,SPECAN算法为最理想的工程化实现成像算法。
SPECAN成像处理算法;TMS320C6678;多核编程
0 引言
SAR在环境保护、灾害检测、资源勘察、地质测绘等方面有着广泛的应用[1]。目前主要的SAR成像算法有距离多普勒(RD)算法、Chirp-Scaling(CS)算法、距离徙动算法(RMA)、反投影(BP)算法以及频谱分析(SPECAN)算法等。相对于其他成像算法,SPECAN算法具有运算量小、所需内存较少的特点,更适合快速实时处理。
TI公司生产的8核高性能DSP芯片TMS320C6678具有运算资源丰富,高速总线接口类型多样化等特点。文中着重介绍了基于2片TMS320C6678的SPECAN算法实现过程中的工程化处理,以达到算法精度以及实时性最优的目的。
1 SPECAN算法流程
SPECAN算法原理如图1所示。
1.1 距离向脉冲压缩及有效区域计算
距离向脉冲压缩在频域进行,即将距离线回波在频域乘以参考函数,再变换到时域。距离压缩完成后,还需进行轨迹相位粗补偿得到距离向脉压结果。轨迹补偿的相位为:
θCOM=4·(RS-Rideal)/λ
(1)
式中:RS为由惯导信息计算的平台真实轨迹的半径;Rideal为平台理想直线运动轨迹的半径。
(2)
式中:Rmid为真实轨迹RS在孔径中心时刻的值;V为平台子孔径平均速度;θ为子孔径中心时刻前斜角;λ为波长;ta为慢时间。
1.2FDC时域估计
时域相关法估计多普勒中心频率为:
(3)
(4)
式中:v为平台速度;θ为子孔径中心时刻前斜角。获得fdc后,为避免基带部分估计时的缠绕,还需对fdc进行修正,对修正后的fdc进行二次曲线拟合,即完成fdc估计。最后对修正后的fdc进行二次曲线拟合得到最终结果。
1.3 距离走动校正
1.4FDR估计
1.5 方位向去斜处理
方位向去斜处理如下:将方位信号与方位匹配函数(加窗后)相乘,并作FFT,就完成了方位向处理。
1.6 地距中心计算
可以通过平台的坐标、速度以及斜距图像有效区域中心点对应的斜距Rco和多普勒频率为fdco计算出地距中心点的坐标。
1.7 几何校正
几何校正将斜距图转换成地距图。其具体算法为根据地距中心,以3 m间隔布置网格点,对于任意网格点的坐标为(x,y,0),计算其斜距和多普勒频率为:
(5)
此地距点对应的斜距图的行数m和列数n分别为:
(6)
(7)
式中:Rmin为最小采样距离;fs为采样率;fdc为第m行的多普勒中心频率;Nfft为方位向的点数。斜距图上第m行第n列的数值就是该地距点的值。
1.8 图像拼接
图像拼接将子孔径处理获得的地距小图拼接成为一幅地距大图。其原理为根据每幅子图的中心点坐标、图像大小和像素间隔确定每幅子图像在东北天坐标系下的覆盖范围。其中地距小图和地距大图覆盖范围的重合区域为拼接区域。根据每幅子图与大图的拼接区域依次进行拼接。
2 SPECAN算法在基于TMS320C6678DSP平台的工程实现
2.1 TMS320C6678芯片简介
TMS320C6678是TI公司基于KeyStone多核结构的最高性能DSP,其主要特点[2]如下:
1)集成8个C66x内核,每个核主频可工作在1.25 GHz。
2)能够进行定浮点运算。
3)存储资源丰富,每个核都有独立的L1和L2缓存,并且8核共享4 MB内存空间,还可外挂64 bit 2 GB的DDR3外部缓存。
4)高速总线资源丰富,包括SRIO、PCIE、千兆以太网、Hyperlink等高速接口。
2.2 SPECAN算法基于TMS320C6678的工程实现
本项目采用5个子孔径成像拼接的方法实现SAR成像处理,算法基于2片C6678的流程如图2所示。如图2所示,两片DSP并行工作,执行相同的子孔径处理算法,不同点在于DSP1处理3幅子孔径图像并将处理后数据通过Hyperlink传输给DSP2,DPS2负责2幅子孔径成像和5幅子图像的拼接。在DSP内部对DDR3里的数据搬移时采用EDMA3进行传输。
2.2.1 多核编程方法
C6678多核编程主要采用以下两种方式:
1)每个核建立一个独立的工程,多个核需要建立多个工程。
2)8个核共享一个工程,即在一个工程下实现多核编程。
根据图,文中软件流程采用并行处理方式实现,因此采用方法2)在一个软件流程中实现多核编程。要在一个工程中进行多核并行运算,首先要能够区分多核,以便于一个算法流程能够拆分成多份,这样可极大的提高算法效率。区分多核通过获取每核ID来进行判断,获取核ID主要有两种方法,一种是利用TI提供的pdk_C6678库中的platform_get_coreid()函数来获取其当前核ID号,另一种为每核读取自身DNUM寄存器信息来获取其核ID。
2.2.2 核间通信与变量共享
多核并行运算还需要多核间的通信来进行数据的相互调配。本项目使用多核共享变量(共享变量的存储空间为MSMC)来进行多核间的通信。由于C6678每个核拥有独立的Cache,可能导致多核在存取共享变量时存在Cache一致性问题,例如多核对储存在MSMC中的共享变量flag进行读写,当多核在第一次读取flag变量后,flag的信息将会保存在每核独立的Cache中。如果之后某核要改写flag变量,由于采用了Cache机制,该核只是修改了自身Cache中的flag信息,而不会更新MSMC中的值,当其他核再次读flag时读取的还是原来的数据。
采用以下方法可解决多核变量共享时的Cache一致性问题[3]:当某个核要改写一个多核共享变量时,可利用CACHE_wbL1d()函数将自身L1D Cache中该变量的值立刻写回到MSMC中;当多核要读取一个更新了的共享变量时,可利用CACHE_invL1d()函数将L1D Cache中该变量的值设置为无效,这样就能保证读取到MSMC中的最新变量,而不是Cache中可能已过期的变量。
虽然多个核同时访问共享内存时可能会发生冲突,但总线协议会解决这些冲突。总线会自动根据各个核访问的优先级进行冲突解决,同时也有一定机制防止优先级的访问永远被暂停。因此设计者在多核同步编程中无需再担心C6678硬件层面上的实现,只需从软件层面进行解决。
2.2.3 多核多通道EDMA传输
算法流程中每一个算法模块都需要和DSP的DDR3外存进行大量的数据交互。与DDR3的数据交互有两种方式,一种利用CPU的函数memcpy()进行多核同时传数,这种方式使用简单,但会占用大量的CPU资源,严重影响算法的实时性能;另一种方式是利用EDMA进行传输,EDMA是独立于CPU的增强型直接内存存取,具有后台批量数据传输的特点。
文中算法流程为8核并行运算,软件实现中多处涉及多核同时对DDR3进行数据交互。当TMS320C6678的8核同时进行EDMA传输时需要每核对EDMA进行资源分配[4],否则就会出现总线冲突,造成只有0核能够成功传数。C6678有3个EDMA3,分别有16个和64个独立通道。这3个EDMA3通过设置instNum进行控制。多核EDMA资源分配要求每个核对应的EDMA的通道、通道寄存器、RAM参数(PaRAM)以及IPR/IPRH相互独立。对于EDMA通道,要求8个核EDMA同时传输时每个核所用的EDMA通道是相互独立的。在单核EDMA传输时通道寄存器一般用配置比较简单的全局寄存器CSL_EDMA3_REGION_GLOBAL,但在多核EDMA传输时每个核需要配置当前核所对应的影射寄存器CSL_EDMA3_REGION_n,其中n=0~7。PaRAM最大可以设置511个,每一个PaRAM的内容都是相同的。因此在多核EDMA传输时每一个通道要对应不同的PaRAM。IPR/IPRH为一个64 bit的中断寄存器,每一位对应一个EDMA通道,作用为检测当前通道的传输完成状态。当一个中断传输完成码TCC被EDMA3CC(EDMA3 Channel Controller)检测到时,Interrupt Pending Register相应位置1,其中TCC=n,n为当前EDMA使用的通道号。
将上述EDMA资源对于多核进行分配,就能完成多核EDMA3的数据传输。EDMA3多核多通道传输极大的提高了算法的效率,在实验中一个1 024×8 192点回波的子孔径成像如果用CPU传数要比EDMA传数耗时大约200 ms。
2.2.4 Hyperlink传输
Hyperlink是C6678内部集成的用于CBA(common bus architecture)扩展的高速接口,支持两个集成Hyperlink接口设备的点对点互连[5]。Hyperlink数据传输包含3个步骤:
1)hyplnkExampleSysSetup();
2)hyplnkExamplePeriphSetup();
3)hyplnkExampleAddrMap (&dataBuffer,(void **)&bufferThroughHypLnk)。
其中前两项是对外围设备以及系统的初始化,第三个步骤为建立Hyperlink的地址映射。在地址映射中如果数据太大需要将dataBuffer的地址映射到4 MB的MSMC或DDR3的空间中。以MSMC空间为例,就需要在配置dataBuffer的地址时选择.far:remoteable,并在CMD文件中将.far配置到MSMC空间中去。
3 成像结果
SPECAN算法的处理时间主要集中在FFT浮点数的运算、大数据传输及缓存、多核同步以及2片DSP同步等问题上,经过工程优化处理后,在不降低图像精度指标的情况下,整个算法的处理时间优化为原来的三分之一。图3为5个子孔径成像结果,图4为大图拼接的结果。
SPECAN算法运算量小,所需内存较少。表1对SPECAN算法与其他几种成像算法的成像精度、适用斜视角度范围和计算效率进行了比较。
表1 几种SAR成像算法比较
综合分析以上几种算法可知,对于成像精度要求不高,但要求快速实时处理时,SPECAN算法为最理想的成像算法。
4 总结
文中研究了基于TMS320C6678实现SPECAN算法的工程化处理。由于篇幅的限制,文中并没有再对Rapid IO串口、网口通信以及代码优化等内容做重点的介绍。
[1] CUMMING I G, WONG F H. 合成孔径雷达成像:算法与实现 [M]. 洪文, 胡东辉, 译. 北京: 电子工业出版社, 2007: 10-21.
[2] Texas Instruments. TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor: Data Manual[A]. Dallas:Texas Instruments, 2010: 4-56.
[3] Texas Instruments. TMS320C66x DSP Cache User Guide[A]. Dallas: Texas Instruments, 2010: 28-45.
[4] Texas Instruments. Enhanced Direct Memory Access (EDMA3) Controller User Guide[A]. Dallas:Texas Instruments, 2010: 15-30.
[5] Texas Instruments. Key Stone Architecture Hyperlink[A]. Dallas:Texas Instruments, 2010: 24-36.
ImplementationofSPECANImagingProcessingAlgorithmBasedonTMS320C6678DSPMulticoreProgramming
LI Jiayang
(Southwest China Institute of Electronic Technology, Chengdu 610036, China)
Introduced the (SPECtral Analysis) SAR imaging algorithm based on the two TMS320C6678 project. In this paper, the principle of (Analysis SAR) SPECtral imaging algorithm is briefly introduced, focus on the description of the algorithm of implementation of the project, focusing on the implementation process of DSP multi-core synchronization, synchronization between 2 pieces of DSP, multi core and multi channel EDMA transmission and a large amount of data access and the solving measures are introduced, and gives the implementation results. Compared with other imaging algorithms, it can be concluded that the SPECAN algorithm is the most ideal project to realize the imaging algorithm in the fast and real time processing.
SPECAN imaging processing algorithm; TMS320C6678; multicore programming
TN958.3
A
2016-05-05
李佳洋(1984-),男,四川成都人,工程师,硕士,研究方向:雷达信号处理以及雷达信号侦察处理。