?

基于國產CPU的雷達信號處理設計和實現

2023-10-12 07:22游英杰
火控雷達技術 2023年3期
關鍵詞:信號處理線程隊列

王 巖 楊 剛 游英杰

(西安電子工程研究所 西安 710100)

0 引言

近年來,隨著雷達系統技術的快速發展和應用需求的不斷增加,傳統以FPGA+DSP為硬件架構的雷達信號處理系統面臨著極大的挑戰[1-2]。FPGA具有強大的運算能力和傳輸帶寬,但算法設計復雜且不夠靈活,軟件調試周期長。DSP開發靈活度高,但單片DSP計算能力較弱,對于運算量高的大型陣列雷達系統需要多片DSP才能完成檢測處理,復雜的任務劃分導致程序調試和維護困難。近些年,雷達信號處理系統開始嘗試使用進口CPU完成處理功能,基于CPU實現雷達信號處理系統便于實現復雜的算法流程,可以大幅度縮短軟件調試周期,軟件模塊易于復用和移植[3-4]。然而長期依賴于進口CPU面臨著嚴重的信息安全隱患以及隨時可能被禁用的風險。在我國大力發展電子信息軟硬件技術自主可控的趨勢下,國產CPU和操作系統在近些年得到迅速發展,其中較為成熟的飛騰FT2000+/64 CPU和銀河麒麟Linux操作系統已在各研究領域嘗試使用[5-6]。

本文基于國產飛騰FT2000+/64 CPU和銀河麒麟Linux操作系統設計了并行雷達信號處理算法,以雷達信號處理中常用的動目標檢測(Moving Targets Detection,MTD)和恒虛警率(Constant-False-Alarm Rate,CFAR)處理為例,介紹了國產CPU上雷達信號處理的設計流程、計算誤差和使用不同CPU核時的處理時間。

1 信號處理算法

動目標檢測(Moving Targets Detection,MTD)是一種提高雷達在雜波背景下檢測運動目標的能力的技術,一般使用FFT或多普勒濾波器組抑制雜波,本文使用FIR濾波器的方式進行MTD處理[7]。

恒虛警率(Constant-False-Alarm Rate,CFAR)處理是雷達目標檢測中常用的一種手段,目的是在干擾下保持信號檢測時的虛警率恒定。CFAR處理時需要先根據檢測單元內的噪聲和干擾確定一個門限,然后用此門限和檢測單元信號比較后判斷是否有目標[7]。常用的CFAR處理技術包括CA(Cell Averaging)-CFAR、GO(Greatest of)-CFAR、OS(Order Statistics)-CFAR等,本文中的測試程序使用GO-CFAR完成恒虛警檢測。

2 軟硬件平臺選擇

硬件平臺使用國產飛騰FT2000+/64 CPU處理器,該CPU集成64個自主開發的兼容ARMv8指令集的處理器核,采用基于數據親和的多核處理器體系結構,計算能力和訪存帶寬在國內處于領先水平。

操作系統使用銀河麒麟Linux操作系統,該操作系統支持飛騰、龍芯、海光等國產CPU平臺,并且穩定易用,支持Qt和Eclipse等開發環境,提供配套的編譯、測試和調試工具,本文中的程序均使用Eclipse編譯和調試。

計算中間件使用OpenBlas函數庫,OpenBlas是一個開源的線性代數運算函數庫,該函數庫對于高性能計算有需求的應用提供支持。OpenBlas支持FT2000+/64 CPU的ARMv8架構,在編譯時會根據所使用的硬件進行優化,生成針對所使用硬件效率很高的函數庫[8]。

并行編程框架使用Pthread編程模型,Pthread是一套基于共享內存的線程庫,該線程庫為用戶提供了創建和使用線程的一系列API,用戶在創建線程時可以設置線程優先級、調度策略和堆棧大小等參數,根據需要分配每個線程完成的任務[9]。

3 軟件設計架構

本文軟件設計的處理流程如圖1所示,各模塊間的并行處理采用流水線的方式實現,各處理模塊接收上一級模塊輸出的數據,上一級模塊的數據保存在全局內存中,后一級模塊直接從全局內存地址上獲取數據。為了保證各模塊處理時間的穩定性,首先對使用到的CPU核進行核隔離,然后在創建線程后,綁定各處理模塊的線程到指定的CPU核上。線程間使用信號量和全局變量等方式通信,讀寫全局變量時使用互斥鎖防止內存沖突。各處理模塊使用全局內存在線程間共享數據,使用各模塊獨立的數據循環隊列容忍處理時間的抖動。MTD和CFAR處理模塊使用參數化設計,可以根據需要靈活配置使用的核數和各線程需要計算的數據。

圖1 軟件設計架構

脈沖壓縮數據獲取模塊需要創建1個脈壓數據獲取線程,并將線程綁定到指定CPU核上。該線程將數據保存在一個使用全局內存的脈沖壓縮數據循環隊列中,通過累加隊列計數值全局變量的方式通知MTD模塊處理,使用全局變量的過程中使用內存互斥鎖防止沖突。

