国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向鐵路定位裝備測試的實(shí)時(shí)衛(wèi)星信號(hào)生成方法

2022-02-02 12:15:04劉宇航巴曉輝蔡伯根
鐵道學(xué)報(bào) 2022年12期
關(guān)鍵詞:線程接收機(jī)載波

劉宇航,巴曉輝,2,3,蔡伯根,2,3,姜 維,2,3,王 劍,2,3

(1.北京交通大學(xué) 電子信息工程學(xué)院, 北京 100044;2.北京交通大學(xué) 軌道交通控制與安全國家重點(diǎn)實(shí)驗(yàn)室,北京 100044;3.北京市電磁兼容與衛(wèi)星導(dǎo)航工程技術(shù)研究中心, 北京 100044)

隨著衛(wèi)星導(dǎo)航系統(tǒng)在世界范圍內(nèi)迅速發(fā)展,GPS、GLONASS、GALILEO、BDS及相應(yīng)的衛(wèi)星導(dǎo)航增強(qiáng)系統(tǒng)已經(jīng)開始在多種交通運(yùn)輸系統(tǒng)中發(fā)揮作用,“‘十四五’鐵路科技創(chuàng)新規(guī)劃”中也提出推進(jìn)北斗衛(wèi)星導(dǎo)航技術(shù)與鐵路技術(shù)裝備、工程建造、運(yùn)輸服務(wù)等領(lǐng)域深度融合的目標(biāo)。鐵路建造方面,在路軌建設(shè)中通過衛(wèi)星導(dǎo)航接收機(jī)測量線路、關(guān)鍵點(diǎn)的高精度位置坐標(biāo),輔助軌旁設(shè)備的安裝,同時(shí)為列控軌道數(shù)字地圖庫提供了數(shù)據(jù)[1]。在橋梁建設(shè)中,利用導(dǎo)航接收機(jī)監(jiān)測橋梁形變,實(shí)現(xiàn)全天候、高精度的動(dòng)態(tài)監(jiān)測,提升了施工建設(shè)的智能化水平[2]。鐵路裝備方面,通過在站內(nèi)建立衛(wèi)星導(dǎo)航差分基準(zhǔn)站,實(shí)現(xiàn)差分定位功能,提高了列車站內(nèi)定位精度。在區(qū)間內(nèi),結(jié)合現(xiàn)代衛(wèi)星導(dǎo)航系統(tǒng)多模、多個(gè)信號(hào)發(fā)射頻段的特點(diǎn),利用衛(wèi)星精密定位技術(shù)感知列車的位置、速度以替代依賴應(yīng)答器、軌道電路進(jìn)行定位校正的傳統(tǒng)手段,降低了區(qū)間內(nèi)應(yīng)答器等軌旁設(shè)備的數(shù)量,減輕了設(shè)備維護(hù)的工作量[3-4]。在鐵路運(yùn)營方面,車站工作人員、設(shè)備維護(hù)人員的位置也可通過便攜的小型接收機(jī)獲得,通過實(shí)時(shí)監(jiān)測當(dāng)前線路的占用狀況協(xié)調(diào)工作人員的位置,避免因調(diào)度問題而出現(xiàn)事故,最大限度保障列車及維護(hù)人員的安全[5]。應(yīng)用衛(wèi)星導(dǎo)航定位技術(shù)建立面向列車運(yùn)行控制、維護(hù)維修、應(yīng)急救援等業(yè)務(wù)方向的人、車、物定位網(wǎng)絡(luò)是下一代列控系統(tǒng)建設(shè)的關(guān)鍵問題。

作為提供位置服務(wù)的終端設(shè)備,衛(wèi)星導(dǎo)航接收機(jī)的穩(wěn)定性和可靠性直接影響列控系統(tǒng)的運(yùn)行安全,針對(duì)接收機(jī)的性能進(jìn)行測試是貫穿列控系統(tǒng)研發(fā)使用周期的重要環(huán)節(jié),生成針對(duì)不同場景的衛(wèi)星模擬信號(hào)則是接收機(jī)性能測試的重要手段。在設(shè)備研發(fā)階段,需要模擬列車在多種復(fù)雜場景下的運(yùn)行情況驗(yàn)證列控系統(tǒng)的可靠性,如超長隧道、坡道、高速運(yùn)行、制動(dòng)等場景。通過軟件信號(hào)模擬技術(shù)設(shè)計(jì)對(duì)應(yīng)的場景,可以彌補(bǔ)場景數(shù)據(jù)的缺失,為接收機(jī)和列控系統(tǒng)的仿真測試提供平臺(tái)。在列車運(yùn)營階段,我國西部地區(qū)鐵路普遍面臨著高寒、高海拔等惡劣的自然條件,車載設(shè)備損耗率高,需要定期在現(xiàn)場對(duì)車載設(shè)備進(jìn)行檢修,驗(yàn)證設(shè)備在不同場景下的定位能力。面向運(yùn)營、維護(hù)、救援等人員的便攜定位設(shè)備同樣需要對(duì)定位性能進(jìn)行測試,保障工作人員的安全。為此,一種依據(jù)所需場景自定義快速生成衛(wèi)星模擬信號(hào)的方法對(duì)于新型列控系統(tǒng)的研發(fā)、維護(hù)具有非常重要的意義。

