黃成章,李萬崇,李凱峰
(華北光電技術(shù)研究所,北京 100015)
現(xiàn)代戰(zhàn)爭中,“先敵發(fā)現(xiàn),先敵打擊”是提升戰(zhàn)場生存能力的必要手段,紅外技術(shù)是一種被動式、可全天時工作的探測技術(shù),它可以彌補常規(guī)雷達四抗(抗反輻射導彈、抗電子戰(zhàn)、抗低空超低空突防、抗隱身目標)能力不足的缺點[1],因此,采用該項技術(shù)的紅外搜索跟蹤系統(tǒng)成為軍事預警探測、目標識別、制導等系統(tǒng)中可或缺的裝備力量,最早的紅外搜索跟蹤系統(tǒng)技術(shù)始于20世紀60年代,經(jīng)過幾十年的發(fā)展,紅外搜索跟蹤系統(tǒng)性能及各項指標得到了極大提升,從最初的單元傳感器發(fā)展為至今的具有分辨率的線列、面陣傳感器,同時為提升不同戰(zhàn)場條件下對各類目標的探測能力,越來越多的具有雙波段探測能力的紅外搜索跟蹤系統(tǒng)被開發(fā)出來。
作為紅外搜索跟蹤系統(tǒng)的“大腦”,高性能的信號處理技術(shù)是紅外搜索跟蹤系統(tǒng)永遠追求的目標。而隨著紅外圖像分辨率的提升及雙波段探測技術(shù)的廣泛應用,此外受限于一些裝備對體積、功耗的特殊要求,這些對信號處理技術(shù)都提出了更高的要求。
針對當前及未來紅外搜索跟蹤系統(tǒng)對高性能信號處理技術(shù)的任務(wù)需求,本文基于多核DSP的通用信號處理硬件平臺,結(jié)合系統(tǒng)功能需求、算法需求及多核DSP硬件特征,設(shè)計了一種基于主從架構(gòu)的多核DSP軟件架構(gòu),完成了紅外搜索與跟蹤算法的硬件移植與應用驗證。
文中采用的硬件平臺基于當前主流的FPGA+DSP架構(gòu),在設(shè)計時,考慮到后續(xù)軍事裝備對國產(chǎn)化任務(wù)的應用要求,文中硬件平臺選用了Xilinx公司和TI公司的高端主流芯片,一方面這些芯片有國產(chǎn)化對標的解決方案,另一方面考慮了后續(xù)裝備升級對芯片的資源要求。信號處理板卡采用3UVPX標準架構(gòu),單個板卡基于一片Xilinx公司的V7690T和TI公司的TMS320C6678多核處理芯片,板卡的對內(nèi)對外的指令與數(shù)據(jù)通路均采用SRIO通路,傳輸帶寬為3.125Gbps。為了實現(xiàn)對雙波段的處理,需要采用兩塊信號處理板卡。
單個TMS320C6678處理器具有8個DSP內(nèi)核,該芯片是基于TI的C66x DSP內(nèi)核的KeyStone構(gòu)架創(chuàng)建的。其運行速度最高可達1.25GHz。單個核心運算能力可高達40 GMACS和20 GFLOPS,每個核心具有32 kB L1P、32 kB L1D、512 kB L2,4 MB多核共享內(nèi)存,具有PCle、Serial RapidIO、Gigabit Ethernet以及TI的HyperLink等多種高速接口,廣泛應用于通信、雷達等高速信號處理領(lǐng)域。
紅外搜索跟蹤系統(tǒng)軟件作為一種軍用嵌入式軟件,需要具備良好的可靠性,嵌入式軟件的可靠性是關(guān)系到武器裝備可靠性的重要環(huán)節(jié),也是當前武器裝備可靠性研究的所面臨的一個重要的課題[2]。實際開發(fā)過程中,除了要嚴格進行軟件工程化管理、健全軟件文檔及增加軟件產(chǎn)品的可靠性度量,更重要的是要在設(shè)計階段增加軟件的容錯設(shè)計、冗余設(shè)計,通過簡化設(shè)計,提升軟件產(chǎn)品的模塊化程度,同時盡量降低軟件的模塊復雜性,此外要盡可能的重用現(xiàn)有的成熟軟件資源,在軟件設(shè)計中也要增加關(guān)鍵環(huán)節(jié)的故障上報機制。
雙波段紅外搜索跟蹤系統(tǒng)軟件,除了要實現(xiàn)針對中、長波兩個波段圖像的實時處理,實現(xiàn)目標檢測與跟蹤的業(yè)務(wù)邏輯功能,還要實現(xiàn)硬件接口的初始化、通信協(xié)議、健康管理及模擬訓練功能,實際設(shè)計中,采用模塊化分層設(shè)計思想對這些關(guān)鍵功能進行組織,其組成框圖如圖1所示。
圖1 紅外搜索跟蹤軟件功能構(gòu)成Fig.1 Composition of infrared search and tracking software
圖1中個功能模塊實現(xiàn)的具體功能描述如下:
(1)目標檢測:該功能屬于系統(tǒng)業(yè)務(wù)邏輯的一部分,主要接收來自FPGA的中/長波紅外圖像及預處理結(jié)果,在系統(tǒng)的控制流程下,實現(xiàn)目標檢測算法的核心邏輯,完成興趣目標的檢測。
(2)目標跟蹤:該功能同樣屬于系統(tǒng)核心業(yè)務(wù)邏輯的一部分,接收來自目標檢測算法提取的興趣目標,對跟蹤波門的興趣目標進行目標跟蹤算法的處理,并輸出目標的脫靶量信息控制伺服運動,將目標鎖定在視野中心,實現(xiàn)對目標的跟蹤。
(3)模擬訓練:該部分功能主要是系統(tǒng)的輔助功能,主要用于對操作人員的虛擬作戰(zhàn)訓練,在前端探測器關(guān)閉的情況下,通過生成模擬的目標信息輸出,實現(xiàn)目標檢測、目標跟蹤的模擬功能驗證,減少設(shè)備的使用壽命,提升設(shè)備的使用效率,同時可以使作戰(zhàn)人員快速熟悉系統(tǒng)的操作流程及特性。
(4)通信協(xié)議:其主要實現(xiàn)信號處理板對內(nèi)對外的指令及數(shù)據(jù)交互協(xié)議,進而為后續(xù)的系統(tǒng)流程模塊提供信息,并將來自流程控制的信息下發(fā)到下一層模塊。
(5)執(zhí)行環(huán)境:執(zhí)行環(huán)境模塊是整個軟件的核心,其基于高內(nèi)聚、低耦合的設(shè)計思想,對系統(tǒng)關(guān)鍵功能進行抽象,最大限度的減少頂層應用對底層模塊的依賴及耦合性,提升應用軟件的可移植性。其核心功能包括:
1) 實現(xiàn)通信中間件的功能,降低對不同應用場景的通信協(xié)議的依賴性;
2) 負責根據(jù)接收的指令及數(shù)據(jù)信息調(diào)度目標檢測、目標跟蹤及模擬訓練模塊;
3) 向下一層提供系統(tǒng)業(yè)務(wù)邏輯的處理結(jié)果(如目標位置信息及控制伺服的脫靶量信息等)。
(6)故障管理:該模塊的引入?yún)⒖剂藱C載預測與健康管理模塊的功能,機載設(shè)備中的預測與健康管理(Prognostics and Health Management,PHM)作為實現(xiàn)視情維修(Condition Based Maintenance,CBM)的關(guān)鍵使能技術(shù),利用飛機已有的傳感器、數(shù)據(jù)源和少量的專用傳感器,通過綜合采樣來自飛機各部件、子系統(tǒng)的基礎(chǔ)數(shù)據(jù),應用智能計算技術(shù)和診斷方法,充分利用各方面、各層次的狀態(tài)信息,實現(xiàn)綜合診斷與測試,提高故障檢測率、隔離率,濾除虛警[3]。本設(shè)計中的故障管理模塊旨在監(jiān)測并提供信號處理軟件關(guān)鍵位置的健康狀態(tài),對關(guān)鍵故障按等級進行上報,提供信號處理系統(tǒng)的健康狀態(tài)信息,從而提高信號處理系統(tǒng)的安全性、可靠性及可測試性。
(7)硬件驅(qū)動:該模塊位于整個設(shè)計的最底層,主要提供軟件中個硬件資源的調(diào)用接口,實現(xiàn)對各個硬件資源(如PLL、內(nèi)存、SRIO及EDMA等)的初始化及應用。
紅外搜索跟蹤系統(tǒng)的軟件架構(gòu)設(shè)計,要充分考慮TMS320C6678硬件平臺的特點及應用本身的任務(wù)需求,從而設(shè)計一款既滿足應用需求、能夠充分發(fā)揮硬件性能,又能保持一定的簡潔性及可擴展能力。
針對 TMS320C6678多核 DSP 芯片的應用開發(fā),TI允許開發(fā)人員采用兩種方式開發(fā),一種是在 SYS/BIOS[4]操作系統(tǒng)環(huán)境下進行應用開發(fā),另一種是基于前后臺應用模式進行開發(fā)設(shè)計。前者操作系統(tǒng)為多核DSP的開發(fā)提供了多種系統(tǒng)調(diào)用接口,方便開發(fā)者構(gòu)建多核應用程序,但存在一定的資源消耗,同時其性能有一定損失,因此本文采用基于裸機的前后臺程序進行多核應用程序設(shè)計。
針對雙波段紅外搜索跟蹤系統(tǒng),需要采用兩塊相同架構(gòu)的信號處理板卡(下文簡稱處理板A和處理板B)進行軟件實現(xiàn),實際工程實現(xiàn)時,采用處理板A完成長波圖像的任務(wù)處理,采用處理板B完成中波圖像的任務(wù)處理,除了輸入圖像的分辨率、處理幀頻及算法有些許不同外,兩種板卡的程序結(jié)構(gòu)完全一致。
多核程序設(shè)計模型常用的方案有主從模型、數(shù)據(jù)流模型以及OpenMP 模型。
主從模型是一種控制集中,執(zhí)行分布的方案。在多核DSP 上core0 為主核,負責調(diào)度任務(wù)到從核,同時控制每個核的負載,實現(xiàn)負載均衡化。從處理器之間的任務(wù)彼此獨立,任務(wù)的執(zhí)行只受主處理器的控制。
數(shù)據(jù)流模型是一種分布式控制和執(zhí)行的方案。多核DSP下,每個核運行不同的功能處理數(shù)據(jù),借助共享內(nèi)存,數(shù)據(jù)由一個核傳輸給另一個核。利用該種模型處理時,難點在于如何將程序映射到不同的核上以及確保核間數(shù)據(jù)傳輸時的低延遲。
OpenMP 是為多處理器上編寫并行程序而設(shè)計,指導共享內(nèi)存、多線程并行的編譯制導指令和應用程序編程接口,是一種基于共享存儲體系結(jié)構(gòu)的可移植編程模型[5]。
由于需求的復雜性,單一的模式很難實現(xiàn)實時的處理,通過采用混合處理模式,可以進一步提升軟件的實時性,同時也能減少一定的資源消耗,文中綜合應用了主從模型和數(shù)據(jù)流模型實現(xiàn)多核DSP應用設(shè)計。
3.3.1 工程設(shè)計
對于多核DSP的應用程序?qū)崿F(xiàn)方式可以分為兩種,一種方式為所有核心使用統(tǒng)一的工程,另一種方式為每一個核心建立獨立的工程,這兩種方式各有利弊,前者的好處在于當使用過的核心多時,開發(fā)人員僅維護一個工程即可,方便管理,其不足是,程序設(shè)計過程中要充分考慮不同核心的功能差異,進行差異化處理設(shè)計,此外還會存在一定程度的資源浪費,例如對于某些核心獨享的全局變量,即使本核心未使用,程序編譯時也會為期分配存儲空間;后者的好處在于可以針對性額對每個核心進行單獨設(shè)計優(yōu)化,最大限度的提升資源利用率,其缺點是隨著核心的增加,開發(fā)人員需要管理的工程數(shù)量也會線性增加;綜合考慮實際應用需求,文中采用獨立工程的方式實現(xiàn),實際過程中對各個功能模塊進行合理劃分抽象,對公用的源文件采取多工程共享的方式,減少后續(xù)的維護難度。
3.3.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計
紅外搜索跟蹤軟件中核心數(shù)據(jù)結(jié)構(gòu)按功能劃分,主要分為兩類,一類為存儲系統(tǒng)狀態(tài)及流程控制的狀態(tài)控制信息,一類為算法內(nèi)部業(yè)務(wù)邏輯信息;按分配區(qū)域劃分,可以分為共享數(shù)據(jù)存儲區(qū)和獨立存儲區(qū),前者為多個核心之間共享訪問維護,后者為單個核心獨立控制維護,一般為了提升DDR的訪存速度,會使能Cache功能,此時對于共享存儲區(qū)的訪問維護由于涉及多個主設(shè)備的同時訪問,因此要注意緩存一致性維護。
軟件中的一個關(guān)鍵數(shù)據(jù)結(jié)構(gòu)為程序中用于記錄系統(tǒng)參數(shù)狀態(tài)的數(shù)據(jù)結(jié)構(gòu),其定義如下:
typedef struct _SysInfo_t{
//幀號
Uint16 frameNumber;
//光軸方位
float position;
//光軸俯仰
float pitch;
//圖像垂直分辨率
Uint16 rows;
//圖像水平分辨率
Uint16 cols;
//瞬時視場
float ifov;
//時間信息
Uint64 timeVal;
}SysInfo_t;
該數(shù)據(jù)結(jié)構(gòu)主要由Core0進行維護,其他處理核心知識讀取訪問里面的信息,用于后續(xù)算法處理,因此其分配在共享數(shù)據(jù)存儲區(qū)。另外一個比較重要的兩個數(shù)據(jù)結(jié)構(gòu)分別為core0與core1及core2交互的目標檢測數(shù)據(jù)結(jié)構(gòu)和目標跟蹤數(shù)據(jù)結(jié)構(gòu),為了方便主從模式的處理架構(gòu)的流程控制,除了必要的上報信息,該數(shù)據(jù)結(jié)構(gòu)還加入了一些反饋控制信息,以方便core0獲取core1及core2的處理狀態(tài)。
/** 檢測信息**/
typedef struct _ProtDetectorInfo_t {
//命令執(zhí)行對象
Uint32 cmdExeObj;
//目標個數(shù)
Uint8 count;
//幀號
Uint16 frameNumber;
//反饋工作狀態(tài)
Uint8 response;
//目標信息
ProtDResults_t result[DETECT_NUM];
//故障信息
Uint8 malfunctionInfo;
} ProtDetectorInfo_t;
/** 跟蹤信息**/
typedef struct _ProtTrackerInfo_t {
//命令執(zhí)行對象
Uint32 cmdExeObj;
//幀號
Uint16 frameNumber;
//反饋工作狀態(tài)
Uint8 response;
//目標方位偏差
float rowOffset;
//目標俯仰偏差
float colOffset;
//目標方位角
float position;
//目標俯仰角
float pitch;
//故障信息
Uint8 malfunctionInfo;
} ProtTrackerInfo_t,*pProtTrackerInfo_t;
3.3.3 軟件流程
針對文中的應用場景,單個波段的軟件流程設(shè)計如圖2所示,該流程中同樣表明了各個處理核心的功能分配。
圖2中展示了單個波段下紅外搜索跟蹤系統(tǒng)軟件的數(shù)據(jù)流圖及相應的DSP核心功能分配。從上圖可以發(fā)現(xiàn),文中采用了具有兩級主從模式+流水模式的混合處理架構(gòu)。FPGA實現(xiàn)對中/長波圖像的傳輸及預處理,并負責完成處理結(jié)果的上報,中/長波圖像及預處理數(shù)據(jù)傳輸至DSP的DDR3空間。core0作為一級主處理核心,負責完成硬件的初始化及對外的交互及對內(nèi)的同步控制,為了方便后續(xù)不同功能核心的訪問,core0在中斷服務(wù)程序中將收到的數(shù)據(jù)及處理結(jié)果搬移至處理緩存區(qū),并設(shè)置數(shù)據(jù)接收到同步標志,觸發(fā)core1和core2的處理流程;core1和core2作為二級主處理核心,其中core1實現(xiàn)目標檢測功能,負責管理控制core3-core7的實際目標檢測算法的運行,并對這些核心的處理結(jié)果進行合并,一方面將處理結(jié)果作為上報信息反饋給core0,另一方面將目標信息傳遞給core2,由core2對波門內(nèi)的興趣目標進行跟蹤處理。從處理器core3-core7負責對不同圖像塊的處理,這里的圖像分塊指將輸入圖像從上到下等分成6塊,由不同處理核心進行并行處理。
圖2 處理核心功能分配及流程框圖Fig.2 Processing core function allocation and flow chart
在某型紅外搜索跟蹤系統(tǒng)中,對該信號處理軟件進行了應用驗證,該紅外搜索跟蹤系統(tǒng)的探測部分由中、長波兩個探測器構(gòu)成,實現(xiàn)對不同應用場景的有效探測。系統(tǒng)的中、長波兩個波段的紅外視頻主要參數(shù)如表1所示。
表1 紅外視頻主要參數(shù)Tab.1 Main parameters of infrared video
從表1可知,為了滿足系統(tǒng)的實時處理要求,紅外搜索跟蹤系統(tǒng)軟件自接收到來自FPGA的圖像及預處理數(shù)據(jù)到輸出最終的檢測及告警信息,應控制在10 ms以內(nèi),兩個波段,由于中波的分辨率更大一些,因此其實時處理能力更加嚴格。軟件中的核心耗時代碼主要為目標檢測及目標跟蹤的核心業(yè)務(wù)代碼。
為了滿足系統(tǒng)的實時處理要求,文中對算法邏輯進行了優(yōu)化,結(jié)合文獻[6]中的DSP硬件優(yōu)化方法,綜合運用編譯器優(yōu)化選項-O3及編程中的優(yōu)化預處理宏,提升了算法的實時處理能力,使得算法的最終處理時間滿足中長波的實時處理要求,其中中波峰值處理時間在8.3 ms左右,長波峰值處理在4.2 ms左右。實際的搜索跟蹤告警效果如圖3所示。
圖3中,左側(cè)為長波圖像,右側(cè)為中波圖像,以上為采用長波圖像對目標進行跟蹤的效果,中波和長波的檢測功能同時打開。
圖3 中長波紅外搜索跟蹤效果Fig.3 The effect of infrared search and tracking of medium and long wave
文中采用基于混合模式的并行處理架構(gòu),設(shè)計了基于多核DSP處理芯片設(shè)計了紅外搜索跟蹤信號處理軟件,對核心業(yè)務(wù)邏輯代碼進行了優(yōu)化處理,實現(xiàn)了對中長波雙波段兩個圖像的實時處理,實踐證明,該軟件滿足系統(tǒng)的實際作戰(zhàn)使用要求,此外,該硬件系統(tǒng)設(shè)計之初考慮了國產(chǎn)化的替換選型方案,這位后續(xù)將該軟件適配到國產(chǎn)多核DSP處理架構(gòu)上提供了便利。