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