獲取衛(wèi)星模擬信號(hào)一般使用信號(hào)模擬器,傳統(tǒng)的模擬器一般基于CPU+FPGA架構(gòu)進(jìn)行開發(fā),新一代的硬件信號(hào)模擬器可以支持四大衛(wèi)星導(dǎo)航系統(tǒng)以及QZSS、SBAS、IRNSS等星基增強(qiáng)系統(tǒng)的信號(hào)模擬,可實(shí)現(xiàn)上百個(gè)通道并行的高動(dòng)態(tài)信號(hào)仿真[6]。但傳統(tǒng)的衛(wèi)星導(dǎo)航信號(hào)模擬器體型較大,不便于在現(xiàn)場對(duì)車載設(shè)備進(jìn)行測試,并且價(jià)格昂貴,不適合大規(guī)模推廣。而兼顧了便攜性的小型化硬件模擬器,往往會(huì)面臨性能不足的問題,工作時(shí)間和信號(hào)通道數(shù)量都無法達(dá)到要求。使用信號(hào)回放儀也可以產(chǎn)生衛(wèi)星信號(hào),但是信號(hào)回放設(shè)備只能播發(fā)已經(jīng)采集的真實(shí)信號(hào)文件,無法根據(jù)場景設(shè)計(jì)可見衛(wèi)星數(shù)量,載噪比等關(guān)鍵參數(shù),不滿足靈活設(shè)計(jì)測試場景的需求。

隨著通信行業(yè)的技術(shù)發(fā)展,軟件定義無線電(Software Defined Radio,SDR)技術(shù)以其靈活性高,研發(fā)周期短等優(yōu)點(diǎn)逐步發(fā)揮著越來越重要的作用。在基帶信號(hào)處理方面,大量學(xué)者基于軟件無線電的思想研究了新型的衛(wèi)星信號(hào)模擬算法[7],但通常在高采樣率下因計(jì)算量過大而出現(xiàn)信號(hào)生成過程實(shí)時(shí)性差的缺點(diǎn)[8]。近年來圖形處理器(Graphic Process Unit, GPU)的發(fā)展為軟件無線電的研究提供了新的解決方案,主流的GPU可以集成在大眾消費(fèi)級(jí)別的PC機(jī)上,并且其對(duì)大規(guī)模并行數(shù)據(jù)處理的加速能力已經(jīng)在機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等領(lǐng)域得到應(yīng)用。利用GPU并行計(jì)算的優(yōu)點(diǎn),使用CPU與GPU結(jié)合的異構(gòu)計(jì)算方式可以解決無法實(shí)時(shí)生成信號(hào)的問題。相比于傳統(tǒng)的衛(wèi)星信號(hào)模擬器,基于GPU生成模擬信號(hào)的方法具有場景靈活度高、實(shí)時(shí)性好、便于算法驗(yàn)證等優(yōu)點(diǎn)[9];并且可模擬信號(hào)通道的數(shù)量僅與芯片算力相關(guān),不需要額外增加電路,結(jié)構(gòu)靈活[10],可以在普通的PC機(jī)上運(yùn)行,設(shè)備成本低,體積小,便于攜帶和推廣。

針對(duì)基于GPU生成衛(wèi)星信號(hào)的算法已經(jīng)進(jìn)行過一些研究,文獻(xiàn)[11-12]針對(duì)GNSS信號(hào)設(shè)計(jì)了并行算法,將中頻數(shù)據(jù)中采樣點(diǎn)的生成分配到各個(gè)線程之中,實(shí)現(xiàn)了多通道高采樣率衛(wèi)星信號(hào)的實(shí)時(shí)生成,文獻(xiàn)[13]對(duì)GPU的內(nèi)存模型進(jìn)行了改進(jìn),通過重復(fù)調(diào)用寄存器存儲(chǔ)來減少對(duì)共享內(nèi)存的使用,提高了程序運(yùn)行效率,并實(shí)時(shí)生成了BDS B1信號(hào)和BDS RDSS信號(hào)。文獻(xiàn)[14]使用兩塊高性能GPU實(shí)現(xiàn)了對(duì)GNSS頻譜的全覆蓋。以上研究充分體現(xiàn)了GPU在信號(hào)模擬器方面的巨大潛力,但對(duì)于軟件信號(hào)生成方法來說,由于計(jì)算機(jī)位長有限導(dǎo)致數(shù)值有效數(shù)字位數(shù)固定,在對(duì)相位進(jìn)行累加時(shí),超出有效數(shù)字外的部分會(huì)因累加引入誤差影響信號(hào)的準(zhǔn)確性。此處改進(jìn)了相位累加計(jì)算過程,詳細(xì)分析了基于GPU的并行計(jì)算模型并推導(dǎo)了在信號(hào)生成過程中典型參數(shù)的計(jì)算方式。依據(jù)真實(shí)線路數(shù)據(jù)設(shè)計(jì)了測試案例,驗(yàn)證了軟件信號(hào)生成方法在定位裝備測試方向的實(shí)用性和可靠性。

1 衛(wèi)星信號(hào)數(shù)學(xué)模型

GNSS信號(hào)模擬源產(chǎn)生的信號(hào)為接收機(jī)內(nèi)部經(jīng)過射頻前端下變頻、采樣后的中頻信號(hào)。在編寫信號(hào)模擬算法時(shí),可以通過對(duì)接收機(jī)中頻信號(hào)公式離散化計(jì)算采樣點(diǎn)的具體數(shù)值。以GPS L1C/A為例,在信號(hào)射頻發(fā)射端信號(hào)構(gòu)成為

( 1 )

在信號(hào)傳播過程中,到達(dá)接收機(jī)端的信號(hào)受到對(duì)流層、電離層、多徑效應(yīng)等影響。精確計(jì)算射頻信號(hào)的傳播時(shí)間不僅需要考慮衛(wèi)星與接收機(jī)之間的距離、衛(wèi)星自身時(shí)鐘誤差,還需要補(bǔ)償傳播路徑中的誤差。

