黃頌,巴曉輝, ,蔡伯根 , ,姜維,,王劍,
(1.北京交通大學(xué) 電子信息工程學(xué)院,北京 100044;2.北京交通大學(xué) 智慧高鐵系統(tǒng)前沿科學(xué)中心,北京 100044;3.北京市軌道交通電磁兼容與衛(wèi)星導(dǎo)航工程技術(shù)研究中心,北京 100044;4.北京交通大學(xué) 計算機(jī)與信息技術(shù)學(xué)院,北京 100044)
以我國北斗、美國GPS 為代表的全球衛(wèi)星導(dǎo)航系統(tǒng)(Global Navigation Satellite System,GNSS)能夠?yàn)槿蚍秶鷥?nèi)的用戶提供定位、定速和授時等服務(wù)[1]。隨著衛(wèi)星導(dǎo)航系統(tǒng)在公路、民航等交通運(yùn)輸?shù)膹V泛應(yīng)用,下一代列控系統(tǒng)提出了應(yīng)用BDS系統(tǒng)提供位置服務(wù)的需求。在鐵路建設(shè)中,通過衛(wèi)星導(dǎo)航接收機(jī)測量線路、道岔等關(guān)鍵點(diǎn)的位置坐標(biāo),生成高精度軌道數(shù)字地圖輔助車載傳感器完成列車的高精度定位[2]。在區(qū)間內(nèi),使用衛(wèi)星導(dǎo)航接收機(jī)接收衛(wèi)星信號解算列車的速度和位置,來替代依賴應(yīng)答器與軌道電路進(jìn)行定位、占用檢查的傳統(tǒng)方法,降低了區(qū)間內(nèi)軌旁設(shè)備的數(shù)量,減輕設(shè)備維護(hù)的工作量[3]。利用衛(wèi)星導(dǎo)航系統(tǒng)建立可靠的列車運(yùn)行控制系統(tǒng),保障鐵路的安全性和可維護(hù)性是新型列控系統(tǒng)建設(shè)的關(guān)鍵問題。衛(wèi)星導(dǎo)航接收機(jī)作為提供位置服務(wù)的終端設(shè)備,不同的應(yīng)用場景對其性能參數(shù)有著不同的要求。在用于列車定位過程中,WISS 等[4]結(jié)合衛(wèi)星導(dǎo)航在鐵路定位應(yīng)用領(lǐng)域的需求,歸納形成了GNSS列車定位應(yīng)用技術(shù)開發(fā)指導(dǎo)性文件,為衛(wèi)星導(dǎo)航專用接收機(jī)相關(guān)技術(shù)發(fā)展以及實(shí)用化奠定了基礎(chǔ)。自1997 年起莫斯科COMPASS 設(shè)計局與莫斯科鐵路管理局研制列車安全設(shè)備KLUB-U,利用GPS/GLONASS 導(dǎo)航接收機(jī)及車載線路地圖實(shí)現(xiàn)列車位置的精確檢測,至今為止已在俄羅斯鐵路上千列機(jī)車上安裝使用[5]。但隨著新體制衛(wèi)星信號的播發(fā),多模多頻信號之間的兼容與互操作性給接收機(jī)的設(shè)計與發(fā)展帶來了諸多挑戰(zhàn)。常規(guī)基于ASIC(Application Specific Integrated Circuits)的硬件接收機(jī)因缺乏靈活性及不可編程性,不能對功能結(jié)構(gòu)、計算處理邏輯等進(jìn)行針對性調(diào)整,限制了接收機(jī)的性能。為對用于列車定位的接收機(jī)進(jìn)行相應(yīng)調(diào)整與優(yōu)化,科研人員引入軟件接收機(jī)的思想,采用可編程的軟件化結(jié)構(gòu)完成衛(wèi)星信號的接收處理功能。軟件接收機(jī)可對應(yīng)用于列車的輔助定位算法進(jìn)行驗(yàn)證以及為虛擬應(yīng)答器實(shí)現(xiàn)以及軌道電子地圖的生成提供服務(wù),縮短項目研發(fā)周期,降低列車定位系統(tǒng)的成本。BERTRAN 等[6]分析了鐵路設(shè)備引起的電磁干擾對硬件GPS 接收機(jī)性能的影響,驗(yàn)證了低成本的軟件接收機(jī)用于列車定位方案的必要性。上官偉等[7]設(shè)計實(shí)現(xiàn)了可用于列車定位的軟件接收機(jī),但只能捕獲強(qiáng)信噪比的衛(wèi)星信號。由于鐵路沿線存在山體、建筑、遮擋物等復(fù)雜環(huán)境,此環(huán)境下衛(wèi)星信號微弱(小于30 dBHz),而普通的商用接收機(jī)則不能正確地捕獲跟蹤信號進(jìn)行定位。為此,可利用軟件接收機(jī)的靈活性、通用性等特點(diǎn),根據(jù)不同衛(wèi)星的信號體制、鐵路沿線的應(yīng)用場景設(shè)計相應(yīng)的基帶算法,實(shí)現(xiàn)開闊場景、遮擋場景下衛(wèi)星信號的捕獲。冷啟動情況下,衛(wèi)星信號的捕獲影響列車首次定位的時間,而傳統(tǒng)的軟件接收機(jī)串行實(shí)現(xiàn)的GNSS信號捕獲算法耗時長。隨著GPU 的可編程性的不斷提高,對大規(guī)模并行數(shù)據(jù)處理的計算能力已經(jīng)在云計算、人工智能等領(lǐng)域得到應(yīng)用,為軟件接收機(jī)的實(shí)時化提供了解決方案[8]。捕獲過程可在英偉達(dá)(NVIDIA)推出的CUDA(Compute Unified Device Architecture,即統(tǒng)一計算設(shè)備架構(gòu))上進(jìn)行編程開發(fā),并行處理中頻數(shù)據(jù)。針對基于GPU 并行捕獲國內(nèi)外學(xué)者已進(jìn)行一些研究,HOBIGER 等[9]首次利用GPU實(shí)現(xiàn)了GPS的并行捕獲。HUANG等[10]設(shè)計了一種基于高性能GPU 的實(shí)時軟件接收機(jī)STARx,可并行捕獲跟蹤 GPS,Galileo,GLONASS和BDS系統(tǒng)與一些區(qū)域系統(tǒng)所有頻點(diǎn)的民用信號,滿足實(shí)時性的要求。XU 等[11]設(shè)計了一款基于GPU 的實(shí)時軟件接收機(jī)NAVSDR,在9.75 MHz復(fù)采樣率、相干積分時間為10 ms下捕獲32 顆L1 C/A 信號的速度提升約為CPU 的3.3 倍。楊智博等[12]基于嵌入式Jetson TX2 平臺,在62 MHz 采樣率下利用GPU 將B3I 信號的捕獲速度提高16.83 倍。覃新賢等[13-15]基于CUDA 平臺實(shí)現(xiàn)了北斗B1I 和B3I 信號的快速捕獲。張武迅[16]利用數(shù)據(jù)和導(dǎo)頻雙通道相干組合能捕獲到-145 dBm 的B1C 信號,進(jìn)而實(shí)現(xiàn)B1I 信號的快速位同步。若B1C和B1I的信號總功率一致時,導(dǎo)頻通道的BOC(1,1)分量占B1C 總功率的29/44,只使用導(dǎo)頻進(jìn)行捕獲會損失一定的功率;若數(shù)據(jù)通道和導(dǎo)頻通道聯(lián)合捕獲,也往往忽略BOC(6,1)分量,會損失一定的信號功率;此外若沒有對子碼剝離,捕獲B1C 信號只能使用10 ms 相干積分長度。本文在上述基礎(chǔ)上,結(jié)合基于FFT 的并行碼相位捕獲算法[17],設(shè)計了基于GPU 的強(qiáng)信號與弱信號的并行捕獲架構(gòu)。在鐵路開闊場景下,利用短時間的非相干積分對強(qiáng)信號實(shí)現(xiàn)多通道的并行捕獲;在具有遮擋的條件下,采用全比特法實(shí)現(xiàn)微弱信號的捕獲。本文著重論述了GPU 架構(gòu)下并行信號捕獲的耗時以及弱信號捕獲靈敏度,提出的碼多普勒補(bǔ)償?shù)碾p模并行捕獲方法在強(qiáng)信號場景下提升捕獲的速度,在弱信號場景下提高捕獲靈敏度的同時有效減少了弱信號的捕獲耗時?;贕PU 的強(qiáng)弱信號并行捕獲架構(gòu)場景靈活度高,便于算法驗(yàn)證,可在普通的PC機(jī)上運(yùn)行,設(shè)備成本低。
GPS L1 C/A 和BDS B1I 信號經(jīng)過射頻前端下變頻、采樣后得到的中頻信號分別表示如下:
式中:j 表示衛(wèi)星的PRN 號;A 表示信號幅度;C表示擴(kuò)頻碼;D 表示擴(kuò)頻碼上面調(diào)制的導(dǎo)航電文;NH表示調(diào)制的二級碼;fIF是載波中頻頻率;fd為載波多普勒;φ0是載波初始相位。
衛(wèi)星信號捕獲的實(shí)質(zhì)是將接收信號與本地復(fù)現(xiàn)的載波和擴(kuò)頻碼作相關(guān)運(yùn)算,得到相關(guān)峰值,根據(jù)設(shè)置的閾值進(jìn)行門限判決,從而得到衛(wèi)星PRN號、碼相位和載波多普勒估計值。GPS L1C/A與BDS 的B1I信號采用BPSK 調(diào)制方式,導(dǎo)航電文每20 ms 可能出現(xiàn)一次比特翻轉(zhuǎn),但對于MEO 和IGSO 衛(wèi)星B1I信號上還存在的1 kbps的NH 碼,可能會在相干積分時間內(nèi)出現(xiàn)二級碼翻轉(zhuǎn),導(dǎo)致相干增益的削減。本文采用補(bǔ)零FFT[18]的方法來解決B1I 信號二級碼跳變產(chǎn)生的不利影響,算法原理如圖1所示。
圖1 信號捕獲算法示意圖Fig.1 Schematic diagram of signal acquisition algorithm
為了消除電文翻轉(zhuǎn)或者二級碼跳變產(chǎn)生的影響,每次使用2 ms 的中頻數(shù)據(jù),這是因?yàn)? ms 至少會包含一個完整周期的擴(kuò)頻碼,但最終只保留前1 ms 有效結(jié)果。對于強(qiáng)信號捕獲只需對最終產(chǎn)生的1 ms 相關(guān)值取模進(jìn)行非相干累積得到捕獲檢測量。而對于弱信號捕獲,本文采用全比特法充分利用一個比特的相干積分時間(20 ms),需要將1 ms相關(guān)值進(jìn)行20 次相干累積,再進(jìn)行非相干累加得到最終捕獲檢測量。不同于強(qiáng)信號的是,弱信號捕獲不僅需要對不同載波頻點(diǎn)、碼相位進(jìn)行搜索,還需要搜索20 次導(dǎo)航電文的比特邊沿,并且為了減少因碼多普勒頻移造成的影響,本地復(fù)制的碼相位需根據(jù)當(dāng)前搜索的載波多普勒進(jìn)行調(diào)整。
信號捕獲過程中的點(diǎn)乘、相干、非相干累加等都存在大量的重復(fù)性工作,且每個采樣點(diǎn)的計算都是獨(dú)立的,符合GPU 運(yùn)算單指令多數(shù)據(jù)流(Single Instruction Multiple Data,SIMD)的規(guī)則。其次,不同的衛(wèi)星在搜索每個頻點(diǎn)的處理流程也是相同的,即不同衛(wèi)星、不同搜索頻點(diǎn)之間的相關(guān)運(yùn)算是相對獨(dú)立的運(yùn)算過程,故可以采用并行計算方式來處理。英偉達(dá)公司開發(fā)的CUDA 并行計算架構(gòu)采用了單指令多線程執(zhí)行模型,可以設(shè)計合適的并行結(jié)構(gòu)加速采樣點(diǎn)的計算。
本文設(shè)計的捕獲模塊采用了CPU 與GPU 異構(gòu)并行計算的結(jié)構(gòu),強(qiáng)弱信號并行捕獲架構(gòu)如圖2所示。捕獲模塊包括本地載波產(chǎn)生、本地擴(kuò)頻碼生成、各個多普勒頻點(diǎn)的碼相位搜索、相干與非相干累加、峰值檢測及門限判決等子模塊。其中,載波剝離、FFT 運(yùn)算、向量相乘、IFFT 運(yùn)算、向量累加取模等存在大量數(shù)據(jù)運(yùn)算的操作,可以將其交與GPU 端并行化處理,提升捕獲的速度;而CPU 端則讀取中頻數(shù)據(jù)等復(fù)雜的邏輯運(yùn)算,完成門限判決與存儲捕獲結(jié)果。
圖2 信號并行捕獲架構(gòu)Fig.2 Signal parallel acquisition architecture
從CPU 端讀取中頻信號采樣點(diǎn)并且生成多顆衛(wèi)星的擴(kuò)頻碼,并將中頻信號、擴(kuò)頻碼采樣點(diǎn)由CPU 內(nèi)存拷貝到GPU 顯存中進(jìn)行并行運(yùn)算,最終得到多個1 ms 有效數(shù)據(jù)。對于強(qiáng)信號捕獲進(jìn)行多次非相干積分即可,而微弱信號捕獲利用了20 ms相干積分時間,為防止相干增益被抵消需要并行搜索導(dǎo)航電文的比特邊沿。得到每個碼相位(采樣點(diǎn))的累加值后,最終在GPU 端搜索碼相位的最大峰值,將其拷貝至CPU 中進(jìn)行門限判決得到捕獲結(jié)果。綜上,強(qiáng)弱信號捕獲需具體設(shè)計相應(yīng)的核函數(shù)完成各自計算任務(wù)的并行處理。
CUDA 是由NVIDIA 推出的專門用于GPU 編程開發(fā)的平臺,其編程模型如圖3 所示。CPU 與GPU 通過PCIe 總線相連接來協(xié)同工作,CPU 所在位置稱為為主機(jī)端(host),其包含的存儲空間稱為主機(jī)內(nèi)存;而GPU 所在位置稱為設(shè)備端(device),包含的存儲空間稱為設(shè)備內(nèi)存。CUDA 的線程組織結(jié)構(gòu)[19]如圖3 所示,自上到下可以分為Grid,Block和Thread 3級,多個線程(Thread)組成一個線程塊(Block),多個線程塊構(gòu)成一個網(wǎng)格(Grid),一個網(wǎng)格對應(yīng)著一個核函數(shù)(運(yùn)行在GPU 上的并行計算函數(shù))。在CUDA 中每一個線程都要執(zhí)行核函數(shù),所以每個線程會分配一個唯一的線程號,并且每一級都有其相應(yīng)的編號,從而利用編號使線程執(zhí)行并行計算的任務(wù)。
圖3 CUDA線程組織架構(gòu)Fig.3 CUDA thread organization architecture
在進(jìn)行載波剝離的過程中,本地載波相位的計算是通過數(shù)控振蕩器的形式來實(shí)現(xiàn),每次步進(jìn)的長度是由載波多普勒頻移計算得到,若在CPU以串行的方式計算中頻信號采樣點(diǎn)數(shù)值時,每個點(diǎn)的載波相位和碼相位是通過上一個采樣點(diǎn)與步進(jìn)值累加得到。本文利用GPU 對每個采樣點(diǎn)并行生成,無法依據(jù)上一個采樣點(diǎn)進(jìn)行推導(dǎo),可以根據(jù)線程編號來索引每一個采樣點(diǎn)。因此本地載波生成的并行計算模型可設(shè)計為一維Block 和二維Grid 的結(jié)構(gòu),由此可以得到每個采樣點(diǎn)的載波相位為:
其中:threadIdx.x 為每個Block 內(nèi)線程的列編號,blockIdx.x 為Grid 中Block 的列編號,生成不同頻點(diǎn)的載波可用blockIdx.y來索引。
本地碼相位的生成方式與載波相位相同,也是通過數(shù)控振蕩器的形式來實(shí)現(xiàn),但衛(wèi)星和接收機(jī)之間的相對運(yùn)動會產(chǎn)生碼多普勒效應(yīng),衛(wèi)星信號的擴(kuò)頻碼頻率會發(fā)生偏移,隨著時間的推移,接收信號與本地信號的碼相位將會發(fā)生相對滑動即碼相位誤差將逐漸變大,可能造成相干積分的峰值下降與移位??紤]碼多普勒的碼相位步進(jìn)長度可由式(5)表示:
其中:frf代表衛(wèi)星射頻頻率;fcode為擴(kuò)頻碼速率;fs為采樣率。捕獲強(qiáng)信號時,使用的中頻數(shù)據(jù)短,基本可以忽略接收信號與本地信號的碼相位滑動,只需生成1 ms 長度的偽碼然后補(bǔ)1 ms 長度的0 作為本地碼。本地偽碼以并行多路的形式在GPU 生成,采用二維的Block 和一維的Thread 結(jié)構(gòu),其中Block 的X 維線程索引本地碼相位采樣點(diǎn),Y 維線程索引不同衛(wèi)星本地碼的產(chǎn)生。
在進(jìn)行弱信號的捕獲時,需要進(jìn)行長時間的信號累積來提高靈敏度,并且載波多普勒較大時勢必造成相干積分的損失,因此需考慮碼多普勒的影響。若本地碼相位采樣點(diǎn)將根據(jù)上式計算,則需要連續(xù)生成與中頻信號相同長度的偽碼采樣點(diǎn)進(jìn)行FFT 運(yùn)算,這將占用大量的顯存資源,且進(jìn)行大點(diǎn)數(shù)的FFT 會導(dǎo)致弱信號捕獲時間大大增加。為了減少FFT 耗時、節(jié)省顯存資源,本文提出一種間隔性補(bǔ)償碼多普勒的全比特法:假設(shè)t1為接收的中頻數(shù)據(jù)的某個采樣時刻,在生成本地偽碼時,t1至t1+N(N為20 ms整數(shù)倍)時段內(nèi)Nms的偽碼采樣點(diǎn)可用從t1+N/2 時刻生成的1 ms 長度的偽碼采樣點(diǎn)替代,這樣2Nms長度的FFT運(yùn)算量減少到2 ms(補(bǔ)零后的長度),考慮到碼多普勒對碼相位滑動的影響,需要對從t1+N/2 時刻生成的1 ms 偽碼進(jìn)行碼多普勒補(bǔ)償,由此可以得到經(jīng)過碼多普勒補(bǔ)償后t1+N/2時刻開始生成的碼相位為:
本地偽碼采樣點(diǎn)生成后,將其FFT 結(jié)果取共軛與中頻信號的FFT 結(jié)果進(jìn)行頻域相乘,在點(diǎn)乘時采用多采樣點(diǎn)并行計算可顯著降低相關(guān)運(yùn)算的時間;對相乘的結(jié)果調(diào)用cuFFT 庫進(jìn)行IFFT 運(yùn)算,得到多個IFFT 的前1 ms 有效結(jié)果后,捕獲弱信號需要搜索比特邊沿搜索即20 次并行相干累加,設(shè)計的并行線程模型如圖4所示。
圖4 三維并行架構(gòu)Fig.4 3D parallel architecture
考慮到20 次相干積分中采樣點(diǎn)的相加運(yùn)算、載波頻率的搜索以及比特邊沿的搜索,并行計算模型可設(shè)計為一維的Block 和三維的Grid 的結(jié)構(gòu)。比特邊沿的搜索通過blockIdx.z 索引,不同載波頻點(diǎn)的計算則使用blockIdx.y 來索引,同時在Block內(nèi)每個線程索引1 ms 相干積分的每個采樣點(diǎn)。此外,進(jìn)行相干累加的過程中,BDS 與GPS 不同的是還需要剝離二級碼,即BDS 每1 ms 的采樣點(diǎn)都需要與NH 碼相乘才能進(jìn)行相干累加。經(jīng)過相干積分、非相干積分后的結(jié)果需要在GPU 端進(jìn)行峰值檢測,可利用CUDA的cuBLAS庫實(shí)現(xiàn)數(shù)據(jù)的并行處理,得到峰值所在的位置,最后將結(jié)果從顯存拷貝到內(nèi)存中進(jìn)行門限判決。受限于設(shè)備內(nèi)存的大小,弱信號捕獲需要處理較長的中頻數(shù)據(jù)和搜索大量的載波頻點(diǎn),不可能一次性在GPU 中進(jìn)行所有載波頻點(diǎn)的并行搜索,而強(qiáng)信號捕獲則可以一次進(jìn)行所有頻點(diǎn)的并行搜索。
在Nvidia GPU 內(nèi)部為不同的數(shù)據(jù)結(jié)構(gòu)和內(nèi)存讀取方式定義了一些特殊的內(nèi)存,如寄存器、共享內(nèi)存、紋理內(nèi)存、全局內(nèi)存、鎖頁內(nèi)存等,每種不同類型的內(nèi)存空間都有不同的作用域、生命周期和緩存行為,合理利用內(nèi)存能夠提升程序的并行效率。紋理存儲器(texture memory)是一種只讀存儲器,對數(shù)據(jù)的讀(寫)操作通過專門的texture cache(紋理緩存)進(jìn)行,速度優(yōu)于全局內(nèi)存。由于GPS 與BDS 的偽隨機(jī)序列是固定不變的,偽隨機(jī)序列存放在設(shè)備端的紋理內(nèi)存之中能夠減少偽碼在GPU與CPU之間傳輸所消耗的時間。
頁鎖定內(nèi)存是在主機(jī)內(nèi)存中開辟一塊供GPU交換數(shù)據(jù)而不與磁盤進(jìn)行數(shù)據(jù)交換的空間,具有更高的內(nèi)存讀取速度,其傳輸效率高于被交換的可分頁內(nèi)存。在處理中頻數(shù)據(jù)之前,需要將中頻數(shù)據(jù)采樣點(diǎn)從CPU 的內(nèi)存空間提前傳輸?shù)紾PU 顯存中,當(dāng)弱信號捕獲需要較長的中頻數(shù)據(jù)或者采樣頻率較高時,采樣點(diǎn)內(nèi)存的讀取將花費(fèi)大量的時間,因此可以使用頁鎖定內(nèi)存存放采樣點(diǎn)數(shù)據(jù)。
對于中頻信號進(jìn)行載波剝離時,載波生成模塊載波生成模塊有2種常用方式,一種是在核函數(shù)中調(diào)用sincosf 進(jìn)行單精度浮點(diǎn)三角函數(shù)計算;第二種是使用查詢表的方式得到,將提前計算好的正余弦函數(shù)表存放在紋理內(nèi)存中,每次調(diào)用時根據(jù)相位讀取相應(yīng)數(shù)值,這是一種空間換時間的方式,由于GPU 具有強(qiáng)大的浮點(diǎn)計算能力,上述2種方式所花時間相差不大。
在上一節(jié)的并行計算模型之中,無論是碼相位和載波相位的計算,還是點(diǎn)乘、相干與非相干累加,都可以采用一個線程計算多個采樣點(diǎn)的策略提高程序的運(yùn)行速度。而CUDA 核函數(shù)運(yùn)算之前需要訪問顯存讀取數(shù)據(jù),當(dāng)滿足合并訪問時,能夠?qū)崿F(xiàn)顯存帶寬的最大化利用,提高內(nèi)核函數(shù)的執(zhí)行性能。綜上,設(shè)計核函數(shù)時讓相鄰的線程計算相鄰的點(diǎn),這樣既實(shí)現(xiàn)了合并訪問又保證了單個線程計算多采樣點(diǎn)。
本文實(shí)驗(yàn)的硬件環(huán)境如下。
CPU:Intel Core i7-9750H;
GPU:NVIDIA GeForce GTX 1650,計算能力7.5,顯存8 G。
在硬件層面,GPU 是以線程束的形式在多處理器(Streaming Multiprocessor,SM)來運(yùn)行實(shí)現(xiàn)并行計算,在每個SM 中線程束的占用率越高則說明當(dāng)前程序的并行性越高。共享內(nèi)存與寄存器的占用也是影響程序效率的重要因素,并且GPU 中的硬件資源是有限的,隨著線程數(shù)量的變化,每個線程可以使用的硬件資源也不同,這是影響線程束占用率的主要因素。實(shí)驗(yàn)所使用的GPU 硬件資源如表1所示。
表1 GPU硬件資源Table 1 GPU hardware resource
本文使用模擬器和2018 年7 月京沈客運(yùn)專線黑山北站—沈陽西站區(qū)間實(shí)測軌跡數(shù)據(jù)仿真生成了不同信噪比的中頻測試數(shù)據(jù),以此模擬鐵路的強(qiáng)弱信號場景來進(jìn)行捕獲。在采樣率為16.368 MHz下生成的GPS 和BDS 中頻數(shù)據(jù)頻譜圖如圖5 和圖6所示。由于捕獲衛(wèi)星信號時使用的數(shù)據(jù)在該時段內(nèi)列車的速度與衛(wèi)星的速度變化微小,可認(rèn)為載波多普勒保持不變。結(jié)合以上實(shí)驗(yàn)數(shù)據(jù),本文將從捕獲速度、正確性和捕獲靈敏度分析信號并行捕獲的性能。
圖5 GPS中頻信號頻譜圖Fig.5 Spectrogram of GPS IF signal
圖6 BDS中頻信號頻譜圖Fig.6 Spectrogram of BDS IF signal
實(shí)時性能是衡量軟件接收機(jī)的數(shù)據(jù)計算能力的關(guān)鍵因素,對于軟件接收機(jī)來說,捕獲作為計算最大的模塊,其消耗的時間會影響到冷啟動或衛(wèi)星信號失鎖時重捕的首次定位時間,從而影響到系統(tǒng)接收的實(shí)時性,本小節(jié)對強(qiáng)弱信號環(huán)境下的捕獲速度進(jìn)行分析。
設(shè)置GPS 和BDS 強(qiáng)信號捕獲的相干積分時間為1 ms,捕獲GPS L1C/A 與BDS B1I 采用補(bǔ)零FFT 算法,對于1 ms 的相干積分需要進(jìn)行2 ms 長度的數(shù)據(jù)運(yùn)算。根據(jù)第2節(jié)可知,捕獲模塊主要由本地載波生成及剝離,本地碼生成,F(xiàn)FT/IFFT 和非相干積分等部分組成,當(dāng)采樣率相同時上述模塊中參與運(yùn)算的采樣點(diǎn)的數(shù)量是相同的,因此2種信號捕獲各模塊的運(yùn)算量基本相同,即耗時相同。
表2 給出了62 MHz 采樣率下,單通道以及1 ms 相干積分時間內(nèi)分別搜索1 個與21 個載波多普勒的耗時。表3 列出了不同文獻(xiàn)的GPU 捕獲耗時情況,與文獻(xiàn)[16]相比,非相干次數(shù)為1 時,搜索一顆衛(wèi)星本文消耗的時間是其50%左右;與文獻(xiàn)[10]相比,本文捕獲所消耗的時間是其75%左右,由于同等架構(gòu)下Cuda 核心的數(shù)量會與運(yùn)算速度成正比,因此與本文的加速效果相差不大。
表2 GPS/BDS強(qiáng)信號GPU捕獲耗時Table 2 Strong signal acquisition time of GPS/BDS
表3 捕獲耗時對比Table 3 Comparison of acquisition time
設(shè)置相干積分時間1 ms,非相干次數(shù)20 次,圖7給出了3種采樣率下不同通道數(shù)GPU 捕獲的總耗時。采樣率為16.368 MHz 時,搜索一顆衛(wèi)星且同時搜索21個頻點(diǎn),需要24 ms左右;降低采樣率為5 MHz 時,同時搜索10 顆衛(wèi)星且每顆衛(wèi)星同時搜索21個頻點(diǎn)需要27 ms左右。
圖7 多通道捕獲總耗時Fig.7 Total time for multi-channel acquisition
對于弱信號捕獲可以通過3.2 所述的間隔性補(bǔ)償碼多普勒的全比特法來減少耗時。若處理100 ms的中頻數(shù)據(jù)本地將生成200 ms(補(bǔ)零)長度的偽碼采樣點(diǎn)作FFT 運(yùn)算,這會使捕獲的耗時顯著增加,因此本文用第10 ms開始的1 ms采樣點(diǎn)、第30 ms 開始的1 ms 采樣點(diǎn)、第50 ms 開始的1 ms 采樣點(diǎn)、第70 ms 開始的1 ms 采樣點(diǎn)、90 ms 開始的1 ms 采樣點(diǎn)來替代0 至20 ms,20 ms 至40 ms,40至60 ms,60 m 至80 ms,80 m 至100 ms 的20 ms偽碼采樣點(diǎn),因此每個載波頻點(diǎn)200 ms 長度的偽碼FFT 運(yùn)算量降低到了10 ms。表4 給出了采用間隔性補(bǔ)償碼多普勒和連續(xù)補(bǔ)償碼多普勒的全比特法(對每一毫秒的偽碼都進(jìn)行碼多普勒補(bǔ)償)時,2種采樣率下GPS 與BDS 弱信號捕獲的運(yùn)行耗時,并且同樣采樣率下捕獲2種弱信號參與運(yùn)算采樣點(diǎn)的數(shù)量是相同的,因此捕獲各模塊的運(yùn)算量相同。
表4 GPS/BDS弱信號GPU捕獲耗時Table 4 Weak signal acquisition time of GPS/BDS
當(dāng)采樣率為5 MHz 時,采用間隔性補(bǔ)償碼多普勒的全比特法搜索單顆GPS/BDS 所消耗的時間相比于連續(xù)補(bǔ)償碼多普勒的全比特法減少了111.64 ms;在16.368 MHz 搜索單顆GPS/BDS 消耗的時間減少了778.05 ms。因?yàn)椴捎瞄g隔性補(bǔ)償碼多普勒的方法從產(chǎn)生本地偽碼、補(bǔ)零、本地偽碼FFT 三方面顯著減少了捕獲耗時,且采樣率越高、使用的數(shù)據(jù)越長,減少耗時越明顯。此外,由于中頻數(shù)據(jù)過長、搜索的頻點(diǎn)數(shù)目過多和比特邊沿的搜索,無疑將占用大量的顯存資源,使得GPU的并行資源達(dá)到最大限制,因此捕獲模塊就變成串并混合的形式。
為驗(yàn)證不同信噪比下2種并行捕獲架構(gòu)的正確捕獲能力,仿真產(chǎn)生了不同載噪比的GPS/BDS 中頻信號測試數(shù)據(jù)。強(qiáng)星捕獲的測試數(shù)據(jù)參數(shù)設(shè)置為:采樣率16.368 MHz,中頻4.092 MHz。對20 ms長度的中頻數(shù)據(jù)進(jìn)行20次非相干積分的基礎(chǔ)上啟動多顆星、多頻點(diǎn)的并行捕獲,表5 列出了GPS和BDS不同載噪比下的捕獲結(jié)果。
表5 GPS/BDS強(qiáng)信號捕獲結(jié)果Table 5 Acquisition results of GPS/BDS strong singal
運(yùn)行GPU 程序?qū)⒉东@的碼相位、多普勒頻移與中頻數(shù)據(jù)的原始多普勒頻移、碼相位對比,以此來驗(yàn)證捕獲的正確性。由表4~5 可知,進(jìn)行多次獨(dú)立的捕獲實(shí)驗(yàn),對不同的衛(wèi)星設(shè)置不同且較高的載噪比,GPS 與BDS 檢測到的碼相位和多普勒頻移與原始值均在誤差范圍內(nèi),證明了強(qiáng)信號并行捕獲的正確性。當(dāng)信號強(qiáng)度減弱到33 dBHz時,僅僅是非相干積分已經(jīng)不能完成弱信號的捕獲,必須延長相干積分時間來提高信噪比。
為了驗(yàn)證本文算法對GPS/BDS 弱信號的捕獲性能,實(shí)驗(yàn)仿真對比了間隔性補(bǔ)償碼多普勒與連續(xù)補(bǔ)償碼多普勒的全比特法在大多普勒頻偏、低載噪比下的信號檢測概率。弱信號捕獲的測試數(shù)據(jù)參數(shù)設(shè)置與表3相同,GPS和BDS設(shè)置采樣率為5 MHz;中頻頻率1.25 MHz;碼片初始值延遲666個碼片,載波多普勒頻移為4 500 Hz。圖8 和圖9分別表示GPS和BDS在不同載噪比下運(yùn)行1 000次蒙特卡洛仿真的檢測概率比較結(jié)果。仿真結(jié)果表明采用間隔補(bǔ)償碼多普勒在捕獲靈敏度上與連續(xù)補(bǔ)償碼多普勒的捕獲靈敏度相差甚微,在載噪比為25 dBHz下的GPS捕獲概率能達(dá)到90%,BDS的捕獲概率能達(dá)到80%,證明了本文算法的有效性,提高了基于GPU的弱信號捕獲的速度。
圖8 GPS算法性能對比Fig.8 Algorithms performance comparison of GPS
圖9 BDS算法性能對比Fig.9 Algorithms performance comparison of BDS
根據(jù)以上總結(jié)與對比,結(jié)合信號捕獲在不同線路及運(yùn)行場景中的實(shí)際需求,基于GPU 的強(qiáng)信號捕獲顯著提升了捕獲速度,可用于開闊環(huán)境、衛(wèi)星觀測條件較好的線路區(qū)域,而基于GPU 的微弱信號方案適用于沿線部分區(qū)域信號觀測條件多變、衛(wèi)星信號存在遮擋弱信號的鐵路線路。
1) 針對開闊、存在遮擋的鐵路場景,將京沈高鐵的實(shí)測軌跡數(shù)據(jù)作為依據(jù),模擬了生成不同載噪比的場景文件(中頻數(shù)據(jù)),利用設(shè)計的雙模捕獲引擎實(shí)現(xiàn)了GPS/BDS強(qiáng)弱信號捕獲。
2) 針對傳統(tǒng)信號捕獲耗時較長的問題,引入軟件無線電的思想,設(shè)計了基于GPU 與CPU 異構(gòu)并行計算架構(gòu)的衛(wèi)星信號捕獲方法,詳細(xì)分析了信號捕獲過程的并行計算模型、GPU 內(nèi)存結(jié)構(gòu)以及捕獲耗時。針對弱信號捕獲提出一種間斷性補(bǔ)償碼多普勒的全比特法來提升捕獲速度,同時保證了弱信號的捕獲靈敏度。
3) 由于鐵路線網(wǎng)規(guī)模龐大,沿線環(huán)境復(fù)雜,還存在無衛(wèi)星信號場景的情況,后續(xù)工作將進(jìn)一步研究偽衛(wèi)星信號的捕獲方法以及新型信號體制(BOC調(diào)制)的衛(wèi)星信號捕獲算法,設(shè)計面向鐵路應(yīng)用的衛(wèi)星/偽衛(wèi)星多系統(tǒng)軟件接收機(jī),在開闊、存在遮擋以及完全遮擋的情況下能夠給列車提供位置服務(wù),配合車載傳感器實(shí)現(xiàn)列車的無縫定位。