1.一種基于GPU的長(zhǎng)碼分段重疊局部相關(guān)捕獲方法,其特征在于,包括以下步驟:
步驟S1提取長(zhǎng)碼生成本地參考信號(hào)序列
根據(jù)本地時(shí)間t0,取[t0t0+t]時(shí)間段持續(xù)時(shí)間為t的長(zhǎng)碼數(shù)據(jù),根據(jù)采樣率fs生成本地參考信號(hào)序列p(n),p(n)為{p(0) p(1) … p(tfs)};
步驟S2輸入信號(hào)剝離載波
以采樣率fs對(duì)輸入信號(hào)進(jìn)行采樣,采集(T+t)秒的輸入信號(hào),其中T為預(yù)設(shè)的偽碼搜索不確定時(shí)間范圍,剝離載波后生成輸入信號(hào)復(fù)信號(hào)序列s(n),s(n)為{s(0) s(1) … s[(T+t)fs]};
步驟S3分配數(shù)據(jù)存儲(chǔ)空間,傳輸數(shù)據(jù)到GPU設(shè)備端
在GPU設(shè)備端為輸入信號(hào)復(fù)信號(hào)序列s(n)和本地參考信號(hào)序列p(n)分配存儲(chǔ)空間,使用cudaMemcpy()函數(shù)將輸入信號(hào)復(fù)信號(hào)序列s(n)和本地參考信號(hào)序列p(n)由主機(jī)端拷貝到GPU設(shè)備端;
步驟S4輸入信號(hào)復(fù)信號(hào)序列重疊分段劃分,本地信號(hào)序列補(bǔ)零擴(kuò)展
將輸入信號(hào)復(fù)信號(hào)序列部分重疊分段劃分,得到m個(gè)序列si(n)i=0,1,…,(m-1),將本地信號(hào)序列p(n)補(bǔ)充Tfs/m個(gè)0,得到序列p0m(n);
步驟S5創(chuàng)建傅里葉變換計(jì)劃
調(diào)用函數(shù)cufftPlan1d()、cufftPlanMany()創(chuàng)建傅里葉變換計(jì)劃;
步驟S6批處理計(jì)算信號(hào)序列傅里葉變換
調(diào)用函數(shù)cufftExecC2C()、cufftExecR2C(),批處理計(jì)算分段劃分的m個(gè)序列si(n)的傅里葉變換序列Si(k)和本地信號(hào)序列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信號(hào)檢測(cè)
搜索M(n)的最大值,判斷是否超過(guò)檢測(cè)門(mén)限,并確定碼相位值td。