首先,計(jì)算衛(wèi)星和接收機(jī)之間的實(shí)際距離帶來的信號(hào)傳播時(shí)間,需要獲得發(fā)射時(shí)刻的衛(wèi)星位置和接收時(shí)刻的接收機(jī)位置。由星歷解算得到的衛(wèi)星位置和接收機(jī)位置都表示在ECEF坐標(biāo)系下,隨著地球自轉(zhuǎn),這兩個(gè)時(shí)刻ECEF坐標(biāo)系在空間中的位置已經(jīng)發(fā)生變化。需要將發(fā)射時(shí)刻衛(wèi)星位置的ECEF坐標(biāo)旋轉(zhuǎn)到接收時(shí)刻的ECEF坐標(biāo)系進(jìn)行計(jì)算。采用迭代的方法獲得高精度的傳播時(shí)間,依據(jù)星歷推算接收時(shí)刻衛(wèi)星和接收機(jī)之間的距離,獲得信號(hào)傳播時(shí)間初值,在此基礎(chǔ)上對(duì)傳播時(shí)間T′P按照以下步驟進(jìn)行迭代:

Step1通過信號(hào)傳播時(shí)間得到信號(hào)發(fā)射時(shí)間,依據(jù)衛(wèi)星軌道參數(shù)推算衛(wèi)星在發(fā)射時(shí)刻位置。

Step2將Step1得到的位置按照式( 2 )旋轉(zhuǎn)到接收時(shí)刻的ECEF坐標(biāo)系中。

式中:PR為在接收時(shí)刻ECEF坐標(biāo)系下的坐標(biāo);PT為發(fā)射時(shí)刻衛(wèi)星位置的ECEF坐標(biāo);Ωe為地球自轉(zhuǎn)角速度。

Step3計(jì)算衛(wèi)星與接收機(jī)之間的距離,得到新的信號(hào)傳播時(shí)間。若兩次傳播時(shí)間相差小于閾值則認(rèn)為當(dāng)前傳播時(shí)間為準(zhǔn)確值,否則進(jìn)行Step2。

根據(jù)Klobuchar模型,使用導(dǎo)航電文中包含的8個(gè)電離層參數(shù)計(jì)算電離層延遲誤差△ρiono,但是若直接設(shè)置電離層延遲誤差為diono=△ρiono,對(duì)于接收機(jī)將不存在電離層誤差影響,因此需要調(diào)整電離層誤差模型,該模型可消除60%左右的電離層誤差,將電離層誤差設(shè)置為diono=△ρiono/0.6[15]。

對(duì)于對(duì)流層誤差dtrop,因?yàn)閷?dǎo)航電文中不包含關(guān)于氣象信息的內(nèi)容,所以依據(jù)簡化Hopfield模型進(jìn)行處理

( 3 )

式中:θ為衛(wèi)星仰角。

對(duì)于鐘差Δtclk,計(jì)算式如下

( 4 )

將信號(hào)經(jīng)過對(duì)流層帶來的距離誤差折算到傳播時(shí)間上,與衛(wèi)星鐘差一并計(jì)入信號(hào)傳播時(shí)間。而電離層對(duì)載波相位有加速作用,對(duì)碼相位有延遲作用,所以由電離層誤差帶來的傳播時(shí)延單獨(dú)列出,由此可以得到接收機(jī)射頻端的信號(hào)為

( 5 )

射頻信號(hào)經(jīng)過下變頻、濾波,頻譜被搬移到基帶,此時(shí)中頻信號(hào)SIF(t)變?yōu)?/p>

( 6 )

式( 6 )得到的中頻數(shù)字信號(hào)模型建立了信號(hào)傳播時(shí)間與載波相位、碼相位和電文比特之間的關(guān)系。計(jì)算每一個(gè)采樣點(diǎn)的信號(hào)傳播時(shí)間和信號(hào)發(fā)射時(shí)間就可以得到采樣點(diǎn)的具體數(shù)值。

2 基于GPU的模擬器工作原理

在中頻信號(hào)的生成過程中,每一個(gè)采樣點(diǎn)的生成方式都是依據(jù)式( 6 )調(diào)制得到,具有重復(fù)性。對(duì)于每一個(gè)采樣點(diǎn)而言,調(diào)制方式并不復(fù)雜,符合GPU運(yùn)算單指令多數(shù)據(jù)流(Single Instruction Multiple Data, SIMD)的規(guī)則,可以采用適當(dāng)?shù)牟⑿薪Y(jié)構(gòu)加速軟件信號(hào)生成過程。

2.1 信號(hào)生成軟件架構(gòu)

信號(hào)生成軟件使用CPU與GPU異構(gòu)并行計(jì)算的結(jié)構(gòu),軟件工作邏輯見圖1。中頻信號(hào)采樣點(diǎn)由信號(hào)功率、偽隨機(jī)碼、載波、導(dǎo)航電文四部分組成,其中,CPU主要計(jì)算信道模型的參數(shù),獲取載波相位、碼相位和導(dǎo)航電文的初始值。GPU負(fù)責(zé)將CPU計(jì)算得到的參數(shù)帶入到公式中,得到每一個(gè)中頻信號(hào)采樣點(diǎn)的值并將得到的數(shù)據(jù)拷貝到主機(jī)內(nèi)存中。

圖1 信號(hào)生成軟件工作邏輯

2.2 并行計(jì)算模型設(shè)計(jì)

