本發(fā)明涉及衛(wèi)星導(dǎo)航技術(shù)領(lǐng)域,特別是長周期偽碼擴(kuò)頻信號捕獲的方法,更具體地涉及一種基于GPU的長碼直接捕獲方法。
背景技術(shù):
長周期偽碼擴(kuò)頻信號抗干擾性能相比短碼更強(qiáng),在短碼受干擾條件下,只能依賴長碼的直接捕獲,因此長碼直接捕獲技術(shù)是導(dǎo)航領(lǐng)域的一個(gè)研究熱點(diǎn)。偽碼擴(kuò)頻信號捕獲階段需要搜索確定偽碼相位和多普勒初始值,長碼直接捕獲需要搜索的碼相位不確定范圍相比短碼更大,通常是短碼搜索范圍的103~104倍,因此如何快速搜索確定偽碼相位,是其中需要解決的關(guān)鍵問題。
GPU中有大量的浮點(diǎn)運(yùn)算單元,通過利用數(shù)以百計(jì)的處理器核心,GPU計(jì)算FFT的速度可提升10倍。近幾年,基于GPU的通用計(jì)算技術(shù)開始應(yīng)用于工程計(jì)算領(lǐng)域,相關(guān)專家和研究機(jī)構(gòu)對GPU通用計(jì)算在導(dǎo)航信號接收領(lǐng)域的應(yīng)用進(jìn)行了部分研究,對基于GPU的捕獲研究主要集中在短碼捕獲分析上,還未見相關(guān)材料對基于GPU的長碼捕獲進(jìn)行研究。
技術(shù)實(shí)現(xiàn)要素:
針對長周期偽碼直接捕獲時(shí)大量碼相位搜索問題,本發(fā)明提出一種基于GPU的長碼分段重疊局部相關(guān)捕獲方法。
基于GPU的長碼分段重疊局部相關(guān)捕獲方法,流程如圖1,包括以下步驟:
步驟S1提取長碼生成本地參考信號序列
根據(jù)本地時(shí)間t0,取[t0 t0+t]時(shí)間段持續(xù)時(shí)間為t的長碼數(shù)據(jù),根據(jù)采樣率fs生成本地參考信號序列p(n),p(n)為{p(0) p(1) … p(tfs)};
步驟S2輸入信號剝離載波
以采樣率fs對輸入信號進(jìn)行采樣,采集(T+t)秒的輸入信號,其中T為預(yù)設(shè)的偽碼搜索不確定時(shí)間范圍,剝離載波后生成輸入信號復(fù)信號序列s(n),s(n)為{s(0) s(1) … s[(T+t)fs]}。
步驟S3分配數(shù)據(jù)存儲(chǔ)空間,傳輸數(shù)據(jù)到GPU設(shè)備端
在GPU設(shè)備端為輸入信號復(fù)信號序列s(n)和本地參考信號序列p(n)分配存儲(chǔ)空間,使用cudaMemcpy()函數(shù)將輸入信號復(fù)信號序列s(n)和本地參考信號序列p(n)由主機(jī)端拷貝到GPU設(shè)備端;
步驟S4輸入信號復(fù)信號序列重疊分段劃分,本地信號序列補(bǔ)零擴(kuò)展
將輸入信號復(fù)信號序列部分重疊分段劃分,得到m個(gè)序列si(n)i=0,1,…,(m-1),將本地信號序列p(n)補(bǔ)充Tfs/m個(gè)0,得到序列p0m(n);
步驟S5創(chuàng)建傅里葉變換計(jì)劃
調(diào)用函數(shù)cufftPlan1d()、cufftPlanMany()創(chuàng)建傅里葉變換計(jì)劃;
步驟S6批處理計(jì)算信號序列傅里葉變換
調(diào)用函數(shù)cufftExecC2C()、cufftExecR2C(),批處理計(jì)算分段劃分的m個(gè)序列si(n)的傅里葉變換序列Si(k)和本地信號序列p0m(n)的傅里葉變換序列P0m(k);
步驟S7頻域共軛乘運(yùn)算
在GPU中逐點(diǎn)計(jì)算Si(k)與P0m(k)的共軛乘積,得到序列Yim(k);
步驟S8逆FFT得到多段相關(guān)值序列,拼接后得到整個(gè)相關(guān)值序列
調(diào)用函數(shù)cufftExecC2C()計(jì)算Yim(k)的逆FFT,得到m個(gè)循環(huán)相關(guān)序列yim(n),截取每個(gè)相關(guān)序列的前Tfs/m個(gè)值yi(n),拼接后得到整個(gè)不確定時(shí)間范圍內(nèi)的相關(guān)值序列r(n);
步驟S9計(jì)算相關(guān)值序列模值
在GPU中逐點(diǎn)計(jì)算相關(guān)值序列r(n)的模值,得到模值序列M(n);
步驟S10信號檢測
搜索M(n)的最大值,判斷是否超過檢測門限,并確定碼相位值td。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
針對長周期偽碼直接捕獲時(shí)大量碼相位搜索問題,本發(fā)明提出了一種基于GPU的長碼分段重疊局部相關(guān)捕獲方法,將輸入信號序列分段處理,每一段信號序列的搜索處理過程采用基于GPU的長碼部分相關(guān)直接捕獲方法,各段信號序列搜索并行批處理。對輸入數(shù)據(jù)分段劃分,降低了數(shù)據(jù)處理的規(guī)模和存儲(chǔ)要求,適應(yīng)不同性能的GPU實(shí)現(xiàn),對數(shù)據(jù)的劃分同時(shí)有利于多核處理器對數(shù)據(jù)進(jìn)行并行任務(wù)處理,可以充分發(fā)揮多核的并行處理優(yōu)勢?;贕PU的長碼分段重疊局部相關(guān)捕獲方法,利用GPU中數(shù)以百計(jì)的浮點(diǎn)運(yùn)算單元并行進(jìn)行FFT運(yùn)算,提高了長碼偽碼相位捕獲速度,對衛(wèi)星導(dǎo)航擴(kuò)頻信號軟件接收有著重大意義。
本發(fā)明方法與平均搜索法、XFAST等方法結(jié)合使用可以進(jìn)一步提高搜索速度。該方法提高了長碼直接捕獲的實(shí)時(shí)性,實(shí)現(xiàn)了基于GPU的長碼直接時(shí)域捕獲,相比在FPGA中實(shí)現(xiàn)的方法,修改靈活方便,可廣泛應(yīng)用于信號監(jiān)測接收、中心站信號處理的長碼直接捕獲。
隨著GPU運(yùn)算能力的進(jìn)一步增強(qiáng),基于GPU能夠在頻域搜索更多的頻率單元,能夠進(jìn)行更長時(shí)間的非相干累加,從而能夠處理更大動(dòng)態(tài)、更低信噪比的信號,提高系統(tǒng)處理性能指標(biāo)。
附圖說明
圖1是本發(fā)明提供的基于GPU的長碼分段重疊局部相關(guān)捕獲方法流程圖;
圖2是本發(fā)明提供長碼分段重疊局部相關(guān)捕獲方法中輸入信號劃分方法示意圖;
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
對于長周期偽碼,以GPS P碼為例,偽碼周期為7天,在整個(gè)捕獲處理時(shí)間段內(nèi)偽碼不重復(fù),不能像短碼一樣進(jìn)行整個(gè)偽碼周期的相關(guān)運(yùn)算。
首先根據(jù)本地時(shí)間t0,取[t0 t0+t]時(shí)間段持續(xù)時(shí)間為t的長碼數(shù)據(jù),生成采樣率為fs、持續(xù)時(shí)間為t的本地參考信號序列p(n),p(n)為{p(0) p(1) … p(tfs)}。將本地參考信號序列p(n)補(bǔ)充Tfs個(gè)0,得到p0(n),即
記偽碼速率為fp,以采樣率fs(fs>2fp)對輸入信號進(jìn)行采樣,采集(T+t)秒的輸入信號,其中T為不確定時(shí)間范圍,剝離載波后的輸入信號復(fù)信號序列為s(n),s(n)為{s(0) s(1) … s[(T+t)fs]}。在整個(gè)待搜索的相位空間,共有Tfs個(gè)可能的偽碼相位值。s(n)與p0(n)的相關(guān)值序列r(n)計(jì)算如式(2):
其中n=0,1,…TfS,i是一個(gè)中間變量,從0到(T+t)fs的自然數(shù)。
為了加速相關(guān)搜索的速度,采用FFT計(jì)算相關(guān)值序列r(n)。短周期偽碼擴(kuò)頻信號用FFT方法計(jì)算相關(guān)值時(shí),由于偽碼的周期重復(fù)性,在處理時(shí)間段內(nèi)的相關(guān)搜索為循環(huán)相關(guān)運(yùn)算,可直接應(yīng)用FFT算法。長周期偽碼擴(kuò)頻信號在處理時(shí)間段內(nèi)偽碼不重復(fù),信號相關(guān)搜索過程為輸入信號與本地信號的線性相關(guān)運(yùn)算,需要轉(zhuǎn)化成循環(huán)相關(guān)后才能應(yīng)用FFT算法。將s(n)的周期拓展序列記為p0(n)的周期拓展序列記為則s(n)與p0(n)的循環(huán)相關(guān)序列yT+t(n)計(jì)算如式(3):
其中RT+t(n)為矩形序列,表示取長度為(T+t)fs的主值序列。
記s(n)的離散傅里葉變換為S(k),p0(n)的離散傅里葉變換為P0(k),yT+t(n)的離散傅里葉變換為YT+t(k),由(3)式可得
其中表示P0(k)的共軛 (4)
對頻域計(jì)算的結(jié)果取逆FFT可得
yT+t(n)=IFFT[YT+t(k)] (5)
取循環(huán)相關(guān)序列yT+t(n)的前Tfs+1個(gè)值,舍棄后tfs個(gè)值,即得到不確定時(shí)間范圍T內(nèi)的相關(guān)值序列r(n)。
如果輸入信號序列較長時(shí),可將輸入信號序列分段處理,每一段信號序列的搜索處理過程均采用上述的基于GPU的長碼部分相關(guān)直接捕獲方法,各段信號搜索處理過程可利用多核處理器并行進(jìn)行,其輸入信號序列的劃分如圖2所示。
將輸入信號序列劃分為m段,每一段序列持續(xù)時(shí)間為T/m+t,序列重疊時(shí)間與本地參考信號序列持續(xù)時(shí)間相同,均為t。則各子序列si(n)為:
{s(iTfs/m),s(iTfs/m+1),…,s[(i+1)Tfs/m+tfs]}其中i=0,1,…,(m-1)
將序列p(n)補(bǔ)充Tfs/m個(gè)0,得到p0m(n),應(yīng)用上述推導(dǎo)的局部相關(guān)碼相位空間搜索方法,計(jì)算出si(n)與p0m(n)的相關(guān)值子序列yi(n):
{y(iTfs/m),y(iTfs/m+1),…,y[(i+1)Tfs/m]}
所有的yi(n)拼接后即可得到整個(gè)不確定時(shí)間范圍內(nèi)的相關(guān)值序列r(n)。
GPU中具有數(shù)以百計(jì)的浮點(diǎn)處理器,其快速傅里葉變換庫cuFFT充分利用大量的處理器資源進(jìn)行FFT運(yùn)算,在cuFFT函數(shù)庫中,F(xiàn)FT變換函數(shù)可以同時(shí)對輸入的多組不同的數(shù)據(jù)進(jìn)行FFT變換批處理操作,據(jù)此可以實(shí)現(xiàn)長碼分段重疊局部相關(guān)捕獲方法。
本發(fā)明提出了一種基于GPU的長碼分段重疊局部相關(guān)捕獲方法,流程如圖1,其包括以下步驟:
步驟S1提取長碼生成本地參考信號序列
根據(jù)本地時(shí)間t0,取[t0 t0+t]時(shí)間段持續(xù)時(shí)間為t的長碼數(shù)據(jù),根據(jù)采樣率fs生成本地參考信號序列p(n),p(n)為{p(0) p(1) … p(tfs)};
步驟S2輸入信號剝離載波
以采樣率fs對輸入信號進(jìn)行采樣,采集(T+t)秒的輸入信號,其中T為預(yù)設(shè)的偽碼搜索不確定時(shí)間范圍,剝離載波后生成輸入信號復(fù)信號序列s(n),s(n)為{s(0) s(1) … s[(T+t)fs]}。
步驟S3分配數(shù)據(jù)存儲(chǔ)空間,傳輸數(shù)據(jù)到GPU設(shè)備端
在GPU設(shè)備端為輸入信號復(fù)信號序列s(n)和本地參考信號序列p(n)分配存儲(chǔ)空間,使用cudaMemcpy()函數(shù)將輸入信號復(fù)信號序列s(n)和本地參考信號序列p(n)由主機(jī)端拷貝到GPU設(shè)備端;
步驟S4輸入信號復(fù)信號序列重疊分段劃分,本地信號序列補(bǔ)零擴(kuò)展
將輸入信號復(fù)信號序列部分重疊分段劃分,得到m個(gè)序列si(n)i=0,1,…,(m-1),將本地信號序列p(n)補(bǔ)充Tfs/m個(gè)0,得到序列p0m(n);
步驟S5創(chuàng)建傅里葉變換計(jì)劃
調(diào)用函數(shù)cufftPlan1d()、cufftPlanMany()創(chuàng)建傅里葉變換計(jì)劃;
步驟S6批處理計(jì)算信號序列傅里葉變換
調(diào)用函數(shù)cufftExecC2C()、cufftExecR2C(),批處理計(jì)算分段劃分的m個(gè)序列si(n)的傅里葉變換序列Si(k)和本地信號序列p0m(n)的傅里葉變換序列P0m(k);
步驟S7頻域共軛乘運(yùn)算
在GPU中逐點(diǎn)計(jì)算Si(k)與P0m(k)的共軛乘積,得到序列Yim(k);
步驟S8逆FFT得到多段相關(guān)值序列,拼接后得到整個(gè)相關(guān)值序列
調(diào)用函數(shù)cufftExecC2C()計(jì)算Yim(k)的逆FFT,得到m個(gè)循環(huán)相關(guān)序列yim(n),截取每個(gè)相關(guān)序列的前Tfs/m個(gè)值yi(n),拼接后得到整個(gè)不確定時(shí)間范圍內(nèi)的相關(guān)值序列r(n);
步驟S9計(jì)算相關(guān)值序列模值
在GPU中逐點(diǎn)計(jì)算相關(guān)值序列r(n)的模值,得到模值序列M(n);
步驟S10信號檢測
搜索M(n)的最大值,判斷是否超過檢測門限,并確定碼相位值td。
假定虛警概率Pfa=10-8,則由公式(6)
式中σn為噪聲均方根值,得到判決門限Vt為6.07σn,由此算得需要的最小信噪比S/N為12.7dB。載噪比C/N0與信噪比關(guān)系如式(7):
C/N0=S/N-10logT (7)
式中T表示相干積分時(shí)間。
當(dāng)存在多普勒誤差fe時(shí),由式(8)算得相關(guān)損耗L:
L=20log[sinc(πfeT)] (8)
由式(7)和式(8),當(dāng)輸入信號C/N0>55.7dB·Hz時(shí),本地參考信號序列持續(xù)時(shí)間t取0.05ms,在多普勒范圍[-5kHz,5kHz]內(nèi),相關(guān)損耗不超過1dB。利用本發(fā)明方法搜索確定偽碼相位后,再利用一組分段相關(guān)值序列進(jìn)行多普勒頻率估計(jì),為了提高頻率估計(jì)的準(zhǔn)確度,將分段相關(guān)值序列后補(bǔ)零,對補(bǔ)零序列FFT變換估計(jì)出信號多普勒初始值。當(dāng)輸入信號C/N0>42.7dB·Hz時(shí),本地參考信號序列持續(xù)時(shí)間t取1ms,在多普勒范圍[-250Hz,250Hz]內(nèi),相關(guān)損耗不超過1dB,為了覆蓋整個(gè)多普勒不確定范圍,需要利用頻域移位的方法將本地補(bǔ)零序列多普勒變換依次移位補(bǔ)償搜索多普勒,重復(fù)搜索21個(gè)多普勒槽,從而完成長碼的時(shí)頻二維搜索。
以上包含了本發(fā)明優(yōu)選實(shí)施例的說明,這是為了詳細(xì)說明本發(fā)明的技術(shù)特征,并不是想要將發(fā)明內(nèi)容限制在實(shí)施例所描述的具體形式中,依據(jù)本發(fā)明內(nèi)容主旨進(jìn)行的其他修改和變型也受本專利保護(hù)。本發(fā)明內(nèi)容的主旨是由權(quán)利要求書所界定,而非由實(shí)施例的具體描述所界定。