1212
(1.中國科學院電子學研究所,北京 100190; 2.微波成像技術國家重點實驗室,北京 100190;3.中國科學院大學,北京 100049)
近年來,小目標飛行器的快速發(fā)展對目標探測雷達提出了新的挑戰(zhàn)。小目標飛行器的雷達散射截面積小,難以被有效探測,因此需要積累雷達回波以提高信噪比,提升檢測效果。但由于目標相對雷達的運動導致目標回波包絡無法對齊,距離向和方位向存在耦合,積累后會導致主瓣展寬、峰值下降[1]。
針對積累過程中出現(xiàn)的距離單元走動,文獻[2]提出的Keystone變換方法可在保持回波相位的同時,補償跨距離單元的走動。然后方位向對多個回波信號進行相參積累,提高信噪比。文獻[3-4]使用Keystone變換有效校正了距離走動,但是引入了sinc插值,增加了運算負擔,因此,工程實現(xiàn)難度較大。另外,在雷達系統(tǒng)中,為了提高空域覆蓋范圍,需要使用數(shù)字波束形成(DBF)技術合成多個波位。此時,需要對多個波束數(shù)據(jù)進行并行實時處理,提高了對FPGA的處理能力,在資源非常有限的FPGA中無法得到實現(xiàn)。文獻[5-6]提出非均勻快速傅里葉變換,并對其原理進行了說明。
本文將非均勻快速傅里葉變換方法應用于多波束距離走動校正和相參積累中,并提出一種新的硬件方案來進行工程實現(xiàn)。該方法通過方位向的NUFFT來代替插值操作,明顯降低了運算復雜度。在FPGA實現(xiàn)方案中,通過改寫旋轉因子來編寫可輸入旋轉因子的FFT運算模塊,利用兩級NUFFT,按照FFT流程來進行計算,既可以提高運算速度,又可以節(jié)約存儲旋轉因子的內(nèi)存空間。
目標相對雷達的運動導致相參積累時需要考慮距離走動。Keystone變換通過時間軸的縮放有效消除距離向和方位向之間的耦合,校正在距離方向上的越單元走動[7]。
在雷達處理過程中,傳統(tǒng)做法是使用插值來對距離走動進行校正,常用的插值方法有sinc插值、stolt插值和拉格朗日插值。
若使用插值來完成Keystone變換,對一個Na×Nr大小的矩陣進行計算。計算每個離散點時都需要進行若干點的插值函數(shù)實時計算,資源消耗較大,而且速度也較慢。而在進行距離走動校正之后,還需要對每個距離門進行方位向上的傅里葉變化以實現(xiàn)相參積累。因此,無法滿足雷達系統(tǒng)的實時性要求。非均勻FFT正是針對這一問題的解決方案。
對一個回波積累后距離向和方位向均為時域的大小為Na×Nr的矩陣進行非均勻FFT,處理完成之后,可將目標在長時間相參積累過程中導致的距離走動進行校正并在方位向上進行相參積累,得到距離向為時域、方位向為多普勒域的大小為Na×Nr的二維矩陣。
(1)
該矩陣的標準FFT形式為
YFFT[la,mr]=
(2)
將式(1)按照式(2)形式進行變化得到
Ykt[la,mr]=
(3)
式(3)對應的旋轉因子為
(4)
由式(4)可知,在進行一次Na點的NUFFT時,前半部分旋轉因子與標準FFT相同,而后半部分旋轉因子的指數(shù)為一個常數(shù)。因此,可以根據(jù)這個特點,重新改寫FFT旋轉因子,依然可以使用標準FFT計算流程。
基于此思路,編寫可變旋轉因子FFT模塊來進行NUFFT的實現(xiàn),計算量得到很大程度的降低,提高了運算速度,而且極大程度地節(jié)省了系數(shù)存儲所需的存儲空間。
常規(guī)NUFFT通過復乘來實現(xiàn),需要提前將系數(shù)進行計算和存儲,計算每個點所需要的系數(shù)都是不同的,因此,存儲容量需求較大。而改進的NUFFT實現(xiàn)方案使用旋轉因子來進行計算,因此,存儲容量需求很少。而且,由于使用了FFT計算流程,需要的復數(shù)乘法和復數(shù)加法次數(shù)都明顯減少,運算速度也得到明顯提升。表1列出了兩種方式所需要的復數(shù)乘法、復數(shù)加法以及存儲系數(shù)所需要的存儲空間大小。
表1 運算資源分析
由此可以看出,相比于常規(guī)實現(xiàn)方式,改進NUFFT實現(xiàn)方式明顯減少運算量和系數(shù)存儲所需空間。當需要對多波束數(shù)據(jù)進行并行處理的時候,該方法可以極大降低在資源非常有限的FPGA中對NUFFT進行工程實現(xiàn)的難度。
該設計方案基于某目標探測雷達系統(tǒng),系統(tǒng)使用Xilinx第七代Virtex-7系列FPGA和TMS320C6678協(xié)調工作來進行目標探測,NUFFT在FPGA中實現(xiàn)。系統(tǒng)使用多個接收天線,接收信號經(jīng)過DBF合成左右各6個波束來覆蓋更大的空域范圍。因此,需要對12個通道數(shù)據(jù)進行并行操作。每個通道經(jīng)過AD轉換、脈沖壓縮、雜波抑制之后截取8 192點,積累128個PRT的回波以提高信噪比。12通道處理前后結果數(shù)據(jù)量較大,以16 bit整形存儲在SDRAM中。而旋轉因子固化在Flash中,以16bit整形存儲,共需要4 MB空間。
FPGA實現(xiàn)方案包括4個功能部分:NUFFT旋轉因子生成、128點可變旋轉因子FFT運算模塊、軟核架構設計、SDRAM緩存設計。
2.2.1 NUFFT旋轉因子計算
NUFFT旋轉因子的計算循環(huán)較多,不適合由FPGA在線生成,選擇由上位機生成數(shù)據(jù)文件后,寫入FPGA外掛的Flash中,上電后由FPGA讀取到Microblaze軟核外掛的SDRAM緩存中使用。由于雷達系統(tǒng)集成了DSP,也可選擇用DSP來生成旋轉因子,通過EMIF寫入SDRAM。NUFFT旋轉因子生成方式如圖1所示。
圖1 NUFFT旋轉因子生成方式
2.2.2 可變旋轉因子FFT模塊
由于旋轉因子與標準FFT不同,因此,需要設計可自定義旋轉因子的NUFFT計算模塊。基于這個設計思路,設計兩級NUFFT實現(xiàn)方案,不僅簡便易行,而且具有比較高的吞吐量。
(5)
將式(5)計算過程進行分解:
Y(k)=Y(16r+s)=
r=0~15,s=0~7
(6)
由式(6)看出,將128點FFT分解為兩級FFT來進行設計,先按照一定順序分成16組,進行8點FFT,然后,再重組序列分成8組,進行16點FFT。
圖2 可變旋轉因子FFT設計
如圖2所示,F(xiàn)FT模塊均為自定義可輸入旋轉因子FFT模塊,計算過程依舊和標準FFT計算過程相同,使用蝶形單元進行計算,不同的是提供接口由用戶輸入旋轉因子。在使用該模塊時,旋轉因子將持續(xù)按照128幀結構8 192組方式寫入FPGA內(nèi)部提供給該計算模塊。由于算法流程與標準快速傅里葉變換計算流程相同,因此,算法的復乘和復加的次數(shù)明顯減少,該模塊的實現(xiàn)使得NUFFT的計算方便而高效。
2.2.3 軟核架構設計
在設計及仿真過程中,采用Virtex7芯片,設計軟核子系統(tǒng)實現(xiàn)方案,以Microblaze為核心,外掛多種子模塊,以實現(xiàn)NUFFT相關控制功能和數(shù)據(jù)傳輸功能。
如圖3所示,Microblaze負責旋轉因子的寫入及各個模塊的調度。128點可變旋轉因子FFT運算模塊被封裝成IP以供Microblaze設計調用。在Microblaze循環(huán)中不斷將旋轉因子寫入FPGA內(nèi)置緩存FIFO中,并按照FPGA時序邏輯將采樣數(shù)據(jù)按照數(shù)據(jù)幀節(jié)拍載入該模塊中進行計算。
圖3 軟核系統(tǒng)架構
為了減少Microblaze處理器的CPU負載,使用AXI DMA控制器進行offload,AXI DMA控制每次負責搬運24組128點旋轉因子數(shù)據(jù)到AXI 總線旋轉因子緩存。AXI總線旋轉緩存被設計為內(nèi)部只要有大于17組數(shù)據(jù),不輸出中斷,當緩存的旋轉因子小于17組時向Microblaze發(fā)出中斷請求。
此時CPU還有最少125 μs(二維數(shù)據(jù)矩陣更新時間為64 ms,16幀最多允許的時間為64 ms/ 8 192×16=125 μs)來完成下16組參數(shù)的傳輸工作配置。而由于每次傳輸24組數(shù)據(jù),每秒鐘共需要傳輸最多5 334次24幀數(shù)據(jù),也就是CPU每秒響應5 334次數(shù)據(jù)請求中斷。根據(jù)實際項目測試,Microblaze運行在100 MHz情況下,中斷響應能力為20 000次以上,因此設計冗余較大,不會出現(xiàn)時序混亂的情況。
AXI總線的DMA控制器帶寬為800 MB/s左右,因此,24組數(shù)據(jù)所需要的傳輸時間為15.36 μs,傳輸延遲與實際使用數(shù)據(jù)速率比不到10%,數(shù)據(jù)傳輸與使用的冗余較大。
圖4 NUFFT處理流程
如圖4所示是NUFFT處理流程,為了保證結果的正確性,必須要避免旋轉因子和待處理數(shù)據(jù)出現(xiàn)錯幀的情況,兩者要嚴格對應。為此,設計同步信號來保障數(shù)據(jù)與旋轉因子的一致性,每8 192幀數(shù)據(jù)之前需要填充一個幀頭數(shù)據(jù)作為指示信號,同步FPGA內(nèi)部NUFFT處理模塊進行SDRAM采樣點數(shù)據(jù)讀取的同步校準,觸發(fā)相應模塊將數(shù)據(jù)緩存SDRAM讀寫地址同步到第一列。這種方式保證Microblaze寫入的旋轉因子與待處理數(shù)據(jù)嚴格對應。而且,即便是FPGA內(nèi)部計數(shù)器出現(xiàn)故障,也可以被同步信號進行復位,錯誤不會累計持續(xù)存在,最多存在于一組128幀數(shù)據(jù)中。
2.2.4 SDRAM緩存
在NUFFT處理前后,采樣數(shù)據(jù)需要按照128×8 192在SDRAM進行陣列緩存。對于12通道數(shù)據(jù),其數(shù)據(jù)存儲容量需求為:12×128×8 192× 4 B=48 MB,數(shù)據(jù)讀取帶寬為:48 MB/64 ms=750 MB/s,數(shù)據(jù)寫入帶寬是數(shù)據(jù)讀取帶寬的兩倍,因此,讀寫帶寬為2.25 GB/s。SDRAM控制器性能為1 600 MS/s×32 bit=6.4 GB/s,因此,不會出現(xiàn)帶寬瓶頸。
為了便于旋轉因子與采樣點數(shù)據(jù)的嚴格對應與異常處理歸零,采用跳動寫入而使讀取連續(xù)的方式。另外,為了滿足系統(tǒng)的實時性處理要求,對數(shù)據(jù)進行乒乓讀寫。
如圖5所示,設定每幀8 192點數(shù)據(jù)序號為Y,128幀的幀序號為X,那么每個數(shù)據(jù)緩存陣列應當為12×8 192,但是為了保證數(shù)據(jù)讀取的連續(xù),將數(shù)據(jù)的寫入進行跳動,每次寫入12個通道樣點Y之后,將Y+1樣點偏移128地址單元進行寫入,當這樣排列完成后,后續(xù)NUFFT運算讀取數(shù)據(jù)的時候,可以順序讀取到所有12個波束128幀數(shù)據(jù)的Y樣點,直接便可以進行NUFFT運算。另外,當?shù)谝唤M128×8 192×12波束數(shù)據(jù)寫入完成后,寫入模塊直接在SDRAM上另一個64 MB再次進行寫入,實現(xiàn)地址空間的乒乓,使得數(shù)據(jù)處理更加高效。乒乓寫入模塊必須將數(shù)據(jù)寫入狀態(tài)告訴數(shù)據(jù)讀取模塊,以便讀取模塊控制開始從AXI總線讀取旋轉因子并對齊旋轉因子與讀取數(shù)據(jù)。旋轉因子從Microblaze的讀取被設計為阻塞式的,也就是NUFFT模塊沒有查看到足夠的幀數(shù)據(jù)寫入的時候,是不會讀取數(shù)據(jù)進行旋轉因子載入與樣點數(shù)據(jù)讀取的。
圖5 SDRAM存儲設計
SDRAM控制器的突發(fā)模式為256 B,而12波束樣點為48 B,根據(jù)突發(fā)模式,使用3組突發(fā)寫入數(shù)據(jù)一次性寫入16組采樣點數(shù)據(jù),那么在連續(xù)讀取時,將得到16組×128樣點數(shù)據(jù),此時只需要16×12×4×128 B= 98 304 B數(shù)據(jù)緩存,相當于24個36 Kbit的BlockRAM,而XC7VX690T FPGA內(nèi)置了1 470個36 Kbit BlockRAM,經(jīng)實際仿真,驗證了其可行性。
經(jīng)過硬件實現(xiàn)之后,多波束硬件資源使用情況如表2所示。
表2 FPGA資源使用情況
為了驗證算法有效性和硬件實現(xiàn)方案的正確性,對采集到的雷達回波數(shù)據(jù)分別作方位向的快速傅里葉變換和非均勻快速傅里葉變換,比較校正前后相參積累效果。為了效果更加直觀,將其中一個波束FPGA處理結果數(shù)據(jù)通過光纖傳輸?shù)浆F(xiàn)有雷達數(shù)據(jù)記錄回放系統(tǒng),該系統(tǒng)可以實現(xiàn)雷達數(shù)據(jù)的高速傳輸并將數(shù)據(jù)進行存儲。將存儲的文件導出,由Matlab讀取計算結果并畫出相參積累效果圖,如圖6所示。
(a) 校正前效果
(b) 校正后效果圖6 校正前后效果
由圖6可以看出,經(jīng)過NUFFT之后,可以明顯提升相參積累效果,提高弱小目標的檢測能力。經(jīng)計算,信噪比較未作處理的結果提升了3 dB左右,達到了預期效果,為目標檢測奠定了基礎。
本文針對相參積累過程中出現(xiàn)的距離走動,采用NUFFT來進行校正,有效解決了距離走動問題,提升了相參積累效果,提高了對弱小目標的探測能力。同時,使用多波束并行處理來擴大空域覆蓋范圍。針對多波束距離走動校正傳統(tǒng)實現(xiàn)過程中出現(xiàn)的資源不足的問題,提出了一種新的NUFFT硬件實現(xiàn)方案,并驗證了算法和硬件實現(xiàn)方式的正確性。該實現(xiàn)方式顯著減少了運算量和存儲量,使得即使在資源非常有限的FPGA中,也能實現(xiàn)多波束的并行運算,非常適合工程實現(xiàn)。