李佳洋
(中國西南電子技術研究所, 成都 610036)
基于TMS320C6678DSP多核編程的SPECAN成像處理算法實現(xiàn)*
李佳洋
(中國西南電子技術研究所, 成都 610036)
介紹了SPECAN(SPECtral analysis)SAR成像算法基于2片TMS320C6678的工程實現(xiàn)。文中對SPECAN SAR成像算法原理做了簡單介紹,對算法工程化實現(xiàn)進行重點描述,著重對實現(xiàn)過程中DSP多核間同步、2片DSP間的同步、多核多通道EDMA傳輸以及大數(shù)據(jù)量存取及解決措施進行了介紹,并給出了工程實現(xiàn)結(jié)果。與其他幾種成像算法工程化比較,通過結(jié)論可知對于成像精度要求不高,但要求快速實時處理時,SPECAN算法為最理想的工程化實現(xiàn)成像算法。
SPECAN成像處理算法;TMS320C6678;多核編程
SAR在環(huán)境保護、災害檢測、資源勘察、地質(zhì)測繪等方面有著廣泛的應用[1]。目前主要的SAR成像算法有距離多普勒(RD)算法、Chirp-Scaling(CS)算法、距離徙動算法(RMA)、反投影(BP)算法以及頻譜分析(SPECAN)算法等。相對于其他成像算法,SPECAN算法具有運算量小、所需內(nèi)存較少的特點,更適合快速實時處理。
TI公司生產(chǎn)的8核高性能DSP芯片TMS320C6678具有運算資源豐富,高速總線接口類型多樣化等特點。文中著重介紹了基于2片TMS320C6678的SPECAN算法實現(xiàn)過程中的工程化處理,以達到算法精度以及實時性最優(yōu)的目的。
SPECAN算法原理如圖1所示。
1.1 距離向脈沖壓縮及有效區(qū)域計算
距離向脈沖壓縮在頻域進行,即將距離線回波在頻域乘以參考函數(shù),再變換到時域。距離壓縮完成后,還需進行軌跡相位粗補償?shù)玫骄嚯x向脈壓結(jié)果。軌跡補償?shù)南辔粸?
θCOM=4·(RS-Rideal)/λ
(1)
式中:RS為由慣導信息計算的平臺真實軌跡的半徑;Rideal為平臺理想直線運動軌跡的半徑。
(2)
式中:Rmid為真實軌跡RS在孔徑中心時刻的值;V為平臺子孔徑平均速度;θ為子孔徑中心時刻前斜角;λ為波長;ta為慢時間。
1.2FDC時域估計
時域相關法估計多普勒中心頻率為:
(3)
(4)
式中:v為平臺速度;θ為子孔徑中心時刻前斜角。獲得fdc后,為避免基帶部分估計時的纏繞,還需對fdc進行修正,對修正后的fdc進行二次曲線擬合,即完成fdc估計。最后對修正后的fdc進行二次曲線擬合得到最終結(jié)果。
1.3 距離走動校正
1.4FDR估計
1.5 方位向去斜處理
方位向去斜處理如下:將方位信號與方位匹配函數(shù)(加窗后)相乘,并作FFT,就完成了方位向處理。
1.6 地距中心計算
可以通過平臺的坐標、速度以及斜距圖像有效區(qū)域中心點對應的斜距Rco和多普勒頻率為fdco計算出地距中心點的坐標。
1.7 幾何校正
幾何校正將斜距圖轉(zhuǎn)換成地距圖。其具體算法為根據(jù)地距中心,以3 m間隔布置網(wǎng)格點,對于任意網(wǎng)格點的坐標為(x,y,0),計算其斜距和多普勒頻率為:
(5)
此地距點對應的斜距圖的行數(shù)m和列數(shù)n分別為:
(6)
(7)
式中:Rmin為最小采樣距離;fs為采樣率;fdc為第m行的多普勒中心頻率;Nfft為方位向的點數(shù)。斜距圖上第m行第n列的數(shù)值就是該地距點的值。
1.8 圖像拼接
圖像拼接將子孔徑處理獲得的地距小圖拼接成為一幅地距大圖。其原理為根據(jù)每幅子圖的中心點坐標、圖像大小和像素間隔確定每幅子圖像在東北天坐標系下的覆蓋范圍。其中地距小圖和地距大圖覆蓋范圍的重合區(qū)域為拼接區(qū)域。根據(jù)每幅子圖與大圖的拼接區(qū)域依次進行拼接。
2.1 TMS320C6678芯片簡介
TMS320C6678是TI公司基于KeyStone多核結(jié)構(gòu)的最高性能DSP,其主要特點[2]如下:
1)集成8個C66x內(nèi)核,每個核主頻可工作在1.25 GHz。
2)能夠進行定浮點運算。
3)存儲資源豐富,每個核都有獨立的L1和L2緩存,并且8核共享4 MB內(nèi)存空間,還可外掛64 bit 2 GB的DDR3外部緩存。
4)高速總線資源豐富,包括SRIO、PCIE、千兆以太網(wǎng)、Hyperlink等高速接口。
2.2 SPECAN算法基于TMS320C6678的工程實現(xiàn)
本項目采用5個子孔徑成像拼接的方法實現(xiàn)SAR成像處理,算法基于2片C6678的流程如圖2所示。如圖2所示,兩片DSP并行工作,執(zhí)行相同的子孔徑處理算法,不同點在于DSP1處理3幅子孔徑圖像并將處理后數(shù)據(jù)通過Hyperlink傳輸給DSP2,DPS2負責2幅子孔徑成像和5幅子圖像的拼接。在DSP內(nèi)部對DDR3里的數(shù)據(jù)搬移時采用EDMA3進行傳輸。
2.2.1 多核編程方法
C6678多核編程主要采用以下兩種方式:
1)每個核建立一個獨立的工程,多個核需要建立多個工程。
2)8個核共享一個工程,即在一個工程下實現(xiàn)多核編程。
根據(jù)圖,文中軟件流程采用并行處理方式實現(xiàn),因此采用方法2)在一個軟件流程中實現(xiàn)多核編程。要在一個工程中進行多核并行運算,首先要能夠區(qū)分多核,以便于一個算法流程能夠拆分成多份,這樣可極大的提高算法效率。區(qū)分多核通過獲取每核ID來進行判斷,獲取核ID主要有兩種方法,一種是利用TI提供的pdk_C6678庫中的platform_get_coreid()函數(shù)來獲取其當前核ID號,另一種為每核讀取自身DNUM寄存器信息來獲取其核ID。
2.2.2 核間通信與變量共享
多核并行運算還需要多核間的通信來進行數(shù)據(jù)的相互調(diào)配。本項目使用多核共享變量(共享變量的存儲空間為MSMC)來進行多核間的通信。由于C6678每個核擁有獨立的Cache,可能導致多核在存取共享變量時存在Cache一致性問題,例如多核對儲存在MSMC中的共享變量flag進行讀寫,當多核在第一次讀取flag變量后,flag的信息將會保存在每核獨立的Cache中。如果之后某核要改寫flag變量,由于采用了Cache機制,該核只是修改了自身Cache中的flag信息,而不會更新MSMC中的值,當其他核再次讀flag時讀取的還是原來的數(shù)據(jù)。
采用以下方法可解決多核變量共享時的Cache一致性問題[3]:當某個核要改寫一個多核共享變量時,可利用CACHE_wbL1d()函數(shù)將自身L1D Cache中該變量的值立刻寫回到MSMC中;當多核要讀取一個更新了的共享變量時,可利用CACHE_invL1d()函數(shù)將L1D Cache中該變量的值設置為無效,這樣就能保證讀取到MSMC中的最新變量,而不是Cache中可能已過期的變量。
雖然多個核同時訪問共享內(nèi)存時可能會發(fā)生沖突,但總線協(xié)議會解決這些沖突??偩€會自動根據(jù)各個核訪問的優(yōu)先級進行沖突解決,同時也有一定機制防止優(yōu)先級的訪問永遠被暫停。因此設計者在多核同步編程中無需再擔心C6678硬件層面上的實現(xiàn),只需從軟件層面進行解決。
2.2.3 多核多通道EDMA傳輸
算法流程中每一個算法模塊都需要和DSP的DDR3外存進行大量的數(shù)據(jù)交互。與DDR3的數(shù)據(jù)交互有兩種方式,一種利用CPU的函數(shù)memcpy()進行多核同時傳數(shù),這種方式使用簡單,但會占用大量的CPU資源,嚴重影響算法的實時性能;另一種方式是利用EDMA進行傳輸,EDMA是獨立于CPU的增強型直接內(nèi)存存取,具有后臺批量數(shù)據(jù)傳輸?shù)奶攸c。
文中算法流程為8核并行運算,軟件實現(xiàn)中多處涉及多核同時對DDR3進行數(shù)據(jù)交互。當TMS320C6678的8核同時進行EDMA傳輸時需要每核對EDMA進行資源分配[4],否則就會出現(xiàn)總線沖突,造成只有0核能夠成功傳數(shù)。C6678有3個EDMA3,分別有16個和64個獨立通道。這3個EDMA3通過設置instNum進行控制。多核EDMA資源分配要求每個核對應的EDMA的通道、通道寄存器、RAM參數(shù)(PaRAM)以及IPR/IPRH相互獨立。對于EDMA通道,要求8個核EDMA同時傳輸時每個核所用的EDMA通道是相互獨立的。在單核EDMA傳輸時通道寄存器一般用配置比較簡單的全局寄存器CSL_EDMA3_REGION_GLOBAL,但在多核EDMA傳輸時每個核需要配置當前核所對應的影射寄存器CSL_EDMA3_REGION_n,其中n=0~7。PaRAM最大可以設置511個,每一個PaRAM的內(nèi)容都是相同的。因此在多核EDMA傳輸時每一個通道要對應不同的PaRAM。IPR/IPRH為一個64 bit的中斷寄存器,每一位對應一個EDMA通道,作用為檢測當前通道的傳輸完成狀態(tài)。當一個中斷傳輸完成碼TCC被EDMA3CC(EDMA3 Channel Controller)檢測到時,Interrupt Pending Register相應位置1,其中TCC=n,n為當前EDMA使用的通道號。
將上述EDMA資源對于多核進行分配,就能完成多核EDMA3的數(shù)據(jù)傳輸。EDMA3多核多通道傳輸極大的提高了算法的效率,在實驗中一個1 024×8 192點回波的子孔徑成像如果用CPU傳數(shù)要比EDMA傳數(shù)耗時大約200 ms。
2.2.4 Hyperlink傳輸
Hyperlink是C6678內(nèi)部集成的用于CBA(common bus architecture)擴展的高速接口,支持兩個集成Hyperlink接口設備的點對點互連[5]。Hyperlink數(shù)據(jù)傳輸包含3個步驟:
1)hyplnkExampleSysSetup();
2)hyplnkExamplePeriphSetup();
3)hyplnkExampleAddrMap (&dataBuffer,(void **)&bufferThroughHypLnk)。
其中前兩項是對外圍設備以及系統(tǒng)的初始化,第三個步驟為建立Hyperlink的地址映射。在地址映射中如果數(shù)據(jù)太大需要將dataBuffer的地址映射到4 MB的MSMC或DDR3的空間中。以MSMC空間為例,就需要在配置dataBuffer的地址時選擇.far:remoteable,并在CMD文件中將.far配置到MSMC空間中去。
SPECAN算法的處理時間主要集中在FFT浮點數(shù)的運算、大數(shù)據(jù)傳輸及緩存、多核同步以及2片DSP同步等問題上,經(jīng)過工程優(yōu)化處理后,在不降低圖像精度指標的情況下,整個算法的處理時間優(yōu)化為原來的三分之一。圖3為5個子孔徑成像結(jié)果,圖4為大圖拼接的結(jié)果。
SPECAN算法運算量小,所需內(nèi)存較少。表1對SPECAN算法與其他幾種成像算法的成像精度、適用斜視角度范圍和計算效率進行了比較。
表1 幾種SAR成像算法比較
綜合分析以上幾種算法可知,對于成像精度要求不高,但要求快速實時處理時,SPECAN算法為最理想的成像算法。
文中研究了基于TMS320C6678實現(xiàn)SPECAN算法的工程化處理。由于篇幅的限制,文中并沒有再對Rapid IO串口、網(wǎng)口通信以及代碼優(yōu)化等內(nèi)容做重點的介紹。
[1] CUMMING I G, WONG F H. 合成孔徑雷達成像:算法與實現(xiàn) [M]. 洪文, 胡東輝, 譯. 北京: 電子工業(yè)出版社, 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-),男,四川成都人,工程師,碩士,研究方向:雷達信號處理以及雷達信號偵察處理。