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