在CPU與GPU異構(gòu)計(jì)算架構(gòu)中,將CPU及主機(jī)中包含的存儲(chǔ)空間稱為主機(jī)內(nèi)存,將GPU包含的存儲(chǔ)空間稱為設(shè)備內(nèi)存。受限于設(shè)備內(nèi)存的大小,不可能一次性在GPU中生成所有的中頻數(shù)據(jù),所以對(duì)數(shù)據(jù)進(jìn)行分塊是必要的。在式( 6 )中,每一個(gè)采樣點(diǎn)對(duì)應(yīng)一個(gè)信號(hào)傳播時(shí)間Tp,但在每個(gè)采樣點(diǎn)都計(jì)算一次信號(hào)傳播時(shí)間所需計(jì)算量過大,同時(shí)考慮到信號(hào)傳播時(shí)間在較短的時(shí)間間隔內(nèi)變化不大,設(shè)時(shí)間間隔為△t,可以認(rèn)為在△t內(nèi)信號(hào)傳播時(shí)間是不變的,并以△t作為中頻數(shù)據(jù)的分塊依據(jù),調(diào)用一次核函數(shù)生成的信號(hào)時(shí)長為△t。

多普勒頻移可以通過兩次相鄰的信號(hào)傳播時(shí)間計(jì)算得到

( 7 )

式中:Rn為第n次得到的偽距;fd為多普勒頻移;△t為接收機(jī)軌跡采樣點(diǎn)之間的時(shí)間間隔;λL1為GPS L1C/A碼信號(hào)的波長。

導(dǎo)航電文可以通過RINEX (Receiver INdependent EXchange format)文件中包含的軌道參數(shù)和電離層等數(shù)據(jù)逆向求解得到,也可以直接使用接收機(jī)解調(diào)得到的導(dǎo)航電文。每顆衛(wèi)星的偽隨機(jī)碼序列提前通過移位寄存器生成,與導(dǎo)航電文共同保存在設(shè)備內(nèi)存之中。

碼相位和載波相位的計(jì)算通過數(shù)控振蕩器的形式來實(shí)現(xiàn),每次步進(jìn)的長度由多普勒頻移計(jì)算得到,以串行的方式計(jì)算中頻信號(hào)采樣點(diǎn)數(shù)值時(shí),每個(gè)點(diǎn)的載波相位和碼相位都可以通過上一個(gè)采樣點(diǎn)與步進(jìn)值累加得到,但是在GPU中每個(gè)采樣點(diǎn)都是并行生成,無法依據(jù)上一個(gè)采樣點(diǎn)進(jìn)行推導(dǎo)。通過分析GPU的線程組織結(jié)構(gòu)[17]可知(圖2),所有線程自上到下可以分為Grid、Block和Thread三級(jí),每一級(jí)都有獨(dú)立的編號(hào),并且該編號(hào)是按照順序排列的,可以利用編號(hào)定位到某一具體線程,相當(dāng)于每個(gè)線程都有一個(gè)獨(dú)立的ID。

圖2 GPU線程組織結(jié)構(gòu)

在以上對(duì)多普勒頻移的計(jì)算中,可認(rèn)為在△t內(nèi)多普勒頻移是不變的,所以在同一時(shí)間間隔內(nèi)的所有采樣點(diǎn)都有相同的碼相位步進(jìn)和載波相位步進(jìn),可以通過每個(gè)線程的ID與相位步進(jìn)相乘得到這個(gè)采樣間隔內(nèi)所有采樣點(diǎn)的碼片相位和載波相位。

依據(jù)線程ID與相位步進(jìn)的關(guān)系,可以得到圖3所示的并行線程模型。

圖3 GPU并行線程模型

在計(jì)算采樣點(diǎn)的過程中,由于采樣頻率一般為幾十兆赫茲,采樣點(diǎn)數(shù)量K遠(yuǎn)大于可見衛(wèi)星數(shù)量N,所以將并行計(jì)算模型設(shè)計(jì)為二維的Block和一維的Grid相組合的結(jié)構(gòu)。在Block中,每一行代表對(duì)應(yīng)的可見衛(wèi)星,每一列代表中頻信號(hào)在該時(shí)刻的采樣點(diǎn),由于Block內(nèi)對(duì)線程數(shù)量的限制,在一個(gè)采樣間隔內(nèi)的采樣點(diǎn)需要M個(gè)Block來計(jì)算

M×K≥samples

( 8 )

式中:samples為一個(gè)時(shí)間間隔內(nèi)所有采樣點(diǎn)數(shù)量。

由此可以得到每個(gè)采樣點(diǎn)的載波相位carrphase和碼相位codephase分別為

( 9 )

依據(jù)公式( 6 ),利用CPU提前計(jì)算載波相位初值、碼相位初值、導(dǎo)航電文及信號(hào)功率,可以在GPU每一個(gè)線程中生成一個(gè)采樣點(diǎn),生成中頻信號(hào)的公式可以改寫為

(10)

式中:N、M、K分別為通道數(shù)量、Block數(shù)量、一個(gè)Block中包含的采樣點(diǎn)數(shù)量。

在軟件實(shí)現(xiàn)的過程中,受限于計(jì)算機(jī)字長,使用雙精度浮點(diǎn)數(shù)計(jì)算相位步進(jìn)位的有效數(shù)字為15~16位,同時(shí)中頻信號(hào)采樣率一般在107~108Hz之間,如果不對(duì)相位進(jìn)行修正,相位偏差必然會(huì)隨著采樣時(shí)間增長而加大。事實(shí)上,累加得到的相位和每個(gè)△t時(shí)刻計(jì)算的初始相位是同一個(gè)值,可以利用這一點(diǎn)對(duì)相位進(jìn)行校正。下面對(duì)這一點(diǎn)進(jìn)行證明,碼相位初始值由信號(hào)發(fā)射時(shí)間得到

(11)