MTD處理模塊需要創建1個MTD管理線程和多個MTD計算線程,并綁定線程到指定CPU核上。MTD管理線程通過循環查詢脈壓數據隊列計數值全局變量的方式等待脈壓數據到達,讀取脈壓數據隊列計數值的過程中,使用互斥鎖防止內存沖突。獲取到脈壓數據后,MTD管理線程釋放所有MTD計算線程對應的計算開始信號量,并等待所有MTD計算線程結束信號量。完成計算后,累加MTD數據隊列計數值全局變量,通知CFAR模塊處理。MTD計算線程按照波束數和距離單元劃分每個線程的任務。例如,每個PRI包含兩個波束的脈壓數據,使用4個CPU核時,創建4個MTD計算線程,任務劃分為每兩個核計算1個波束,每個核計算1/2距離單元的數據。使用8個CPU核時,創建8個MTD計算線程,任務劃分為每4個核計算1個波束,每個核計算1/4距離單元的數據。使用16和32個CPU核時,任務在線程間的劃分方式類似。MTD處理模塊使用FIR濾波器的方式實現,每個MTD計算線程將需要計算的數據從脈沖壓縮數據全局內存隊列復制到臨時內存中,通過調用OpenBlas的復數矩陣乘法函數完成對應數據段的計算,然后將計算結果保存在MTD數據全局內存循環隊列中,用于后續的CFAR處理。

CFAR處理模塊需要創建1個CFAR管理線程和多個CFAR計算線程,并綁定線程到指定CPU核上。CFAR管理線程通過循環查詢MTD數據隊列計數值全局變量的方式等待MTD數據到達,讀取MTD數據隊列計數值的過程中,使用互斥鎖防止內存沖突。獲取到MTD數據后,CFAR管理線程釋放所有CFAR計算線程對應的計算開始信號量,并等待所有CFAR計算線程結束信號量。所有CFAR計算線程完成計算后,將多個CPU核計算的CFAR結果匯總,并累加CFAR數據隊列計數值全局變量,用于通知后續處理任務。CFAR計算線程按照波束數和積累點數劃分每個線程的任務。例如,對于積累點數為32并且每個PRI含兩個波束的數據,使用4個CPU核時,創建4個CFAR計算線程,任務劃分為每兩個核計算1個波束,每個核計算16個PRI的數據。使用8個CPU核時,創建8個CFAR計算線程,任務劃分為每4個核計算1個波束,每個核計算8個PRI的數據。使用16和32個CPU核時,任務在線程間的劃分方式類似。CFAR模塊使用GO-CFAR的方式處理,每個CFAR計算線程將需要計算的MTD數據求模值后保存在MTD模值數據臨時內存中,依次循環碼片和距離單元完成CFAR檢測,將計算結果保存在CFAR數據全局內存循環隊列中,最后由CFAR管理線程合并每個CPU核的檢測結果。

4 測試結果

本文中使用到的測試數據每個CPI的積累點數為39,每個PRI兩個碼片,每個碼片含兩個波束脈沖壓縮后的數據,第1個波束的脈沖壓縮數據如圖2所示。

圖2 第1個波束脈壓數據

圖3為FT2000+ CPU上并行執行MTD處理的結果,圖4為CPU和Matlab對相同的脈沖壓縮數據完成MTD處理后結果的差值。如圖4所示,CPU和Matlab MTD處理結果的差值在10-4左右,滿足雷達信號處理檢測的誤差要求。

圖3 第1個波束MTD結果

圖4 第1個波束MTD差值

圖5為FT2000+ CPU上并行執行GO-CFAR處理后得到的MTD平面圖,圖6為CPU和Matlab對相同的MTD數據完成GO-CFAR處理后得到的MTD平面的差值,結果顯示,CPU和Matlab GO-CFAR通過檢測的目標點一致。

圖5 第1個波束GO-CFAR結果

圖6 第1個波束GO-CFAR差值

表1是在FT2000+ CPU上并行執行的MTD和CFAR模塊使用不同CPU核時的處理時間和加速比。由于軟件中MTD和CFAR處理模塊使用參數化設計,測試時可以靈活配置使用的CPU核數。程序編譯時僅對MTD和CFAR處理模塊的關鍵計算函數進行O3優化,分別統計使用不同數目CPU核時完成100次處理的平均時間,時間單位為ms,括號中的數值為并行處理的MTD和CFAR模塊相對于串行程序的加速比。測試結果如表1中所示,CPU上32核并行的MTD處理程序相對于單核串行程序達到了13倍的加速,32核并行的GO-CFAR處理程序相對于單核串行程序達到了19.5倍的加速。對于常規的雷達信號處理系統,FT2000+ CPU可以滿足處理性能的要求。

表1 FT2000+/64 CPU上MTD和CFAR并行處理時間和加速比

表2是在進口的Intel Xeon D2183 CPU上并行執行的MTD和GO-CFAR模塊使用不同CPU核時的處理時間,時間單位是ms。Intel Xeon D2183 CPU的單核性能強于國產的FT2000+ CPU,但是該處理器只有16個CPU核,而FT2000+ CPU有64個CPU核,通過增加CPU核數,在FT2000+ CPU上并行執行的MTD和CFAR模塊可以達到和Intel Xeon D2183 CPU接近的處理性能。

表2 Intel Xeon D2183 CPU上MTD和CFAR并行處理時間

5 結束語

隨著雷達系統技術的快速發展,雷達信號處理的靈活性和國產化需求逐步提高。本文基于國產FT2000+ CPU和銀河麒麟操作系統設計了并行雷達信號處理算法,測試結果顯示,國產FT2000+ CPU上并行處理的MTD和CFAR模塊滿足計算精度和處理時間要求。MTD和CFAR處理模塊使用參數化設計,可以根據雷達信號處理系統的需要靈活配置核數和任務分配策略。對于有國產化需求的雷達系統,使用FT2000+ CPU完成雷達信號處理功能是一種可行的方案。

猜你喜歡
信號處理線程隊列
隊列里的小秘密
基于多隊列切換的SDN擁塞控制*
在隊列里
《信號處理》征稿簡則
《信號處理》第九屆編委會
《信號處理》征稿簡則
《信號處理》第九屆編委會
豐田加速駛入自動駕駛隊列
淺談linux多線程協作
基于上下文定界的Fork/Join并行性的并發程序可達性分析*
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合