王曉燕
(中國電子科技集團公司第二十研究所, 陜西 西安 710068)
隨著雷達技術的不斷發(fā)展,對雷達信號處理的實時性和數(shù)據(jù)精確性要求越來越高,這就使得雷達信號處理在處理的數(shù)據(jù)量和運算量方面壓力大大增加。以前采用的多片單核DSP 實現(xiàn)強大的信號處理功能的方法,不但結構復雜,硬件量大,且已經(jīng)不能滿足一些大數(shù)據(jù)量處理的實時性要求,因此,多核DSP 的并行處理就成為發(fā)展趨勢,再加上國產(chǎn)芯片的快速發(fā)展及我們對國產(chǎn)芯片的需求,使得我們對國產(chǎn)FT_M6678芯片的多核并行處理開發(fā)顯得尤為重要。
FT_M6678 芯片不但具有高達1 GHz 處理時鐘、8個核的高速處理能力;還擁有豐富的接口:srio 接口、emif 總線接口、網(wǎng)口,可外掛DDR 等,這讓基于FT_M6678 芯片的雷達信號處理的處理能力大大提高,讓自主搜索并精確跟蹤目標的功能在一部雷達上實現(xiàn)成為可能。本文中就將對基于FT_M6678 的信號處理板卡的設計及實現(xiàn)進行介紹,并在該板卡上實現(xiàn)雷達自主搜索并精確跟蹤功能。
本文中的信號處理板卡是典型的一片F(xiàn)PGA+兩片DSP(FT_M6678)的實時信號處理架構,每片DSP外掛DDR3 以擴展存儲空間,F(xiàn)PGA 完成兩個波束的運動補償、脈沖壓縮、相參積累,每個幀周期內(nèi),每個DSP 完成一個波束的自主搜索功能,兩個DSP 均完成自主搜索后,可能會搜到若干目標,需將兩個波束中的重復目標剔除,剩余目標的速度,距離解模糊后,將距離、速度及角度信息在幀周期間滑窗,滿足3/5準則的目標即認為搜到的真實目標。
本文所實現(xiàn)的雷達信號處理機工作流程是:FPGA 通過光纖接收下變頻后的基帶雷達回波數(shù)據(jù)和雷達工作控制包,對寬帶信號進行運動補償、脈沖壓縮、相參積累和移頻處理,以提高距離速度的檢測精度和目標的信噪比;然后通過SRIO 接口將數(shù)據(jù)發(fā)送給高性能DSP,即FT_M6678,DSP 再根據(jù)工作狀態(tài),將數(shù)據(jù)分配到不同的核中進行自主搜索或跟蹤,將處理結果通過SRIO 接口送給中心控制系統(tǒng)。
為了更好地監(jiān)測FT_M6678 的工作狀態(tài),我們還設計了信號處理自動檢測功能,將FT_M6678 的上電加載狀態(tài)、通信狀態(tài),接口狀態(tài)及工作溫度等信息實時通過emif 總線發(fā)送給FPGA,和FPGA 的通信狀態(tài)等信息一起由FPGA 通過自定義串口或I2C 總線送出,可實時檢測板卡工作狀態(tài)。再利用FT_M6678 的千兆以太網(wǎng)接口,可將目標的A 顯數(shù)據(jù)送出顯示,直觀觀測到目標的運動狀態(tài)。
FT_M6678 共有8 個核[1-2],工作主頻高達1 GHz,每個核都有獨立的L1 和L2 緩存,8 核共享4 MB 內(nèi)存空間,還可外掛64 位2 GB 的DDR3 外部緩存,且功耗較小,各核可以并行運行,也可以利用核間中斷流水運行,支持定點、浮點運算,為我們的硬件設計提供了很大的靈活設計空間。本文主要的應用如下頁圖2,兩片DSP 具有不同的ID 編號,每片DSP 根據(jù)ID號來進行不同數(shù)據(jù)和狀態(tài)的處理,在自主搜索狀態(tài)下兩片DSP 處理過程相同,數(shù)據(jù)不同,跟蹤狀態(tài)只需一片DSP 處理,另一片DSP 處于待機狀態(tài)。下頁圖2 是一片DSP 的處理過程流程圖。
核0 通過SRIO 接口接收雷達回波經(jīng)過脈沖壓縮后的數(shù)據(jù)及控制包,將控制包和數(shù)據(jù)分別存儲在MSMC 空間的自定義位置,接收完成后,等每個核都準備好,然后沿距離方向?qū)?shù)據(jù)分段,由核1~核7并行對各段數(shù)據(jù)進行搜索。搜索時,本文采用的是二維滑窗式的噪聲基底計算方法,然后再計算信噪比,信噪比符合要求認為發(fā)現(xiàn)目標,對發(fā)現(xiàn)的目標距離速度進行解算,因為可能存在距離速度模糊,因次還要進行解模糊計算[3],得到目標的真實距離和速度,所有數(shù)據(jù)處理完成后,將每個核搜索到的全部目標數(shù)據(jù)分別存放在指定的MSMC 空間,然后核0 再對搜索到的所有目標進行數(shù)據(jù)融合,找出符合要求的一個或數(shù)個目標。
兩片DSP 都處理完成后,再將兩個DSP 搜到的目標的距離、速度、角度進行3/5 準則判斷,符合3/5準則及認為該目標確實存在,并將兩個DSP 搜到的真實目標即兩個波束中的目標中重復的目標剔除,然后就可選擇目標進行跟蹤。
在工程應用中,通過對國產(chǎn)FT_M6678 芯片的多核使用,發(fā)現(xiàn)該芯片在多核應用中,其內(nèi)存空間的配置也需要特別考慮和注意,由單核應用改為多核應用時(如圖4 所示),我們發(fā)現(xiàn)程序加載[4-5]空間與核0中全局變量空間發(fā)生沖突,具體情況如下。
設計調(diào)試完成后,都要將代碼固化到FLASH 中,芯片復位或重新上電后,由核0 去執(zhí)行加載程序,并負責將各個核的代碼加載到合適位置(例如:EMIF RAM 空間,DDR 空間,片內(nèi)共享存儲,L2 SRAM 等等),運行加載程序時,還會臨時占用核0 L2 SRAM和MSMC 的部分空間。
當前的雷達信號處理功能和需處理的數(shù)據(jù)量都比較大,因此,程序量也相應占用較大的空間存儲,編程所需的變量會較多,這時如果還把變量空間默認放在L2 SRAM,可能會因為空間沖突而導致程序加載后不成功或加載成功后程序運行結果出錯。因此,最好將代碼(code memory)空間定義在L2 SRAM,變量(data memory)和堆棧(stack memory)空間定義在指定的MSMC 空間XDCADDR 中,如圖3 所示。
圖5 是變量和堆??臻g設置在L2 SRAM 時,目指速度為430m/s,雷達信號處理檢測到的目標速度變化曲線,下頁圖6 是變量和堆??臻g設置在XDCADDR 時檢測到的目標速度變化曲線,和單核處理結果基本一致,觀察圖5 和下頁圖6 前段數(shù)據(jù)可發(fā)現(xiàn),由于空間設置的不合理,會導致目標檢測結果更新不連續(xù)。
多核下用JTAG 調(diào)試時,和單核調(diào)試還有一個區(qū)別,對需要實施刷新的調(diào)試變量在程序中進行cache語句處理或緩存區(qū)的開放,否則變量顯示不會進行刷新。
這個問題只影響調(diào)試時對所需觀察變量的實時顯示,當程序停止運行時,變量會更新為最終結果,不會影響程序的正常運行結果。多核運行時,每個核都會占用JTAG 資源,而核0 作為主核還要負責整個芯片對外的所有接口的正常輸入輸出及控制,也需要占用大量JTAG 資源。因此,在用多核工作時,盡量在核0 上不要進行大量的運算,在變量顯示列表中盡量顯示較少的核0 的變量,對必須在變量列表中顯示的核0 的變量,在程序中該變量更新新值的位置加cache語句進行刷新即可。
本文基于國產(chǎn)FT_M6678 芯片進行了雷達信號處理機的設計與實現(xiàn),并結合工程實際,對國產(chǎn)FT_M6678 芯片的多核在應用出現(xiàn)的部分問題進行了分析,并給出了解決這些問題的基本方法,為更好地應用FT_M6678 多核芯片起到了一定的奠定了基礎