式中:[x]表示對(duì)x向0取整。

信號(hào)發(fā)射時(shí)間可以表示為

(12)

同理可得,以一個(gè)時(shí)間間隔之后的時(shí)刻作為信號(hào)起始時(shí)間所對(duì)應(yīng)的發(fā)射時(shí)間

(13)

兩式相減可以得到兩次發(fā)射時(shí)間之間的時(shí)間間隔

Δtt=Δtr-(Rn+1-Rn)/c

(14)

由此可得到兩次接收時(shí)刻之間相差的碼相位ΔPcode為

ΔPcode=[Δtr-(Rn+1-Rn)/c]×fcode

(15)

在GPU中通過相位步進(jìn)與線程編號(hào)相乘計(jì)算碼相位,碼相位步進(jìn)codeNCO的計(jì)算式為

(16)

在一個(gè)時(shí)間間隔內(nèi),一共產(chǎn)生Δtr×fs個(gè)采樣點(diǎn),代表線程ID的最大值,在該線程得到的碼相位為

[Δtr-(Rn+1-Rn)/c]×fcode

(17)

可以看出式(17)與式(15)得到的結(jié)果一致,這里對(duì)比了碼相位增加的總和,實(shí)際使用時(shí)還需要與偽隨機(jī)序列長度取模得到采樣時(shí)刻對(duì)應(yīng)的偽隨機(jī)序列數(shù)值。

對(duì)于載波相位,由式( 6 )得到,接收信號(hào)在下變頻到中頻之后的載波相位初始值可以表示為

(18)

式中:λ為波長。

以經(jīng)過一個(gè)時(shí)間間隔的時(shí)刻為初始時(shí)刻,得到的載波相位初值為

(19)

兩式相減可以得到在兩次接收時(shí)刻載波相位的差值

Δφ=fIF×Δtr-(Rn+1-Rn)/λ

(20)

在GPU中通過相位步進(jìn)和線程的ID計(jì)算載波相位,載波相位步進(jìn)的計(jì)算式為

(21)

將式( 7 )帶入式(20),在最后一個(gè)采樣點(diǎn)所在線程得到的載波相位為

ΔPcarrier=carrierNCO×fs×Δtr=

fIF×Δtr-(Rn+1-Rn)/λ

(22)

可以看出式(22)與式(20)得到的結(jié)果是一致的。在每一個(gè)Δt時(shí)刻的相位值與依據(jù)初始相位在GPU線程內(nèi)計(jì)算的相位值是相同的,使用雙精度浮點(diǎn)值計(jì)算相位在一個(gè)時(shí)間間隔之內(nèi)并不會(huì)對(duì)定位精度產(chǎn)生顯著影響。在每一個(gè)Δt時(shí)刻進(jìn)行相位校正也保證了相位之間不會(huì)產(chǎn)生跳變,接收機(jī)的跟蹤過程可以連續(xù)進(jìn)行。

2.3 GPU內(nèi)存分配

在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)存資源可以提高程序并行效率。

在2.2節(jié)的并行計(jì)算模型之中,一個(gè)Block內(nèi)部同時(shí)產(chǎn)生了多路衛(wèi)星信號(hào)的采樣點(diǎn),而信號(hào)生成軟件最終得到的信號(hào)是各個(gè)衛(wèi)星的信號(hào)相加,將各個(gè)通道的數(shù)據(jù)存儲(chǔ)在共享內(nèi)存中以實(shí)現(xiàn)同一個(gè)Block內(nèi)不同線程之間的數(shù)據(jù)交互。對(duì)于信號(hào)疊加的過程,可以使用規(guī)約的方法計(jì)算以快速釋放線程束,增強(qiáng)并行效果。

導(dǎo)航電文和偽隨機(jī)序列對(duì)于同一個(gè)時(shí)間間隔內(nèi)的采樣點(diǎn)來說是不變的,考慮到GPU與CPU之間進(jìn)行內(nèi)存讀取所占用的時(shí)間,可以把它們當(dāng)做固定的查詢表存放在設(shè)備的紋理內(nèi)存之中。紋理內(nèi)存專門用于存儲(chǔ)圖片、表格等數(shù)據(jù)類型,可以不按照內(nèi)存的線性結(jié)構(gòu),讀取任意位置的數(shù)據(jù),同時(shí)紋理內(nèi)存中的數(shù)據(jù)將通過紋理緩存讀取,速度優(yōu)于全局內(nèi)存。

對(duì)于生成非零中頻信號(hào),載波調(diào)制所需的正余弦函數(shù),在硬件模擬器中一般使用查詢表的方式得到,省去了正余弦函數(shù)進(jìn)行計(jì)算的時(shí)間。在軟件實(shí)現(xiàn)的過程也可以借鑒查表方式,將正余弦函數(shù)表存放在紋理內(nèi)存中,在每次調(diào)用時(shí)依據(jù)相位讀取對(duì)應(yīng)數(shù)值。

在核函數(shù)的執(zhí)行過程中,需要將核函數(shù)輸出采樣點(diǎn)所需要的內(nèi)存空間提前輸入到GPU設(shè)備中,在核函數(shù)執(zhí)行完成之后再由GPU的內(nèi)存復(fù)制到主機(jī)內(nèi)存中。由于模擬器采樣頻率較高,采樣點(diǎn)內(nèi)存的讀取也將花費(fèi)大量的時(shí)間,所以使用頁鎖定內(nèi)存存放采樣點(diǎn)數(shù)據(jù)。頁鎖定內(nèi)存是在主機(jī)內(nèi)存中開辟一塊供GPU存取數(shù)據(jù)的空間,具有更高的內(nèi)存讀取速度。同時(shí)頁鎖定內(nèi)存可以用于CUDA Stream,實(shí)現(xiàn)數(shù)據(jù)處理與傳輸層面的并行,掩蓋數(shù)據(jù)傳輸延遲。

