Cpu輔助gpu實(shí)現(xiàn)擴(kuò)頻信號(hào)快速捕獲方法
【技術(shù)領(lǐng)域】 本發(fā)明設(shè)及航天測(cè)控通信技術(shù)領(lǐng)域,具體為一種利用CPU輔助圖形處理器GPU實(shí)現(xiàn)擴(kuò)頻 信號(hào)快速捕獲方法。
【背景技術(shù)】
[0002] 擴(kuò)頻測(cè)控體制由于其具有安全保密性好、抗干擾能力強(qiáng)、測(cè)距精度高、支持多星測(cè) 控等優(yōu)點(diǎn),在衛(wèi)星測(cè)控領(lǐng)域得到了廣泛運(yùn)用?,F(xiàn)有的擴(kuò)頻測(cè)控信號(hào)接收機(jī)主要的開發(fā)平臺(tái) 是W現(xiàn)場(chǎng)可編程口陣列FPGA及數(shù)字信號(hào)處理器DSP為代表的專用硬件設(shè)備。其優(yōu)點(diǎn)是處理 速度快,但是成本較高,且一旦設(shè)計(jì)成型后兼容性與可配置性較差,限制了其使用的靈活 性。近年來隨著通用處理器在計(jì)算速度、總線帶寬、低時(shí)延控制和并行計(jì)算等方面處理能力 不斷提高,使得采用高性能計(jì)算平臺(tái)對(duì)擴(kuò)頻信號(hào)進(jìn)行軟件解調(diào)成為了可能。針對(duì)擴(kuò)頻測(cè)控 體制設(shè)計(jì)的軟件接收機(jī)利用高性能服務(wù)器平臺(tái),按照不同的需求W軟件信號(hào)處理可重構(gòu)的 方式實(shí)現(xiàn)信號(hào)解調(diào)、測(cè)距、測(cè)速等功能的集成。與現(xiàn)有基于專用硬件平臺(tái)開發(fā)的硬件接收機(jī) 相比,擴(kuò)頻測(cè)控體制軟件接收機(jī)在功能的可擴(kuò)展性、開發(fā)的成本、周期、可靠性、效率等方面 更具優(yōu)勢(shì);此外借助于高性能服務(wù)器日益增長的計(jì)算能力,擴(kuò)頻測(cè)控體制軟件接收機(jī)可為 測(cè)控新體制的驗(yàn)證提供良好的仿真驗(yàn)證平臺(tái)。
[0003] 擴(kuò)頻基帶信號(hào)處理流程中首先需要完成擴(kuò)頻碼相位、載波頻偏等參數(shù)的捕獲,獲 得運(yùn)些初始同步參數(shù)后,接收機(jī)才能進(jìn)行后續(xù)的跟蹤、解調(diào)W及距離、速度測(cè)量,捕獲算法 的性能在很大程度上決定了擴(kuò)頻接收機(jī)的性能。對(duì)于擴(kuò)頻軟件接收機(jī)而言,快速擴(kuò)頻信號(hào) 捕獲是實(shí)現(xiàn)實(shí)時(shí)軟件接收機(jī)的前提條件。在擴(kuò)頻體制軟件接收機(jī)中,捕獲所用數(shù)據(jù)通?;?于某段時(shí)間內(nèi)采集到的數(shù)據(jù)塊,如果軟件接收機(jī)實(shí)時(shí)工作,采集設(shè)備采集到的數(shù)據(jù)在捕獲 模塊工作時(shí)不斷被寫入計(jì)算機(jī)緩存。如果捕獲時(shí)間過長,一方面在捕獲處理時(shí)間段內(nèi)采集 數(shù)據(jù)會(huì)占用較多的計(jì)算機(jī)內(nèi)存,容易導(dǎo)致計(jì)算機(jī)內(nèi)存泄露;另一方面,在捕獲處理時(shí)間段內(nèi) 采集到的大量數(shù)據(jù)對(duì)后端解調(diào)線程帶來了較大的處理負(fù)擔(dān),如果后端解調(diào)線程無法及時(shí)處 理運(yùn)些數(shù)據(jù),可能會(huì)導(dǎo)致軟件實(shí)時(shí)解調(diào)功能失效。
[0004] 目前,在通用計(jì)算機(jī)平臺(tái)上實(shí)現(xiàn)的擴(kuò)頻軟件接收機(jī)大部分利用CPU進(jìn)行擴(kuò)頻信號(hào) 捕獲操作。信號(hào)的捕獲過程本質(zhì)上是載波頻率和P師馬相位的二維捜索過程,包含大量的并 行計(jì)算過程。而CPU為優(yōu)化串行代碼設(shè)計(jì),將大量的晶體管用于控制和緩存等非計(jì)算功能 上,因此運(yùn)種實(shí)施方式并行計(jì)算能力弱,由此導(dǎo)致了捕獲時(shí)間較長;另一方面,由于衛(wèi)星運(yùn) 動(dòng)的動(dòng)態(tài)較大會(huì)導(dǎo)致接收信號(hào)上存在較大的載波多普勒,需要在頻域上劃分較多的頻率 槽,進(jìn)一步加劇了信號(hào)捕獲算法的計(jì)算復(fù)雜度。
【發(fā)明內(nèi)容】
[000引本發(fā)明針對(duì)現(xiàn)有技術(shù)在通用計(jì)算機(jī)平臺(tái)上串行實(shí)現(xiàn)的擴(kuò)頻體制測(cè)控信號(hào)捕獲速 度慢的缺點(diǎn),提供一種移植性好,靈活性較高,能夠提升計(jì)算效率,并有效提高擴(kuò)頻信號(hào)捕 獲速度,CPU輔助GPU實(shí)現(xiàn)的擴(kuò)頻信號(hào)快速捕獲方法。
[0006] 本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種擴(kuò)頻信號(hào)快速捕獲方法,在特 征在于包括如下步驟:捕獲線程啟動(dòng)前,主線程在中央處理器CPU上產(chǎn)生本地載波與偽隨機(jī) PN碼信號(hào);主線程依照偽隨機(jī)PN碼相位捜索點(diǎn)數(shù)L、頻率開槽數(shù)M、捕獲數(shù)據(jù)長度N,W及對(duì)應(yīng) 頻率槽上的載波多普勒分別產(chǎn)生NXM與(NA) XM個(gè)本地載波與P師馬信號(hào),并通過PCIE總線 拷貝到圖形處理器GPU顯存中;捕獲線程在GPU上執(zhí)行載波多普勒與PN碼相位二維捜索操 作,當(dāng)捕獲線程啟動(dòng)時(shí),主線程將采集設(shè)備上報(bào)的N點(diǎn)零中頻復(fù)信號(hào)拷貝到GPU顯存中,接 著,捕獲線程在GPU中依照頻率槽的順序進(jìn)行L點(diǎn)P師馬相位并行捜索操作;在每個(gè)頻率槽上, 捕獲線程首先在GPU上并行執(zhí)行采集數(shù)據(jù)N點(diǎn)數(shù)字下變頻操作,隨后捕獲線程對(duì)數(shù)字下變頻 后的數(shù)據(jù)并行地在L個(gè)PN碼相位上依次執(zhí)行PN碼解擴(kuò)、相干累加、取平方、K點(diǎn)快速傅氏變換 FFTW及取模運(yùn)算后得到LXK個(gè)FFT數(shù)據(jù),捕獲線程捜索運(yùn)LXK個(gè)數(shù)據(jù)中的峰值W及峰值下 標(biāo)并將其拷貝到主線程;主線程在CPU上依照捕獲線程輸出的FFT信號(hào)峰值下標(biāo)完成載波多 普勒與P師馬相位計(jì)算,主線程在CPU串行捜索每個(gè)頻率槽對(duì)應(yīng)峰值的最大值,將峰值最大頻 率槽對(duì)應(yīng)的P師馬相位與載波多普勒頻偏值作為捕獲結(jié)果輸出。
[0007] 本發(fā)明相比現(xiàn)有技術(shù)具有如下有益效果: 有效提高了擴(kuò)頻信號(hào)捕獲速度。本發(fā)明在提升擴(kuò)頻信號(hào)捕獲速度方面,充分利用了 CPU 與GPU中內(nèi)存資源豐富、PCIE總線傳輸速率高的特點(diǎn),將傳統(tǒng)方法中在GPU上實(shí)現(xiàn)的產(chǎn)生本 地載波與PN碼信號(hào)操作前移到CPU中實(shí)現(xiàn)。在捕獲線程啟動(dòng)前即在CPU利用查表法產(chǎn)生好本 地載波與PN碼信號(hào),并拷貝到GPU顯存中。運(yùn)種空間換時(shí)間方式優(yōu)化了捕獲流程,消除了捕 獲線程中產(chǎn)生本地載波與P師馬信號(hào)所需的數(shù)學(xué)運(yùn)算。有效提高了擴(kuò)頻信號(hào)捕獲速度。
[0008] 提升了計(jì)算效率。本發(fā)明充分利用GPU與CPU在并行計(jì)算與邏輯判斷上的優(yōu)勢(shì),合 理地在CPU與GPU上分配了計(jì)算工作。P師馬相位與載波多普勒二維捜索過程中包含大計(jì)算量 的數(shù)字下變頻、解擴(kuò)、取平方、FFTW及最大值捜索等并行操作,將運(yùn)些運(yùn)算安排在GPU中實(shí) 現(xiàn)。而當(dāng)GPU完成二維捜索后,所需計(jì)算量大幅度降低,但在計(jì)算載波多普勒時(shí)需要進(jìn)行邏 輯判斷,將運(yùn)些運(yùn)算安排在CPU中實(shí)現(xiàn)。通過運(yùn)種安排方式,充分利用GPU與CPU的優(yōu)勢(shì),提升 了計(jì)算效率。
[0009] 移植性好,靈活性較高。本發(fā)明只需在計(jì)算機(jī)上擴(kuò)展一塊支持CUDA架構(gòu)的顯卡即 可滿足硬件要求,無需設(shè)計(jì)開發(fā)??诘挠布O(shè)備,整個(gè)程序全部采用高級(jí)語言方式進(jìn)行開 發(fā),捕獲過程中所需的P師馬相位捜索點(diǎn)數(shù)L、頻率開槽數(shù)M、捕獲數(shù)據(jù)長度N、FFT點(diǎn)數(shù)K均可通 過軟件靈活配置,適應(yīng)了不同信息與擴(kuò)頻速率條件下快速擴(kuò)頻碼捕獲參數(shù)調(diào)整的要求。
[0010] 本發(fā)明還可W應(yīng)用于衛(wèi)星通信、衛(wèi)星導(dǎo)航等系統(tǒng)軟件接收機(jī)中。
【附圖說明】
[0011] 圖1是本發(fā)明對(duì)應(yīng)的擴(kuò)頻信號(hào)快速捕獲方法組成示意圖。
[0012] 圖2是本發(fā)明本地P師馬信號(hào)產(chǎn)生器組成圖。
【具體實(shí)施方式】
[0013] 下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明。
[0014] 參閱圖1,在W下描述的實(shí)施例中,本發(fā)明所述CPU輔助GPU實(shí)現(xiàn)擴(kuò)頻信號(hào)快速捕獲 方法,包括=個(gè)步驟:主線程在CPU上產(chǎn)生本地載波與P師馬信號(hào),捕獲線程在GPU上實(shí)現(xiàn)載波 多普勒與P師馬相位二維捜索,主線程在CPU上依照捕獲線程輸出的FFT信號(hào)峰值及峰值下標(biāo) 完成載波多普勒與P師馬相位計(jì)算。捕獲線程啟動(dòng)前,主線程在CPU上產(chǎn)生本地載波與P師馬信 號(hào)。主線程依照P師馬相位捜索點(diǎn)數(shù)L、頻率開槽數(shù)M、捕獲數(shù)據(jù)長度N,W及對(duì)應(yīng)頻率槽上的載 波多普勒分別產(chǎn)生N X M與(N-L) XM個(gè)本地載波與PN碼信號(hào),并通過PCIE總線拷貝到GPU顯 存中。捕獲線程在GPU上執(zhí)行載波多普勒與P師馬相位二維捜索操作。當(dāng)捕獲線程啟動(dòng)時(shí),主 線程將采集設(shè)備上報(bào)的N點(diǎn)零中頻復(fù)信號(hào)拷貝到GPU顯存中;接著,捕獲線程在GPU中依照頻 率槽的順序進(jìn)行L點(diǎn)P師馬相位并行捜索操作;在每個(gè)頻率槽上,捕獲線程首先在GPU上并行 執(zhí)行采集數(shù)據(jù)N點(diǎn)數(shù)字下變頻操作,隨后捕獲線程對(duì)數(shù)字下變頻后的數(shù)據(jù)并行地在L個(gè)PN碼 相位上依次執(zhí)行PN碼解擴(kuò)、相干累加、取平方、K點(diǎn)FFTW及取模運(yùn)算后得到LXK個(gè)FFT數(shù)據(jù), 捕獲線程捜索運(yùn)LXK個(gè)數(shù)據(jù)中的峰值W及峰值下標(biāo)并將其拷貝到主線程。主線程在CPU上 依照捕獲線程輸出的FFT信號(hào)峰值下標(biāo)完成載波多普勒與P師馬相位計(jì)算,主線程在CPU串行 捜索每個(gè)頻率槽對(duì)應(yīng)峰值的最大值,將峰值最大頻率槽對(duì)應(yīng)的P師馬相位與載波多普勒頻偏 值作為捕獲結(jié)果輸出。
[0015] 首先,主線程在捕獲線程啟動(dòng)之前預(yù)先在CPU中依照P師馬相位捜索點(diǎn)數(shù)U頻率開 槽數(shù)M、捕獲數(shù)據(jù)長度NW及對(duì)應(yīng)頻率槽上的載波多普勒分別產(chǎn)生NXM與(N-L) XM個(gè)本地載 波與P師馬信號(hào)。為提升計(jì)算速度,主線程采用查表方式產(chǎn)生本地載波與P師馬信號(hào),主線程利 用擴(kuò)頻碼速率Rc,第i個(gè)頻率槽上對(duì)應(yīng)的載波多普勒值fi,擴(kuò)頻信號(hào)中屯、載波頻率時(shí),采樣率 Fs,計(jì)算出與第i個(gè)頻率槽對(duì)應(yīng)的PN碼控制字FCWpn與載波頻率控制字FCWcarrier分別為:
參閱圖2,本地PN碼信號(hào)產(chǎn)生流程為:主線程將第i個(gè)頻率槽對(duì)應(yīng)的PN碼頻率控制字轉(zhuǎn) 換為無符號(hào)32位整數(shù)類型,隨著數(shù)據(jù)下標(biāo)的增加不斷累加得到一個(gè)無符號(hào)64位整數(shù)類型的 累加變量,主線程對(duì)累加變量作右移32位操作并對(duì)PN碼長取模運(yùn)算,最后查表輸出長度為 N-L的PN碼信號(hào)。本地載波信號(hào)產(chǎn)生流程為:主線程將第i個(gè)頻率槽對(duì)應(yīng)的載波頻率控制字 轉(zhuǎn)換為無符號(hào)32位整數(shù)類型數(shù)據(jù),并隨著數(shù)據(jù)下標(biāo)的增加不斷累加得到一個(gè)無符號(hào)32位整 數(shù)類型的累加變量,對(duì)累加變量作右移16位操作,查表輸出長度為N的本地載波碼信號(hào)。上 述