楊 剛 陳穎哲 王 巖
(西安電子工程研究所 西安 710100)
傳統的雷達往往是針對特定應用場景設計,采用專用的硬件平臺和軟件架構,開發周期長,成本高,軟硬件耦合性強,維護和升級既困難又昂貴[1]。隨著雷達探測技術、電子對抗技術的發展,現代戰場的電磁環境越來越復雜,目標探測的難度越來越大。為適應復雜的電磁環境,陣列雷達的通道數越來越多,信號帶寬越來越大,以及先進的抗干擾算法和目標識別算法的引入,都增加了信號處理的復雜度。而且現在的雷達都具備多種探測任務的需求,集多種功能于一體,要求雷達可以靈活配置資源,擴展功能。
傳統的雷達大多采用“FPGA+DSP”處理架構。FPGA集成了大量可編程的數字邏輯構件和RAM塊,具有強大的定點運算能力和輸入輸出帶寬[2],一般用于完成雷達信號處理中的AD采樣,數字下變頻,數字波束形成,脈沖壓縮等功能。DSP浮點運算能力強,能夠滿足算法和邏輯比較復雜的場景,當前雷達信號處理系統中應用最廣的DSP是TI的TMS320C6678,其浮點處理能力可以達到128GFLOPS(1GHz主頻時),一般完成雷達信號處理中的動目標檢測,橫虛警檢測,點跡凝聚,測角,雜波圖等功能。“FPGA+DSP”架構在過去許多年里一直在雷達信號處理領域占據著主流位置,然而,該架構固有的特性,導致程序的可重用性低,硬件調試困難,開發周期長,難以滿足當前瞬息萬變的現代化信息戰的要求。
針對傳統雷達的不足,軟件化雷達[3-4]的概念被提出,不同于傳統雷達的“以硬件技術為中心,面向專用功能”特點,軟件化雷達是“以軟件技術為中心,面向實際需求”的開發模式。軟件化雷達通過層次化的開放式體系架構,可以實現硬件資源的靈活擴展。通過中間件技術,可以將應用程序與硬件資源完全解耦,從而實現可移植、可重構的軟件化雷達系統[5]。
FPGA雖然處理能力強大,但是開發調試周期長,軟件和硬件耦合性強,可移植性差,所以較少應用于軟件化雷達檢測信號處理中。
單片DSP處理能力較弱,所以一般在一塊板卡內同時包含2片、4片、8片TMS320C6678,每片C6678包含8個C66x核。為了充分發揮DSP的性能,大多應用中需要手動劃分每片DSP,甚至每個C66x核的功能。所以DSP程序開發和調試同樣比較復雜,不太適用于軟件化雷達信號處理。
受功耗墻的限制,單核CPU無法繼續通過提高主頻來提升計算性能,CPU也轉為了利用更多的核心來提升計算性能[4]。CPU芯片相對于DSP的主頻更高,內存更大,浮點運算能力更強,而且運行的Linux操作系統比DSP上運行的輕量級操作系統性能更強,所以廣泛應用于軟件化雷達信號處理中。
本文方法實踐中,計算刀片使用的處理器是志強D-2183IT,主頻2.2GHz,最大支持16核/32線程,三級緩存為22MB,采用AVX2.0指令集,板載支持4通道64GB、2400MHz Register DDR4 ECC內存,可檢測多位內存錯誤,查找和糾正單位錯誤,以保證系統持續正常運行,單精度浮點處理能力為1.1TFLOPS。
MKL是英特爾設計的一個函數庫,涵蓋了圖像處理、自動控制、科學計算、統計數學和信號處理等領域的基本函數,比如快速傅里葉變換,矩陣操作等。MKL內的函數進行了高度的優化,而且是線程安全的,很適合雷達信號處理應用。利用VISPL標準[7]和MKL可以實現高效的算法中間件。
通信中間件采用“發布-訂閱”模型,遵循DDS(Data Distribution Service)接口協議,提供了統一的接口進行數據和消息的傳遞,支持TCP、UDP和共享內存等傳輸協議。
目前CPU支持的并行編程模型包括Pthread、 OpenMP、 MPI和OpenCL等[6]。Pthread是線程的POSIX標準,定義了創建和操作線程的一整套API,能夠在多種操作系統上運行,具有很好的可移植性,且所有線程都可以訪問全局的共享內存,可以部分的減少線程之間數據通信的代價,當然多線程之間訪問共享內存時需要考慮線程安全問題。本文采用Pthread來設計雷達信號處理程序。
雷達信號處理最顯著的特點是各功能模塊的流水性,前后模塊間數據的迭代性和相關性較弱[8],所以不失一般性,這里只討論動目標檢測和橫虛警處理。
在實際工作中,雷達不僅會收到目標回波信號,也可能收到地物、云雨、海浪、以及人為釋放的箔條等產生的雜波信號。一般來說,雷達接收到的雜波功率比實際運動目標信號的功率高很多,這對運動目標的檢測產生了嚴重的影響。因此,在橫虛警檢測之前,必須對雜波進行抑制,盡可能降低雜波對檢測的影響。
MTD是一種利用多普勒濾波器組來抑制各種雜波,以提高雷達在雜波背景下檢測運動目標能力的技術[9]。MTD多普勒濾波器組的實現方法主要有FFT濾波器組法和有限脈沖響應(FIR)濾波器組法。FFT方法的優點是計算效率高,但是對雜波抑制能力較弱。FIR方法計算量大,但是在零頻附近抑制雜波更加靈活,其頻率響應可以在零頻附近產生滿足要求帶寬的零陷[10]。16點FIR和FFT多普勒濾波器組如圖1所示。