3 信號(hào)測試流程

信號(hào)測試流程見圖4,首先選擇用戶軌跡并設(shè)計(jì)場景參數(shù),輸入到信號(hào)生成軟件之中,之后利用CPU推算各顆衛(wèi)星信號(hào)的初始參數(shù),并將這些參數(shù)傳入GPU設(shè)備內(nèi)存中,利用并行計(jì)算模型同時(shí)計(jì)算每個(gè)通道內(nèi)的信號(hào)采樣值存入設(shè)備內(nèi)存,最后將設(shè)備內(nèi)存中的數(shù)據(jù)復(fù)制到主機(jī)內(nèi)存中,供外部射頻設(shè)備讀取。

圖4 信號(hào)測試流程

在場景編輯階段,首先讀取RINEX文件和用戶軌跡,計(jì)算用戶位置采樣時(shí)刻的衛(wèi)星位置,粗略計(jì)算偽距和衛(wèi)星仰角,之后讀取場景編輯參數(shù),包括信號(hào)發(fā)射起始時(shí)間、衛(wèi)星截止仰角、最大可見衛(wèi)星數(shù)量和信號(hào)載噪比。比對(duì)發(fā)射起始時(shí)間和TOC時(shí)間判斷是否更換星歷,依據(jù)最大可見衛(wèi)星數(shù)量和衛(wèi)星截止仰角判斷當(dāng)前通道數(shù)量,設(shè)置載噪比控制信號(hào)接收功率。

在CPU處理階段,將RINEX文件中浮點(diǎn)數(shù)形式的星歷參數(shù)轉(zhuǎn)換為二進(jìn)制文件填充至導(dǎo)航電文各子幀對(duì)應(yīng)位置,依據(jù)信號(hào)傳播過程模型計(jì)算各顆衛(wèi)星的偽距、傳播時(shí)間、相位初值和多普勒頻移。

在GPU處理階段,將信號(hào)初始參數(shù)分配到并行模型中,在每一個(gè)線程中依據(jù)式( 6 ),結(jié)合線程ID計(jì)算采樣點(diǎn)的數(shù)值,并將數(shù)值存入頁鎖定內(nèi)存中。在生成一個(gè)Δt(用戶軌跡采樣點(diǎn)時(shí)間間隔)內(nèi)所有通道的數(shù)字信號(hào)之后將數(shù)據(jù)傳輸?shù)街鳈C(jī)內(nèi)存中,重復(fù)上述過程直至信號(hào)生成結(jié)束。

將主機(jī)內(nèi)存中的數(shù)字信號(hào)數(shù)據(jù)復(fù)制到數(shù)據(jù)回放儀中,測試硬件接收機(jī)的定位效果。

4 實(shí)驗(yàn)驗(yàn)證及數(shù)據(jù)分析

4.1 實(shí)驗(yàn)設(shè)備及環(huán)境

生成模擬導(dǎo)航信號(hào)所使用的GPU型號(hào)為Nvidia Quadro T1000,使用的信號(hào)回放設(shè)備為Labsat3W,測試接收機(jī)的型號(hào)為ubloxM8U,用戶軌跡文件數(shù)據(jù)來源分別為2018年6月京沈客運(yùn)專線,2021年6月國家鐵路實(shí)驗(yàn)中心環(huán)形實(shí)驗(yàn)場現(xiàn)場測量的軌道坐標(biāo)數(shù)據(jù),使用設(shè)備為高精度組合導(dǎo)航接收機(jī)SPAN(Synchronized Position Attitude & Navigation)。在數(shù)據(jù)中截取了靜止、加減速狀態(tài)、彎道狀態(tài)三個(gè)場景。在三個(gè)場景中生成的中頻數(shù)據(jù),使用Labsat3W信號(hào)回放儀進(jìn)行回放,中頻信號(hào)的采樣頻率為58 MHz,并與ubloxM8U接收機(jī)連接測試定位效果。

4.2 信號(hào)生成算法實(shí)時(shí)性能分析

信號(hào)生成算法的運(yùn)行時(shí)間主要與GPU線程模型的設(shè)計(jì)和本地時(shí)間間隔△t有關(guān)。

分析線程模型設(shè)計(jì)方面對(duì)實(shí)時(shí)性的影響需要考慮軟件算法與GPU硬件結(jié)構(gòu)的匹配,GPU通過將線程打包為線程束的形式分配給流多處理器(Streaming Multiprocessor, SM)來實(shí)現(xiàn)并行計(jì)算,在每個(gè)SM中線程束的占用率越高則說明當(dāng)前程序的并行性越好。GPU中的硬件資源是有限的,隨著線程數(shù)量的變化,每個(gè)線程可以使用的硬件資源也不同,這是影響線程束占用率的主要因素。實(shí)驗(yàn)所使用的GPU包含14個(gè)SM流多處理器,896個(gè)CUDA核心。

在2.1節(jié)分析的并行運(yùn)算模型中,每個(gè)Block被設(shè)計(jì)為二維的線程結(jié)構(gòu),其中衛(wèi)星信號(hào)通道這一維度是依據(jù)RINEX文件設(shè)定的,可以通過改變采樣點(diǎn)數(shù)量K來尋找并行線程數(shù)量和每個(gè)線程可用資源之間的平衡。以58 MHz采樣率,本地時(shí)間間隔100 ms,生成1 s信號(hào)為例,分別將采樣點(diǎn)數(shù)量K設(shè)置為(8,16,32,64,80,96),記錄信號(hào)生成所用最短時(shí)間。這里K設(shè)置的最大值受限于每個(gè)Block最多可以容納的線程數(shù)量和共享內(nèi)存的總?cè)萘?。設(shè)置不同的通道數(shù)量對(duì)應(yīng)的生成時(shí)間如表1所示。

