楊 光,賈倩茜,曹 鼎,曹 陽(yáng),潘瑞云,左 霖
(中國(guó)船舶集團(tuán)有限公司第八研究院,南京 211153)
根據(jù)雷達(dá)信號(hào)分辨理論,在保證一定信噪比并實(shí)現(xiàn)最佳處理的前提下,測(cè)距精度和距離分辨力主要取決于信號(hào)的頻率結(jié)構(gòu),它要求信號(hào)具有大的帶寬;測(cè)速精度和速度分辨力取決于信號(hào)的時(shí)間結(jié)構(gòu),它要求信號(hào)具有大的時(shí)寬。理想的雷達(dá)信號(hào)應(yīng)具有大的時(shí)寬帶寬乘積:大時(shí)寬不僅保證速度分辨,更是提高探測(cè)距離的手段;大帶寬則是距離高分辨的前提。單載頻脈沖信號(hào)的時(shí)寬帶寬積近似為1,即其同時(shí)的大時(shí)寬和大帶寬不可兼得。為了解決上述矛盾,雷達(dá)必須采用具有大時(shí)寬帶寬乘積的復(fù)雜信號(hào)形式。脈沖壓縮處理將發(fā)射的寬脈沖信號(hào)壓縮成窄脈沖信號(hào),既可以發(fā)射寬脈沖以提高平均發(fā)射功率和雷達(dá)的檢測(cè)能力,又能保持窄脈沖的距離分辨率。
脈沖壓縮處理算法分為時(shí)域和頻域兩種。警戒搜索雷達(dá)的探測(cè)重復(fù)周期較長(zhǎng),時(shí)域和頻域脈沖壓縮處理的運(yùn)算量都非常大,所以通常采用數(shù)據(jù)分段的方法進(jìn)行并行頻域脈沖壓縮來(lái)進(jìn)一步提高算法的處理速度。并行加速通過(guò)多核多線程方式實(shí)現(xiàn),主要應(yīng)用支持跨平臺(tái)(Linux/Windows)的OpenMP技術(shù)。該技術(shù)是可移植多線程應(yīng)用程序開(kāi)發(fā)的行業(yè)標(biāo)準(zhǔn),在細(xì)粒度(循環(huán)級(jí)別)與粗粒度(函數(shù)級(jí)別)線程技術(shù)上具有很高的效率。OpenMP自動(dòng)將循環(huán)線程化,提高多處理器系統(tǒng)上的應(yīng)用程序性能。用戶不必處理迭代劃分、數(shù)據(jù)共享、線程調(diào)度及同步等低級(jí)別的細(xì)節(jié)。
本文首先介紹基于重疊相加法和重疊保留法的兩種分段頻域脈沖壓縮算法,然后以多核服務(wù)器為硬件平臺(tái),研究基于OpenMP技術(shù)的分段頻域脈沖壓縮算法,最后對(duì)普通頻域脈壓和兩種分段頻域脈壓算法的時(shí)間進(jìn)行對(duì)比測(cè)試,結(jié)果表明分段頻域脈壓可以大大縮短脈沖壓縮處理的時(shí)間。
脈沖壓縮處理在數(shù)學(xué)上可以描述為兩個(gè)序列在時(shí)域的線性卷積問(wèn)題,等價(jià)于頻域相乘。兩個(gè)離散信號(hào)的頻域相乘相當(dāng)于它們?cè)跁r(shí)域做循環(huán)卷積,可由FFT算法實(shí)現(xiàn)。設(shè)序列x(n)和h(n)均為有限長(zhǎng)序列,長(zhǎng)度分別為M和N,其線性卷積為y(n),循環(huán)卷積為yc(n),快速FFT計(jì)算線性卷積的流程如圖1所示。
圖1 FFT計(jì)算線性卷積的流程圖
yc(n)是將y(n)以L為周期進(jìn)行周期延拓后再取主值區(qū)間得到的序列。利用循環(huán)卷積計(jì)算線性卷積的條件為L(zhǎng)≥N+M-1。當(dāng)序列x(n)和h(n)的長(zhǎng)度相差不大時(shí),用循環(huán)卷積計(jì)算線性卷積比直接計(jì)算線性卷積的速度要快得多。當(dāng)應(yīng)用于雷達(dá)脈沖壓縮處理時(shí),序列x(n)和h(n)分別對(duì)應(yīng)于雷達(dá)的重復(fù)周期和發(fā)射脈沖,雷達(dá)的重復(fù)周期一般為發(fā)射脈沖寬度的5~10倍。如果采用上述快速FFT算法直接計(jì)算線性卷積,除要求對(duì)發(fā)射脈沖序列補(bǔ)充很多零點(diǎn)以外,還必須將重復(fù)周期對(duì)應(yīng)的序列全部輸入后才能進(jìn)行FFT計(jì)算,增加了算法的處理時(shí)間,很難實(shí)現(xiàn)實(shí)時(shí)處理。針對(duì)這種情況,可以通過(guò)將長(zhǎng)序列分段并行計(jì)算來(lái)減少算法的處理時(shí)間,這種分段處理方法有重疊相加法和重疊保留法。
設(shè)h(n)的長(zhǎng)度為N,x(n)的長(zhǎng)度為無(wú)限長(zhǎng),取段長(zhǎng)M盡量與N接近,則
(1)
式中,xk(n)=x(n)RM(n-kM)。
所以,x(n)和h(n)的卷積為
(2)
式中,yk(n)=xk(n)*h(n),yk(n)是長(zhǎng)度分別為M和N的兩個(gè)序列的線性卷積,可用FFT算法計(jì)算,F(xiàn)FT的長(zhǎng)度為L(zhǎng)=N+M-1。
分別計(jì)算出各段的卷積yk(n),按式(2)將結(jié)果相加,即完成基于重疊相加法的快速卷積計(jì)算。
設(shè)h(n)的長(zhǎng)度為N,將序列x(n)分段,每段長(zhǎng)為M,然后各段向前多取N-1個(gè)采樣點(diǎn),并在信號(hào)前面補(bǔ)N-1個(gè)零,這樣每一段xk(n)的長(zhǎng)度為L(zhǎng)=N+M-1。對(duì)每一段xk(n)與h(n)進(jìn)行循環(huán)卷積y′k(n)為
y′k(n)=x(n)?h(n)
(3)
y′k(n)長(zhǎng)度為N+M-1,而線性卷積yk(n)=xk(n)*h(n)的長(zhǎng)度為L(zhǎng)=2N+M-2,大于循環(huán)卷積的長(zhǎng)度,必然產(chǎn)生混疊現(xiàn)象,即當(dāng)0≤n≤N-2時(shí),y′k(n)的值混有h((n-m))LRL(n)與xk(m)尾部的卷積值,在N-1≤n≤L-1范圍內(nèi)h((n-m))LRL(n)=h(n-m),此時(shí)y′k(n)與yk(n)相等,將這部分y′k(n)保留下來(lái),最后將各段數(shù)據(jù)銜接起來(lái),就完成了基于重疊保留法的快速線性卷積計(jì)算。
設(shè)雷達(dá)發(fā)射脈沖序列h(n)長(zhǎng)度為N,雷達(dá)回波信號(hào)x(n)長(zhǎng)度為P,基于重疊相加法的分段頻域脈壓算法步驟如下:
(1)根據(jù)h(n)的長(zhǎng)度N計(jì)算FFT點(diǎn)數(shù)Nfft=2^「log2(N)?,根據(jù)x(n)的長(zhǎng)度P計(jì)算分段數(shù)目Nseg=「P/Nfft?;
(2)將h(n)補(bǔ)充零點(diǎn),補(bǔ)到2·Nfft點(diǎn),并計(jì)算長(zhǎng)為2·Nfft點(diǎn)的FFT,得到H(k);
(3)將x(n)補(bǔ)充零點(diǎn),補(bǔ)到Nseg·Nfft點(diǎn)。將x(n)分為Nseg個(gè)長(zhǎng)度為Nfft的子段,將每個(gè)子段xi(n)補(bǔ)充零點(diǎn),補(bǔ)2·Nfft點(diǎn),并計(jì)算長(zhǎng)為2·Nfft點(diǎn)的FFT,得到Xi(k);
(4)計(jì)算Yi(k)=Xi(k)H(k),并求Yi(k)長(zhǎng)為2·Nfft點(diǎn)的IFFT,yi(n)=IFFT[Yi(k)];
基于重疊相加法的分段頻域脈壓實(shí)現(xiàn)過(guò)程如圖2所示。
圖2 基于重疊相加法的分段頻域脈壓實(shí)現(xiàn)過(guò)程
(1)根據(jù)h(n)的長(zhǎng)度N計(jì)算FFT點(diǎn)數(shù)Nfft=2^「log2(N)?,計(jì)算分段后xi(n)的長(zhǎng)度M=Nfft-N+1,根據(jù)分段長(zhǎng)度M(要求M≥N)和x(n)的長(zhǎng)度P計(jì)算分段數(shù)目Nseg=「P/M?;
(2)將h(n)補(bǔ)充零點(diǎn),補(bǔ)到Nfft點(diǎn),并計(jì)算長(zhǎng)為Nfft點(diǎn)的FFT,得到H(k);
(3)將x(n)補(bǔ)充零點(diǎn),補(bǔ)到Nseg·M點(diǎn)。再將x(n)分為Nseg段,每段xi(n)長(zhǎng)度為M,然后各段向前多取N-1個(gè)樣點(diǎn),并將這些樣點(diǎn)置零,如此xi(n)的長(zhǎng)度為M=(Nfft-N+1)+N-1=Nfft點(diǎn)。計(jì)算長(zhǎng)為Nfft點(diǎn)的FFT,得到Xi(k);
(4)計(jì)算Yi(k)=Xi(k)H(k),并求Yi(k)長(zhǎng)為Nfft點(diǎn)的IFFT,yi(n)=IFFT[Yi(k)];
(5)將各段yi(n)中第N至Nfft點(diǎn)的數(shù)據(jù)保留和拼接,得到脈壓結(jié)果,即y((i-1)M+1:iM)=yi(N:Nfft),i=1,2,…,Nseg。
基于重疊保留法的分段頻域脈壓實(shí)現(xiàn)過(guò)程如圖3所示。
圖3 基于重疊保留法的分段頻域脈壓實(shí)現(xiàn)過(guò)程
硬件平臺(tái)為主頻2.6 GHz、96核的服務(wù)器。模擬脈沖寬度為400 μs、脈沖重復(fù)周期為2 500 μs、采樣率為6.25 MHz的線性調(diào)頻信號(hào),在服務(wù)器中通過(guò)讀文件的形式將模擬信號(hào)輸入至服務(wù)器內(nèi)存?;贠penMP的頻域脈壓實(shí)現(xiàn)算法的功能框圖如圖4所示。
圖4 基于OpenMP的頻域脈壓實(shí)現(xiàn)算法的功能框圖
根據(jù)信號(hào)的脈沖寬度和重復(fù)周期數(shù)分別計(jì)算出重疊相加法(以下簡(jiǎn)稱“方法一”)和重疊保留算法(以下簡(jiǎn)稱“方法二”)中FFT的點(diǎn)數(shù)、信號(hào)的分段個(gè)數(shù)。通過(guò)信號(hào)補(bǔ)零處理構(gòu)造輸入信號(hào)并分段,然后開(kāi)辟并行區(qū)域,對(duì)各段數(shù)據(jù)并行頻域脈壓處理,最后將每段數(shù)據(jù)進(jìn)行保留或相加得到分段頻域脈壓結(jié)果。兩種算法的頻域脈壓結(jié)果如圖5所示。可以看出,方法一和方法二的處理結(jié)果與普通頻域脈壓結(jié)果相同,從而驗(yàn)證了兩種分段頻域脈壓算法的正確性。
圖5 基于OpenMP的頻域分段脈壓仿真
服務(wù)器的運(yùn)行結(jié)果如圖6所示。根據(jù)算法的分段數(shù),服務(wù)器開(kāi)辟相應(yīng)個(gè)數(shù)的線程執(zhí)行并行計(jì)算,通過(guò)1 000次仿真實(shí)驗(yàn)測(cè)試算法的運(yùn)行時(shí)間,如表 1所示:方法一的運(yùn)行時(shí)間為158 μs,方法二的運(yùn)行時(shí)間為75.8 μs,兩種算法的時(shí)間效率較傳統(tǒng)普通頻域脈壓方法分別提高了2.76倍和5.76倍。
圖6 服務(wù)器運(yùn)行結(jié)果
表1 算法運(yùn)行時(shí)間統(tǒng)計(jì)
方法一要求分段后的序列長(zhǎng)度M大于等于發(fā)射脈沖序列長(zhǎng)度N,否則對(duì)發(fā)射脈沖進(jìn)行FFT處理時(shí),將會(huì)出現(xiàn)“欠采樣”的現(xiàn)象,所以方法一分段后序列的最小長(zhǎng)度為N,F(xiàn)FT處理的點(diǎn)數(shù)最小值為2N。方法二中分段后的序列“重疊保留”了M個(gè)采樣點(diǎn),不會(huì)出現(xiàn)上述“欠采樣”現(xiàn)象,所以方法二分段FFT處理的點(diǎn)數(shù)最小值為M+N-1。
由于服務(wù)器中的算法庫(kù)通常只支持基2的FFT算法,對(duì)于給定的脈沖長(zhǎng)度N,可能會(huì)出現(xiàn)方法一處理的FFT點(diǎn)數(shù)為方法二兩倍的情況,例如2.3節(jié)中仿真輸入的脈沖寬度和重復(fù)周期分別為400 μs、2 500 μs,采用方法一和方法二處理的FFT的點(diǎn)數(shù)分別為8 192和4 096。所以對(duì)于任意給定的脈沖長(zhǎng)度N,在服務(wù)器線程資源充足的情況下,為了避免出現(xiàn)方法一FFT計(jì)算點(diǎn)數(shù)翻倍的情況,通常選擇方法二執(zhí)行分段頻域脈壓處理。
雷達(dá)信號(hào)處理中脈沖壓縮處理等價(jià)于兩個(gè)序列的線性卷積問(wèn)題。本文首先推導(dǎo)了循環(huán)卷積計(jì)算線性卷積的條件,然后介紹了長(zhǎng)序列卷積加速的兩種分段處理算法,隨后給出了兩種算法在工程應(yīng)用中的實(shí)現(xiàn)過(guò)程,最后在服務(wù)器中采用OpenMP技術(shù)對(duì)算法進(jìn)行實(shí)現(xiàn),并統(tǒng)計(jì)了算法的時(shí)間。研究表明,在服務(wù)器線程數(shù)量充足的情況下,根據(jù)不同的處理方法和分段數(shù)目,基于OpenMP的分段頻域脈壓算法可將傳統(tǒng)的頻域脈壓算法的時(shí)間效率提高2~5倍,具有很高的工程應(yīng)用價(jià)值。