唐琳琳 曾慶喜 王 慶 陳小惠
(1.南京航空航天大學(xué)車輛電子實(shí)驗(yàn)室 南京 210016)(2.東南大學(xué)儀器科學(xué)與工程學(xué)院 南京 210096)(3.南京郵電大學(xué)自動(dòng)化學(xué)院 南京 210046)
由于GPS軟件接收機(jī)能解決目前傳統(tǒng)接收機(jī)在多信號(hào)融合、高靈敏度、高精度、抗干擾和多路徑抑制等方面存在的問題,具有配置靈活,精度高,易于升級(jí)等優(yōu)點(diǎn)[1],是未來(lái)衛(wèi)星定位接收機(jī)的發(fā)展方向。嵌入式軟件接收機(jī)的實(shí)現(xiàn)大部分是基于DSP+FPGA 方法而實(shí)現(xiàn)的,這種方法雖然替代了傳統(tǒng)的專用導(dǎo)航芯片,但是其靈活性仍然受到很大限制,而且對(duì)FPGA的開發(fā)調(diào)試也是一個(gè)比較復(fù)雜的過程。然而基于PC的GPS軟件接收機(jī)的設(shè)計(jì)平臺(tái)更穩(wěn)定、代碼開發(fā)和測(cè)試環(huán)境更友好。在軟件接收機(jī)進(jìn)入嵌入式調(diào)試之前,開發(fā)基于PC的GPS軟件接收機(jī)能夠使得開發(fā)人員將更多的精力集中在算法的設(shè)計(jì)上,從而加快嵌入式軟件接收機(jī)開發(fā)的進(jìn)程。因此,本文提出一種基于PC的GPS軟件接收機(jī)設(shè)計(jì)方法,其中重點(diǎn)介紹了中頻信號(hào)采樣器的設(shè)計(jì)、捕獲和跟蹤的算法,并對(duì)信號(hào)處理軟件進(jìn)行了設(shè)計(jì),最后對(duì)本文所設(shè)計(jì)的軟件接收機(jī)的定位性能進(jìn)行了測(cè)試。
圖1 基于PC的GPS軟件接收機(jī)結(jié)構(gòu)
本文所設(shè)計(jì)的基于PC的軟件接收機(jī)系統(tǒng)的總體結(jié)構(gòu)見圖1所示,由三個(gè)部分組成:天線、中頻信號(hào)采樣器和基于PC的軟件。天線采集射頻信號(hào)發(fā)送給中頻信號(hào)采樣器。然后,中頻信號(hào)采樣器對(duì)信號(hào)進(jìn)行放大、濾波、下變頻、A/D采樣和緩沖等處理。接著,由USB2.0 接口將處理好的數(shù)據(jù)發(fā)送給PC 機(jī),在PC 機(jī)上進(jìn)行基帶信號(hào)處理以及位置解算。最后,將解算出的定位結(jié)果發(fā)送到PC 機(jī)界面。
為了將天線接收到的衛(wèi)星信號(hào)輸入PC 機(jī),必須設(shè)計(jì)好射頻前端與PC 機(jī)的數(shù)據(jù)接口,以保證中頻采樣數(shù)據(jù)在實(shí)時(shí)傳輸?shù)倪^程中不丟失或出現(xiàn)錯(cuò)誤。而GPS中頻信號(hào)采樣器是實(shí)現(xiàn)GPS天線和PC機(jī)之間的信號(hào)轉(zhuǎn)換和傳輸?shù)谋貍鋬x器。本文設(shè)計(jì)了一種基于GP2015射頻前端芯片和CYC68013[2]USB2.0芯片的GPS中頻信號(hào)采樣器。中頻信號(hào)采樣器的總體結(jié)構(gòu),如圖2所示。
圖2 中頻信號(hào)采樣器結(jié)構(gòu)
在上圖中,采用ZARLINK 公司的GP2015 射頻前端芯片及相關(guān)外圍元件接收衛(wèi)星信號(hào),實(shí)現(xiàn)信號(hào)的放大、濾波、下變頻和模數(shù)轉(zhuǎn)換。射頻前端輸出的數(shù)字信號(hào)被輸入到EP2C20FPGA 芯片,F(xiàn)PGA 將信號(hào)由串行轉(zhuǎn)為16位寬度的并行數(shù)據(jù)并被送入緩沖,接著FPGA 檢測(cè)USB接口芯片CY7C68013的端口FIFO 狀態(tài),根據(jù)狀態(tài)將緩沖中的數(shù)據(jù)送入U(xiǎn)SB芯片,由CY7C68013將數(shù)據(jù)送上與PC機(jī)連接的USB串行總線。PC機(jī)的上位機(jī)程序完成GPS數(shù)據(jù)的接收和存儲(chǔ),同時(shí)檢測(cè)用戶的命令輸入。
信號(hào)捕獲的目的是確定接收機(jī)當(dāng)前所在位置的可見衛(wèi)星信號(hào),進(jìn)而計(jì)算出可見衛(wèi)星的載波頻率和偽隨機(jī)碼相位信息。GPS信號(hào)捕獲實(shí)際上是一個(gè)兩維的搜索過程,碼相位的模糊區(qū)域與本地的復(fù)制碼相聯(lián)系,而多普勒范圍與本地的復(fù)制載波相聯(lián)系[3]。
本文采用碼相位并行捕獲方法來(lái)捕獲信號(hào)[3~4]。這種算法的原理如圖3所示。
圖3 碼相位并行捕獲算法
在基于FFT的計(jì)算中,對(duì)一個(gè)指定的載波頻率一次計(jì)算出所有的碼相位的互相關(guān)結(jié)果。這種方法的基本原理是時(shí)域的相關(guān)與卷積在頻域上相似[5]。長(zhǎng)度為N的信號(hào)x(n)通過DFT 在頻域表示為
信號(hào)x(n)和另一個(gè)長(zhǎng)度也為N的信號(hào)y(n)相關(guān)的時(shí)域表示為
信號(hào)x(n)和信號(hào)y(n)相關(guān)的頻域表示為
兩個(gè)信號(hào)x(n)和y(n)卷積的時(shí)域表示為
兩個(gè)信號(hào)x(n)和y(n)相關(guān)的頻域表示為
從式(3)和式(5)可以看出,兩個(gè)信號(hào)的相關(guān)運(yùn)算和卷積運(yùn)算在頻域上是基本一致的,只是其中一個(gè)信號(hào)互為共軛而已。所以能夠用FFT 和IFFT的方法來(lái)代替時(shí)域的信號(hào)相關(guān)。通過FFT 和IFFT的方法,所有碼相位上的相關(guān)值能在一個(gè)FFT 操作中計(jì)算出來(lái),能大大減少計(jì)算量。
圖3具體實(shí)現(xiàn)方法是:首先,對(duì)輸入的中頻信號(hào)進(jìn)行FFT 和共軛處理。然后,對(duì)本地C/A 碼發(fā)生器產(chǎn)生的C/A碼被本地載波調(diào)制之后的信號(hào)也做FFT。接著,將上述兩個(gè)FFT 所得到的結(jié)果進(jìn)行復(fù)數(shù)相乘,并對(duì)得到同相(I)和正交(Q)兩路信號(hào)進(jìn)行傅立葉反變換(IFFT)。觀察所得到的結(jié)果,將其中模最大的那個(gè)和預(yù)先設(shè)定的門限值比較,如果大于門限,則表明信號(hào)已經(jīng)被捕獲到,這時(shí)接收機(jī)可以進(jìn)一步轉(zhuǎn)換到跟蹤環(huán)路。如果小于門限,則表明沒有捕獲到信號(hào),這時(shí)更換多普勒頻率重復(fù)上述過程,一直到能夠獲得信號(hào)為止。
信號(hào)跟蹤的目的是提高所捕獲到的C/A 碼的相位和載波頻率的精度,并在信號(hào)隨著時(shí)間變化的時(shí)候保持接收機(jī)本地復(fù)制信號(hào)與輸入信號(hào)的準(zhǔn)確同步,進(jìn)而去除信號(hào)中的載波和偽隨機(jī)碼得到導(dǎo)航數(shù)據(jù)信息。所以,GPS信號(hào)的跟蹤通常包括兩個(gè)環(huán)路:偽碼跟蹤環(huán)和載波跟蹤環(huán)。
設(shè)中頻信號(hào)被采樣之后的表示為
其中Ck(n)是第k號(hào)衛(wèi)星的C/A 碼序列,Dk(n)是導(dǎo)航數(shù)據(jù)序列,ωIF是射頻前端接收到的衛(wèi)星信號(hào)載波經(jīng)過下變頻之后得到的中頻,e(n)是信號(hào)中的噪聲。
yk(n)與本地的載波信號(hào)相乘之后為
上式中第一項(xiàng)是導(dǎo)航數(shù)據(jù)與偽碼相乘的結(jié)果,第二項(xiàng)是頻率為兩倍的中頻的載波,信號(hào)z(n)k經(jīng)過低通濾波器之后的信號(hào)表示為
下一步是從信號(hào)中去除偽碼Ck(n),通過與本地產(chǎn)生的C/A 碼序列相乘,如果兩個(gè)碼的相位完全對(duì)準(zhǔn)之后,相乘的結(jié)果為
其中NDk(n)是導(dǎo)航數(shù)據(jù)乘以信號(hào)的點(diǎn)數(shù)N。從上面的推導(dǎo)可以看出,為了解調(diào)出數(shù)據(jù)碼Dk(n),必須產(chǎn)生本地信號(hào)cos(ωIFn)和Ck(n),為了精確地產(chǎn)生這兩個(gè)本地信號(hào),通常采用延遲鎖環(huán)DLL(Delay Lock Loop)和COSTAS 環(huán)對(duì)C/A碼和載波進(jìn)行跟蹤,結(jié)構(gòu)如圖4和圖5所示。
圖4 六相關(guān)器DLL結(jié)構(gòu)
圖5 COSTAS環(huán)結(jié)構(gòu)
圖4中相乘累加的結(jié)果被送入碼環(huán)鑒相器進(jìn)行計(jì)算,計(jì)算結(jié)果作為控制信號(hào)反饋到本地碼發(fā)生器控制本地C/A碼的產(chǎn)生,從而實(shí)現(xiàn)碼跟蹤環(huán)路。
圖5中的COSTAS環(huán)的目的是盡量將信號(hào)的能量壓縮到同相支路中。假定上圖中的復(fù)制PRN 碼是完全對(duì)準(zhǔn)的情況,同相支路的相乘結(jié)果可以表示為
其中φ是輸入信號(hào)和本地復(fù)制信號(hào)之間的相位誤差。正交支路的乘積可以表示如下
如果這兩個(gè)信號(hào)在乘積之后被低通濾波,高頻成分將被濾除,剩下的部分可以表示為
輸入信號(hào)和本地復(fù)制信號(hào)之間的相位誤差表示如下:
從上式不難看出,當(dāng)正交支路的相關(guān)值Qk為0,而同相支路的相關(guān)值最大的時(shí)候,相位誤差是最小的。
實(shí)際上基于PC機(jī)的軟件接收機(jī)設(shè)計(jì)的大部分運(yùn)算量集中在信號(hào)處理部分,而信號(hào)的捕獲和跟蹤中占絕大部分運(yùn)算量的是軟件相關(guān)器模塊[6]。因此,要提高軟件接收機(jī)的處理速度,關(guān)鍵在于提高信號(hào)處理部分的軟件相關(guān)器的運(yùn)行速度。下面簡(jiǎn)單介紹一下軟件相關(guān)器。
GPS的軟件相關(guān)器是信號(hào)跟蹤處理中必不可少的部分,它需要完成三個(gè)任務(wù)[7]:1)用估計(jì)的載波多普勒頻移和載波相位把信號(hào)混頻到基帶,即解調(diào)過程;2)用估計(jì)的碼相位和碼率將基帶信號(hào)與本地復(fù)制的C/A 碼進(jìn)行混頻,即解擴(kuò)過程;3)它將解調(diào)和解擴(kuò)之后的信號(hào)進(jìn)行累加。軟件相關(guān)器的運(yùn)算量主要集中在本地載波的生成、C/A 碼的生成、相關(guān)累加的乘加運(yùn)算這三個(gè)模塊。因?yàn)椴捎没赑C的程序?qū)崟r(shí)生成本地信號(hào)的運(yùn)算量太大,不利于軟件接收機(jī)實(shí)時(shí)性的提高,所以,為了降低運(yùn)算量事先將本地信號(hào)生成并存入存儲(chǔ)器。然后,在運(yùn)算的過程中通過查表的辦法來(lái)代替信號(hào)的實(shí)時(shí)產(chǎn)生。而對(duì)于跟蹤過程的相關(guān)累加運(yùn)算則轉(zhuǎn)化為位運(yùn)算和查表來(lái)實(shí)現(xiàn)。
本文研制的基于PC的軟件接收機(jī)總體實(shí)物如圖6所示。圖中主要包括天線、中頻信號(hào)采樣器和PC機(jī)。
為了說(shuō)明本文所設(shè)計(jì)的中頻信號(hào)采樣器采集數(shù)據(jù)的正確性,將其與東南大學(xué)伽利略中心的高精度測(cè)量型接收機(jī)S6532A 作比較。將本文設(shè)計(jì)的中頻信號(hào)采樣器與S6532A 接收機(jī)一起同時(shí)接收GPS衛(wèi)星信號(hào)。對(duì)采集到的數(shù)據(jù)計(jì)算之后,兩種設(shè)備捕獲的衛(wèi)星號(hào)對(duì)比如表1所示。
圖6 軟件接收機(jī)總體實(shí)物圖
表1 兩種設(shè)備捕獲到的衛(wèi)星信號(hào)參數(shù)
利用表1中捕獲得到的多普勒頻移、C/A 碼相位延遲等相關(guān)參數(shù)對(duì)跟蹤環(huán)進(jìn)行初始化,可以正確地轉(zhuǎn)入跟蹤信號(hào)跟蹤程序,說(shuō)明捕獲得到的載波多普勒頻移和碼初始相位的精度基本能滿足跟蹤環(huán)初始化的需求。實(shí)驗(yàn)結(jié)果說(shuō)明,中頻信號(hào)采樣器工作正常,從而保證了中頻采樣數(shù)據(jù)的正確性,將可靠的信號(hào)送入PC機(jī)中。
PC上的軟件在VC++平臺(tái)上編寫。軟件主要包括:碼相位并行捕獲、信號(hào)跟蹤、位置計(jì)算三個(gè)模塊。圖7是基于PC的GPS軟件接收機(jī)總體流程圖。
圖7 基于PC的GPS軟件接收機(jī)總體流程
捕獲部分利用基于FFT的并行碼相位搜索算法,跟蹤部分利用捕獲得到的信號(hào)參數(shù)初始化跟蹤通道,接著跟蹤不斷地從緩存讀入數(shù)據(jù)進(jìn)行處理。本地產(chǎn)生同相和正交的本地信號(hào),與輸入信號(hào)進(jìn)行相關(guān)。接著進(jìn)行環(huán)路鑒相和濾波并更新本地的碼和載波頻率。對(duì)所有存在衛(wèi)星信號(hào)的通道進(jìn)行相同的處理。圖8是位置計(jì)算流程圖。首先,找到數(shù)據(jù)比特邊緣和preamble字的位置,獲得數(shù)據(jù)比特值,然后解碼出星歷,接著進(jìn)行偽距和位置計(jì)算,最后保存定位的結(jié)果。
圖8 位置計(jì)算流程
圖9 水平位置定位結(jié)果
圖10 東西方向定位誤差
圖11 南北方向定位誤差
圖12 高程定位誤差
為了測(cè)試本文所設(shè)計(jì)GPS軟件接收機(jī)的定位精度,以文中提到的S6532A 接收機(jī)定位的結(jié)果為參考點(diǎn),參考點(diǎn)的經(jīng)度為118.787366335°,緯度為32.058789722°,高程為8.423m。水平位置定位誤差如圖9所示,圖中圓圈位置是參考點(diǎn),+位置為軟件接收機(jī)定位點(diǎn);圖10~圖12是軟件接收機(jī)的定位誤差與定位時(shí)間的關(guān)系圖,因?yàn)槊?00ms計(jì)算一次位置,所以,圖中橫軸的單位是500ms。從圖9中可以看出,軟件接收機(jī)計(jì)算的位置偏離參考位置較遠(yuǎn)。圖10可看出,東西方向的位置偏移在±200m 左右。圖11可看出,南北方向的位置偏移在±50m 左右。圖12可看出,高程的偏離范圍在800m 左右。
定位部分的算法設(shè)計(jì)沒有考慮到星歷預(yù)報(bào)誤差、電離層時(shí)延誤差、對(duì)流層時(shí)延誤差、多路徑誤差和其他的一些相關(guān)誤差。這些因素導(dǎo)致本軟件接收機(jī)定位的位置與參考點(diǎn)偏差較遠(yuǎn),從上面幾個(gè)圖也可看出。但是,定位的平均位置是接近參考點(diǎn)的,這說(shuō)明軟件接收機(jī)定位基本正常。
本文提出了一種基于PC的GPS 軟件接收機(jī)設(shè)計(jì)方法。首先介紹了基于GP2015芯片和USB 2.0接口的中頻信號(hào)采樣器設(shè)計(jì)方法。然后,介紹了基帶信號(hào)的捕獲和跟蹤算法,并對(duì)軟件相關(guān)器進(jìn)行了簡(jiǎn)單介紹。隨后對(duì)本文所提出的軟件接收機(jī)進(jìn)行了測(cè)試和分析。實(shí)驗(yàn)的結(jié)果表明,中頻信號(hào)采樣器能實(shí)時(shí)采集并通過USB將數(shù)據(jù)傳輸?shù)絇C機(jī)上,可以滿足軟件接收機(jī)的要求?;赑C的軟件部分能正確地得到定位。同時(shí)軟件接收機(jī)的信號(hào)處理軟件能實(shí)現(xiàn)四通道實(shí)時(shí)跟蹤。
[1]Wang Jun.A VC++Based GPS Software Receiver[J].Journal of Astronautics,2009,30(2):532-536.
[2]曾慶喜,王慶,楊英杰.USB接口GPS中頻信號(hào)采樣器研究與實(shí)現(xiàn)[J].電子測(cè)量與儀器學(xué)報(bào),2012,26(10):883-888.
[3]王萌,廉保旺.軟件GPS接收機(jī)捕獲算法的研究[J].計(jì)算機(jī)仿真,2010,27(1):32-35.
[4]汪偉,于建成,李國(guó)鵬.一種GPS接收機(jī)微弱信號(hào)捕獲方法[J].測(cè)繪通報(bào),2011,(1):12-14.
[5]胡叢瑋,李曉玲,安雷.一種改進(jìn)的GPS 微弱信號(hào)捕獲算法[J].武漢大學(xué)學(xué)報(bào)·信息科學(xué)版,2008,33(8):821-823.
[6]Tsui,James Bao-Yen.Fundamentals of Global Positioning System Receivers:A Software Approach[M].USA:John Wiley &Sons,2000.
[7]Gotz kappen,Volker pieper,Lothar Kurz.Implementation and Analysis of an SDR Processor for GNSS Software Correlators[C]//ION GNSS 21th ITM of Satellite Division.Savannah,GA:2008.
[8]劉夏.基于VB的GPS定位算法與軟件實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2013,(2).
[9]田鳴,王瑞清.基于GPS校準(zhǔn)的數(shù)字式守時(shí)鐘守時(shí)算法研究[J].計(jì)算機(jī)與數(shù)字工程,2011,(3).
[10]Brent M.Ledvina,Mark L.Psiaki,Steven P.Powell,etal.Bit-Wise Parallel Algorithms for Efficient Software Correlation Applied to a GPS Software Receiver[J].IEEE Transactions on Wireless Communications,2004,3(5):1469-1473.
[11]Mark L.Psiaki.Realtime-Time Generation of Bit-Wise Parallel Representations of Over-Sampled PRN Codes[J].IEEE Transactions on wireless communications,2006,5(3):487-491.
[12]B.M.Ledvina.Performance Test of A 12-Channel Real-Time GPS L1Software Receiver.ION GNSS 16th ITM of Satellite Division.Portland,2003:679-688.