表1 不同通道數(shù)量生成數(shù)據(jù)時(shí)間

可見衛(wèi)星數(shù)量satnum與一個(gè)Block中采樣點(diǎn)數(shù)量K的關(guān)系見圖5。從圖5中可以看出,所有數(shù)字基帶信號(hào)生成速度均快于實(shí)時(shí),同時(shí),并行效率最高的采樣點(diǎn)數(shù)量K與通道數(shù)量存在反比關(guān)系,在實(shí)際應(yīng)用中也可以通過通道數(shù)量動(dòng)態(tài)調(diào)整每個(gè)Block中的采樣點(diǎn)數(shù)量,達(dá)到最優(yōu)的并行效果。本實(shí)驗(yàn)中,在通道數(shù)量為9的情況下并行效率最高的采樣點(diǎn)個(gè)數(shù)為16,使用NVIDIA Nsight Compute工具分析該核函數(shù)運(yùn)行效率如表2所示,其中內(nèi)核使用率和線程占用率都達(dá)到較高水平。

圖5 Block中采樣點(diǎn)數(shù)量與時(shí)間關(guān)系

表2 信號(hào)測試實(shí)驗(yàn)設(shè)備型號(hào) %

影響信號(hào)生成算法時(shí)間的另一因素為本地時(shí)間間隔△t。通常情況下,用戶軌跡的抽樣間隔是稀疏的,可以使用插值的方法增加用戶軌跡點(diǎn)數(shù),降低本地時(shí)間間隔,縮短參數(shù)更新周期。但是縮短時(shí)間間隔必然會(huì)增加計(jì)算量,同時(shí)由于計(jì)算信號(hào)傳播時(shí)間等任務(wù)均在CPU中計(jì)算并傳遞至GPU,在縮短時(shí)間間隔后,GPU與CPU之間的數(shù)據(jù)傳輸次數(shù)也會(huì)隨之增加,信號(hào)生成時(shí)間也會(huì)相應(yīng)延長。為測試信號(hào)生成的實(shí)時(shí)性與本地時(shí)間間隔△t的關(guān)系,設(shè)置一組時(shí)間間隔分別為(1、2、5、10、20、50、100、150、200 ms),在58 MHz采樣率,9個(gè)信號(hào)通道,每個(gè)Block的采樣點(diǎn)數(shù)量為16的場景下測試生成2 s信號(hào)所需要的時(shí)間,測試結(jié)果見圖6。由圖6可以看出,在58 MHz采樣率并確保實(shí)時(shí)性的情況下,本地時(shí)間間隔可以達(dá)到5 ms。在信號(hào)生成過程中,可以針對(duì)不同軌跡的動(dòng)態(tài)情況,設(shè)置不同時(shí)間間隔,確保實(shí)時(shí)性。

圖6 本地時(shí)間間隔與時(shí)間關(guān)系

最終生成中頻信號(hào)的頻譜圖見圖7。

圖7 中頻信號(hào)頻譜圖

4.3 中頻信號(hào)靜態(tài)定位實(shí)驗(yàn)

產(chǎn)生靜態(tài)場景,在ECEF坐標(biāo)系中選擇一靜態(tài)點(diǎn),坐標(biāo)為(-2 184 063.256,4 378 949.513,4 077 218.686),使用ubloxM8U接收機(jī)對(duì)設(shè)備進(jìn)行測試。表3為將實(shí)驗(yàn)結(jié)果轉(zhuǎn)換到ENU坐標(biāo)系的位置坐標(biāo),接收機(jī)解算結(jié)果靜態(tài)平均位置和真實(shí)位置見圖8。

表3 靜態(tài)定位結(jié)果三軸誤差 m

圖8 靜態(tài)定位結(jié)果

4.4 軌道測量數(shù)據(jù)定位實(shí)驗(yàn)

實(shí)驗(yàn)一:京沈客運(yùn)專線軌道數(shù)據(jù)實(shí)驗(yàn)

為驗(yàn)證在動(dòng)態(tài)場景下中頻信號(hào)的穩(wěn)定性和可靠性,選取2018年7月京沈客運(yùn)專線黑山北站—沈陽西站區(qū)間實(shí)測數(shù)據(jù)中一段包含加減速的軌跡,線路總長度約為20 km。列車起始速度為247 km/h,經(jīng)過兩段減速后在259 s時(shí)進(jìn)站停車,在339 s后開車,經(jīng)三段加速過程后速度達(dá)到248 km/h。生成信號(hào)過程中,可見衛(wèi)星數(shù)量為9顆,設(shè)置采樣率為58 MHz,依據(jù)軌跡生成了620 s衛(wèi)星信號(hào),在并行參數(shù)設(shè)置方面,依據(jù)5.2節(jié)實(shí)時(shí)性分析,設(shè)置GPU線程中采樣點(diǎn)數(shù)量K為16,用戶軌跡時(shí)間間隔為100 ms,與傳統(tǒng)的利用CPU方法對(duì)比,兩種方法生成信號(hào)時(shí)間如表4所示。接收機(jī)的參考位置、速度通過列車上搭載的組合導(dǎo)航接收機(jī)SPAN得到,由參考位置作為用戶軌跡生成模擬的衛(wèi)星信號(hào),再使用通用接收機(jī)得到解算位置,其中,經(jīng)、緯、高三軸位置和速度見圖9、圖10。在接收單GPS衛(wèi)星信號(hào)的情況下ubloxM8U接收機(jī)的水平位置誤差為2.5 m,高程誤差為3 m,速度誤差為0.05 m/s[18]。位置、速度誤差均值及方差如表5所示。由表5可以看出,列車的位置誤差和速度誤差都在接收機(jī)誤差范圍內(nèi)。衛(wèi)星信號(hào)生成方法在實(shí)時(shí)性和精度方面都滿足測試要求。