圖1 MTD多普勒濾波器組
由于MKL中矩陣乘法效率很高,所以在CPU上實現MTD時一般采用FIR濾波器組。
在實際工作中,干擾電平通常是變化的,橫虛警檢測的目的就是在實際干擾環境下保持信號檢測時的虛警率恒定。常用的方法有單元平均CFAR (CA CFAR),平均選大橫虛警(GO CFAR),平均選小橫虛警 (SO CFAR),審核式橫虛警,有序統計橫虛警(OS CFAR)等。這些橫虛警算法的主要區別在于多目標環境和雜波邊緣的表現不同[11]。
整個處理流程采用流水線的方式實現并行計算,除輸入輸出模塊外,各模塊接收上一級模塊輸出的參數和數據,完成計算后,將參數和數據發給下一級模塊。這里模塊之間傳輸的參數和數據組合,是通過使用傳址的方式進行傳遞,以減少數據傳輸的時間。輸入模塊接收外部模塊的輸入,輸出模塊將最終處理結果上報給外部模塊。
志強D-2183IT共有16個核,為了各模塊處理時間的穩定,對各模塊分配了固定的核進行處理,首先對這些核進行隔離,然后將各處理模塊線程綁定到對應核上。軟件化雷達模塊示例見圖2所示。

圖2 軟件化雷達模塊示例
每個模塊內有一個循環隊列,用于存儲參數+數據組合的地址,隊列越大對模塊處理時間抖動的容忍度越大,但隊列太大對內存的需求越大,需要根據模塊實際的處理時間抖動進行合理設置。
模塊內的線程分為兩種,管理線程和計算線程。
每個模塊的管理線程只有一個,用于判斷循環隊列的狀態,管理計算線程。當計算線程空閑時,管理線程判斷循環隊列是否為空,如果不為空,就取出最先收到的“參數+數據”組合,根據工作參數,劃分好每個計算線程的計算任務,給計算線程發送信號量,啟動計算線程開始計算,然后等待計算線程計算完成后發送的信號量。最后將該模塊生成的“參數+數據”組合發給下一個模塊。管理線程處理流程如圖3(a)所示。
每個模塊有多個計算線程,計算線程用于完成管理線程分配的計算任務。計算線程空閑時,等待管理線程發送的信號量,收到信號量后開始執行計算任務,計算完成后,給管理線程發送標志著計算完成的信號量,然后繼續等待管理線程發送的信號量。管理線程主要是判斷循環隊列和計算線程的狀態,以及完成任務分配,計算量不大,所以無需單獨劃分一個核,可以和計算線程綁定到同一個核,計算線程數量的選取需根據模塊的計算量,以及系統可劃分給該模塊的核數確定。計算線程處理流程如圖3(b)所示。
舉例來說,假設當前MTD模塊和CFAR模塊需要處理的是一個波束,16個多普勒通道,1024個距離單元,MTD模塊和CFAR模塊分別分配3個核,分別有3個計算線程。

圖3 管理線程和計算線程處理流程
MTD模塊中管理線程檢測到計算線程空閑,且循環隊列中有未處理的“參數+數據”時,給三個計算線程分配計算任務,其中:計算線程1完成距離單元1~342的MTD處理;計算線程2完成距離單元343~683的MTD處理;計算線程3完成距離單元684~1024的MTD處理。
同理,CFAR模塊中管理線程檢測到計算線程空閑,且循環隊列中有未處理的“參數+數據”時,給三個計算線程分配計算任務,其中:計算線程1完成多普勒通道1~6的CFAR處理;計算線程2完成多普勒通道7~11的CFAR處理;計算線程3完成多普勒通道12~16的CFAR處理。
雷達信號處理系統計算量大,實時性要求高,傳統雷達信號處理系統軟硬件耦合性強,不利于升級和擴展,導致研發周期長,成本高。本文介紹了一種基于CPU刀片服務器的軟件化雷達信號處理實現方法,使用循環隊列實現了對數據和參數的存儲和傳遞,應用管理線程自動劃分每個計算線程的計算任務,并管理計算線程的執行狀態。通過MTD模塊和CFAR模塊具體介紹了循環隊列,管理線程和計算線程的使用方法。本文介紹的實現方法,可以滿足常規軟件化雷達信號處理應用場景。