表4 信號(hào)生成時(shí)間對(duì)比 s

圖9 直線加減速場景定位結(jié)果

圖10 直線加減速場景定位結(jié)果

表5 動(dòng)態(tài)場景定位結(jié)果

實(shí)驗(yàn)二:國家鐵路實(shí)驗(yàn)中心環(huán)形實(shí)驗(yàn)場軌道數(shù)據(jù)實(shí)驗(yàn)

為驗(yàn)證生成信號(hào)在彎道狀態(tài)下的穩(wěn)定性和可靠性,選取2021年6月在北京環(huán)形鐵路試驗(yàn)中心的測試數(shù)據(jù),該軌跡的圓環(huán)半徑為600 m。信號(hào)生成過程中,由環(huán)形道軌跡生成了470 s衛(wèi)星信號(hào),由于該場景下可見衛(wèi)星數(shù)量與實(shí)驗(yàn)一相同,所以并行模型參數(shù)的設(shè)置保持不變,實(shí)際位置和解算位置的獲取方法與動(dòng)態(tài)場景下一致。表6為兩種方法信號(hào)生成時(shí)間對(duì)比,表7為環(huán)形道場景的定位誤差,圖11為平面定位結(jié)果,圖12為經(jīng)、緯、高三軸位置與實(shí)際位置比較結(jié)果,定位ubloxM8U接收機(jī)定位誤差范圍之內(nèi),由環(huán)形道軌跡生成的衛(wèi)星模擬信號(hào)可以在彎道弧度較大情況下滿足定位測試要求。

表6 信號(hào)生成時(shí)間對(duì)比 s

表7 環(huán)形道場景定位結(jié)果

圖11 環(huán)形道場景平面定位結(jié)果

圖12 環(huán)形道場景三軸定位誤差

5 結(jié)論

衛(wèi)星導(dǎo)航技術(shù)在列車運(yùn)行、維護(hù)過程中的廣泛應(yīng)用對(duì)導(dǎo)航接收機(jī)的可靠性提出很高的要求,生成模擬的衛(wèi)星信號(hào)是測試導(dǎo)航接收機(jī)性能的常用手段。針對(duì)傳統(tǒng)的衛(wèi)星導(dǎo)航信號(hào)模擬設(shè)備無法兼具場景設(shè)置靈活性和設(shè)備便攜性的問題,引入一種基于軟件無線電的思想,依托GPU與CPU異構(gòu)并行計(jì)算架構(gòu)的信號(hào)生成方法。詳細(xì)分析了信號(hào)生成過程的并行計(jì)算結(jié)構(gòu),GPU內(nèi)存結(jié)構(gòu)以及場景參數(shù)設(shè)置方法。并將京沈高鐵和北京環(huán)形鐵道的實(shí)測軌道數(shù)據(jù)作為依據(jù)生成場景文件,分別設(shè)計(jì)了靜態(tài)、加減速狀態(tài)和彎道狀態(tài)三個(gè)場景,實(shí)時(shí)生成衛(wèi)星模擬信號(hào),通過查閱技術(shù)手冊獲得所使用接收機(jī)的定位精度范圍,得到的定位結(jié)果滿足接收機(jī)定位精度,驗(yàn)證了生成信號(hào)的可用性。基于GPU的衛(wèi)星信號(hào)生成方法能夠快速生成衛(wèi)星信號(hào),并且能夠依據(jù)場景設(shè)置參數(shù),同時(shí)操作簡單,滿足衛(wèi)星導(dǎo)航鐵路應(yīng)用中對(duì)接收機(jī)性能測試驗(yàn)證的需求。

猜你喜歡
線程接收機(jī)載波
一種用于調(diào)幅接收機(jī)AGC的設(shè)計(jì)與實(shí)現(xiàn)
一種面向ADS-B的RNSS/RDSS雙模接收機(jī)設(shè)計(jì)
電子制作(2018年19期)2018-11-14 02:36:40
淺談linux多線程協(xié)作
數(shù)字接收機(jī)故障維修與維護(hù)
電子制作(2016年1期)2016-11-07 08:42:41
基于多接收機(jī)的圓周SAR欺騙干擾方法
應(yīng)急廣播系統(tǒng)中副載波的構(gòu)建與應(yīng)用
低壓載波通訊測試儀的開發(fā)與應(yīng)用
基于最優(yōu)化搜索的迭代載波同步算法
一種雙頻載波相位周跳探測與修復(fù)的方法
Linux線程實(shí)現(xiàn)技術(shù)研究
贡嘎县| 阳春市| 固阳县| 泗水县| 拜泉县| 连南| 高州市| 嘉义市| 平阴县| 江安县| 乌拉特后旗| 曲周县| 阳西县| 石河子市| 沈阳市| 河津市| 淮阳县| 普宁市| 六盘水市| 华蓥市| 墨脱县| 凭祥市| 原阳县| 漯河市| 巴彦淖尔市| 林口县| 麦盖提县| 新野县| 体育| 小金县| 天长市| 察隅县| 西丰县| 广东省| 习水县| 吴桥县| 沾化县| 勐海县| 仁布县| 昭苏县| 桃园市|