葛愛學(xué)1,2,羅大成,廖守億,劉志國
(1.清華大學(xué) 計算機系,北京 100084;2.第二炮兵裝備研究院,北京100085;3第二炮兵工程學(xué)院,西安 710025)
GPS軟件接收機主要基于軟件無線電(Software Defined Radio,SDR)思想,即將硬件作為無線通信基本平臺,而把盡可能多的無線及個人通信功能用軟件來實現(xiàn)。GPS軟件接收機可以采用通用開放性的可編程數(shù)字信號處理平臺,通過加載不同的算法程序?qū)崿F(xiàn)不同的功能,方便升級和實現(xiàn)新的處理算法。
GPS軟件接收機自James Bao-Yen Tsui[1]于2000年出版的第一本基于軟件無線電概念論述GPS接收機設(shè)計基礎(chǔ)的著作發(fā)展至今,經(jīng)歷了由最初的單一通道到現(xiàn)在最多12通道,由L1頻段C/A碼信號到L1/L2雙頻段衛(wèi)星信號,由本地數(shù)字中頻信號后處理到GPS衛(wèi)星信號實時處理的過程。同時,國內(nèi)外諸多研究院所及公司進(jìn)行了GPS軟件接收機的研究工作:國外代表性的有美國的NAVSYS公司、Stanford大學(xué)、瑞典Lule科技大學(xué)、歐洲GJU(Galileo Joint Undertaking)、德國FAF Munich大學(xué)和加拿大Calgary大學(xué)等對GPS軟件接收機技術(shù)進(jìn)行了研究和開發(fā);國內(nèi)代表性的有北京航空航天大學(xué)、國防科技大學(xué)、浙江大學(xué)等。GPS軟件接收機還方便與其它定位方式進(jìn)行組合,多通道、多頻段及實時化的GPS軟件接收機仍是GPS接收機的發(fā)展方向。
由于美國對GPS L2載波上的P碼采用了嚴(yán)格的保密措施,因此本文所設(shè)計的GPS軟件接收機主要針對L1載波上的C/A碼信號。
設(shè)衛(wèi)星i的C/A碼信號ACCi(t)Di(t)sin (ω1t+φ1)為所需要的信號(式中φ1=ωdt+φ1,ωd為多普勒頻率,φ1為初相),而其它衛(wèi)星的信號被視為干擾信號,用Sj表示,噪聲和其它干擾信號用n(t)表示,這樣天線接收到的混合信號S(t)為
(1)
式中,ωL1=2πfL1,fL1=1 575.42 MHz,m為接收到信號的衛(wèi)星數(shù)目。
從天線接收到的GPS導(dǎo)航信息需要通過射頻模塊轉(zhuǎn)換為GPS軟件接收機的輸入信號源,即數(shù)字中頻信號。一種基于GP2010的射頻前端模型如圖1所示,主要由三級下變頻電路、低通濾波器、A/D轉(zhuǎn)換電路和自動增益控制器(AGC)組成[1,2]。
圖1 射頻前端模型Fig.1 Generic GPS RF front end model
數(shù)字中頻信號在GPS軟件接收機中的流程如圖2所示。
圖2 GPS軟件接收機信號流程Fig.2 Signal flow graph of software GPS receiver
由圖2可知,GPS軟件接收機主要由捕獲算法、跟蹤算法、解調(diào)算法、基帶信號處理和導(dǎo)航解算算法等組成,故GPS軟件接收機的設(shè)計也圍繞這幾方面展開。
GPS衛(wèi)星信號捕獲的目的主要有兩個[3]:首先是使本地產(chǎn)生的偽碼與調(diào)制在衛(wèi)星信號上的偽碼粗同步,使兩者的碼相位差在一個碼片以內(nèi),實現(xiàn)衛(wèi)星信號的相關(guān)解擴,為碼跟蹤算法提供初始相位;其次是粗估計衛(wèi)星信號的多普勒頻率,為載波跟蹤算法提供頻率初始值。
GPS衛(wèi)星信號的捕獲主要基于信號中偽隨機碼的良好相關(guān)性,即只有當(dāng)本地復(fù)制載波的頻率和衛(wèi)星信號中的某顆衛(wèi)星下變頻后的頻率相同,且本地復(fù)制C/A的碼相位和該顆衛(wèi)星對應(yīng)C/A碼的碼相位在一個碼片內(nèi),本地復(fù)制信號和衛(wèi)星信號的相關(guān)值才會出現(xiàn)峰值。因此,GPS信號的捕獲過程為:調(diào)整接收機本地信號發(fā)生器的碼相位和多普勒頻率估計值,使信號對準(zhǔn)某一搜索單元,若信號捕獲成功,則搜索停止而碼跟蹤啟動;若信號被否決,則碼相位步進(jìn)一單元,直到整個碼域搜索完畢。若信號仍未捕獲,則多普勒頻率步進(jìn)一單元,重復(fù)上述過程。
由于本地復(fù)制載波和輸入GPS數(shù)字中頻信號的相關(guān)計算可以轉(zhuǎn)換為快速傅里葉變換(FFT)來完成[9],因此目前GPS信號捕獲算法大多基于FFT,其主要優(yōu)點是可大大減小運算量,縮短捕獲時間。由于數(shù)據(jù)碼的一個碼元的長度為20 ms,因此在捕獲用的GPS信號長度不大于10 ms的情況下,連續(xù)兩組捕獲長度的GPS信號中必然有一組不存在數(shù)據(jù)碼的跳變,因此可以選取連續(xù)兩組捕獲長度的數(shù)據(jù)進(jìn)行捕獲。同時,當(dāng)本地復(fù)制C/A碼的碼相位和衛(wèi)星信號的碼相位之差大于1個碼片時,相關(guān)峰值將小于最大峰值的1/2,因此可以選取相關(guān)峰值和碼相位相差一個碼片時的相關(guān)最大值的比值作為門限值。一種基于FFT的GPS衛(wèi)星信號捕獲算法如圖3所示。
圖3 基于FFT的GPS信號快速捕獲算法Fig.3 Block diagram of the fast GPS code acquisition by FFT
采用一組基于GP2015得到GPS數(shù)字中頻信號為數(shù)據(jù)源,對設(shè)計捕獲算法的性能進(jìn)行驗算。該數(shù)據(jù)源的數(shù)字中頻為1.405 MHz,采樣頻率為5.714 285 MHz。根據(jù)經(jīng)驗選取門限值為3,捕獲結(jié)果如圖4所示。
由圖4可以看出,用于捕獲的該段GPS數(shù)字中頻信號包含有7、8、24、28、29、31共6顆衛(wèi)星的信號。
圖4 衛(wèi)星信號捕獲結(jié)果Fig.4 Acquisiton result of GPS signal
文獻(xiàn)[2]給出了一種通用C/A碼信號跟蹤算法的結(jié)構(gòu)圖,如圖5所示。由圖5可以看出,衛(wèi)星信號跟蹤環(huán)路主要由碼跟蹤環(huán)和載波跟蹤環(huán)兩大部分組成,其中碼跟蹤環(huán)常用的有延時鎖定環(huán)(DLL),載波跟蹤環(huán)常用的有鎖頻環(huán)(FLL)、鎖相環(huán)(PLL)、四相鑒頻器(FQFD)等。
圖5 載波跟蹤原理圖Fig.5 Block diagram of carrier tracking algorithm
載波跟蹤的通常作法為采用四相鑒頻對輸入信號進(jìn)行牽引,保證本地復(fù)制載波的頻率和輸入信號的頻率之差在鎖頻環(huán)或鎖相環(huán)工作的允許誤差內(nèi),在通過鎖頻環(huán)或鎖相環(huán)完成對輸入信號頻率及相位的跟蹤,通過碼跟蹤環(huán)保持對C/A碼碼相位的跟蹤。載波跟蹤環(huán)和碼跟蹤環(huán)同時進(jìn)行,完成對輸入信號的跟蹤,達(dá)到解調(diào)數(shù)據(jù)碼(D碼)的功能。
本文采用一種基于歸一化超前減滯后功率鑒相器的碼跟蹤環(huán)[2,4]和一種基于四相鑒頻器、二階鎖頻環(huán)和三階鎖相環(huán)組成的混合載波跟蹤環(huán)[5]組成的GPS衛(wèi)星信號跟蹤算法。
采用所設(shè)計的跟蹤算法對捕獲算法所用的數(shù)字中頻信號進(jìn)行跟蹤,跟蹤結(jié)果的前4 s數(shù)據(jù)如圖6所示。其中圖6(a)為早碼、即時碼和遲碼每毫秒相干積分后對應(yīng)的模值,圖6(b)為跟蹤環(huán)中同相即時碼對應(yīng)的幅值。由圖6(b)可以看出,即時碼的幅值對應(yīng)于數(shù)據(jù)碼。
圖6 衛(wèi)星信號跟蹤結(jié)果Fig.6 Tracking result of GPS signal
解調(diào)算法(比特同步算法)的功能是從輸入數(shù)字中頻信號中提取出二進(jìn)制的數(shù)據(jù)碼。由于數(shù)據(jù)碼是頻率為50 Hz的二進(jìn)制碼,其每個碼元的長度為20 ms,因此只要找到跟蹤算法中得到同相即時碼每20 ms處的比特跳變沿即可完成二進(jìn)制數(shù)據(jù)碼的提取。具體做法為:找到處理數(shù)據(jù)中所有跳變沿的位置,在跳變沿位置中尋找3個之間相差20 ms整數(shù)倍長度的跳變沿,則認(rèn)為這3個跳變沿所在的位置就是真正的比特邊沿,繼而所有和3個跳變沿相差20 ms長度的位置均為比特邊沿,從而完成了二進(jìn)制數(shù)據(jù)碼的提取。
當(dāng)完成了導(dǎo)航數(shù)據(jù)的位同步后,下一步的工作是找到導(dǎo)航數(shù)據(jù)中子幀1的起始點,然后根據(jù)電文的內(nèi)容進(jìn)行校驗,檢驗電文的正確性,最后按照電文的固定格式解調(diào)出有用的電文信息,這個過程統(tǒng)稱為幀同步。由模擬器中電文生成算法可以看出,每一幀電文的導(dǎo)言均為“10001011”。在進(jìn)行位同步的過程中,首先將解調(diào)出導(dǎo)航數(shù)據(jù)中的“0”轉(zhuǎn)換為“-1”,然后將得到的導(dǎo)航數(shù)據(jù)和導(dǎo)言“1 -1 -1 -1 1 -1 1 1”作相關(guān),當(dāng)每子幀頭和導(dǎo)言作相關(guān)時,其相關(guān)值的絕對值應(yīng)為8。由于導(dǎo)航數(shù)據(jù)中也可能存在和導(dǎo)言相同的數(shù)據(jù)位,從而出現(xiàn)子幀頭的誤判斷,因此需要多判斷幾個子幀頭。具體做法為:首先和導(dǎo)言作相關(guān)找到絕對值大于7.9的相關(guān)值對應(yīng)的導(dǎo)航數(shù)據(jù),如果該數(shù)據(jù)點是子幀頭,那么該數(shù)據(jù)點加上300位(一個子幀的長度)應(yīng)該也為子幀頭,該數(shù)據(jù)點后的8位導(dǎo)航數(shù)據(jù)和導(dǎo)航數(shù)據(jù)作相關(guān)其絕對值也應(yīng)該大于7.9;反之如果該相關(guān)值小于7.9,則說明找到的導(dǎo)航數(shù)據(jù)位不是子幀頭。如此連續(xù)檢驗3個子幀頭,如果滿足上述大于7.9的相關(guān)值,則認(rèn)為找到的導(dǎo)航數(shù)位為子幀頭。找到子幀頭后,再將導(dǎo)航數(shù)據(jù)中的“-1”還原為“0”。子幀頭后的連續(xù)8個數(shù)據(jù)位應(yīng)該為導(dǎo)言位,如果為“10001011”,則說明該幀電文不存在數(shù)據(jù)位翻轉(zhuǎn),反之如果為“01110100”,則說明該幀電文存在數(shù)據(jù)位翻轉(zhuǎn),需要將該幀電文中的“0”轉(zhuǎn)換為“1”,“1”轉(zhuǎn)換為“0”。找到子幀頭后,下一步的工作是找到子幀1的起始位,則導(dǎo)航電文的結(jié)構(gòu)可知,每幀電文的第63~68位共6位為子幀號,將該6位數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù),由于子幀號最大為5,則該數(shù)據(jù)應(yīng)該大于0而小于等于5,否則認(rèn)為該幀電文數(shù)據(jù)存在錯誤。然后找子幀號為1的子幀頭,則該子幀頭即為子幀1的起始位。
找到子幀1的起始位后,需要對電文進(jìn)行校驗,判斷電文的可用性。首先將判斷電文的第59位、第60位是否為“0”,如果不為“0”,說明電文存在錯誤,該幀電文不可用;如果均為“0”,則對該幀電文進(jìn)行奇偶校驗,如果奇偶校驗正確,說明該幀電文可用,反之不可用。子幀2~5的校驗算法同子幀1的校驗算法。奇偶校驗算法的原理及流程詳見文獻(xiàn)[7]。
當(dāng)所得到的二進(jìn)制數(shù)據(jù)碼通過奇偶校驗算法時,余下的工作是從該數(shù)據(jù)碼中提出有用的星歷信息。衛(wèi)星星歷是描述衛(wèi)星運動軌道的信息,包含一組對應(yīng)于某一時刻的衛(wèi)星軌道參數(shù)及其變化率。根據(jù)衛(wèi)星星歷可以計算出任意時刻的衛(wèi)星位置及速度。導(dǎo)航電文的基本單位是一個主幀,每個主幀的長度為1 500 bit,由5個子幀組成,每個子幀含有10個字,每個字含有30 bit電文。對C/A碼接收機而言,主要用到了前3幀的星歷電文。星歷電文的格式及衛(wèi)星位置、速度計算的公式詳見文獻(xiàn)[8]。衛(wèi)星星歷查看界面及衛(wèi)星狀態(tài)查看界面的設(shè)計分別如圖8和圖9所示。
圖7 衛(wèi)星星歷數(shù)據(jù)查看界面Fig.7 Frame to show ephemeris data
圖8 衛(wèi)星狀態(tài)查看界面Fig.8 Frame to show status of a satellite
由于GPS軟件接收機處理的數(shù)字中頻信號沒有絕對的時間參考,唯一的時間參考是采樣頻率,因此采用相對的方法測量偽距。如果不考慮每顆衛(wèi)星的時鐘修正項,所有衛(wèi)星的子幀1的起始點都是在同一時刻發(fā)射的。子幀1每30 s出現(xiàn)一次,而兩顆衛(wèi)星之間的最大時間差約為19 ms,這就說明如果兩顆衛(wèi)星的時間差在幾十毫秒之內(nèi),那么這兩個子幀必定是同一時刻發(fā)射的。由于傳播距離的不同,各個子幀的起始點在處理GPS數(shù)字中頻信號中的位置并不相同,而這些位置之間的時間差就代表不同衛(wèi)星到接收機的距離差,稱之為相對偽距。相對偽距的測量原理如圖9所示。
圖9 偽距測量原理Fig.9 Principle of pseudorang measurement
相對偽距的測量過程為:在跟蹤算法中找到某顆衛(wèi)星子幀1的起始點,并從第一子幀中讀出該子幀離開衛(wèi)星的時刻,記為How,然后啟動C/A碼計數(shù)器和D碼計數(shù)器,C/A碼計數(shù)器的計數(shù)范圍為0~19,當(dāng)處理數(shù)據(jù)的長度夠一個D碼的長度時,D碼計數(shù)器加1,C/A碼計數(shù)器歸0。D碼計數(shù)器的長度為一個子幀的長度,即0~300。當(dāng)D碼計數(shù)器至300時,表明處理完一個子幀,D碼計數(shù)器歸0,How值加6。進(jìn)行導(dǎo)航解算數(shù)據(jù)點對C/A碼的碼相位可由跟蹤算法得到。設(shè)第i顆衛(wèi)星的D碼計數(shù)器為n1,C/A碼計數(shù)器為n2,C/A碼碼相位為n3,1個C/A碼的最大碼相位為MaxPhase,則進(jìn)行導(dǎo)航解算數(shù)據(jù)點對應(yīng)衛(wèi)星信號離開第i顆衛(wèi)星的GPS時為
假定輸入GPS數(shù)字中頻信號一共含有n顆衛(wèi)星,導(dǎo)航解算數(shù)據(jù)點對應(yīng)衛(wèi)星信號離開第i顆衛(wèi)星的GPS時分別為T1,T2,…,Tn,由于衛(wèi)星到用戶時間延遲的范圍為67~86 ms,因此可以選擇導(dǎo)航解算時刻對應(yīng)的本地接收機時間為
Tlocal=70+max (T1,T2,…,Tn)
(3)
則各顆衛(wèi)星的測量偽距可以表示為
(4)
由提取出的星歷數(shù)據(jù)和式(2),可以求出各顆衛(wèi)星在Ti時刻衛(wèi)星的位置。在根據(jù)式(4),可以得到一組導(dǎo)航定位解算的方程:
式中,xi,yi,zi,(i=1,2,3,…,n)分別為第i顆衛(wèi)星在Ti時刻的坐標(biāo),xu,yu,zu為Tlocal時刻接收機的坐標(biāo),c為光速,tu為接收機時鐘與GPS系統(tǒng)時鐘之間的偏移。根據(jù)式(5),采用最小二乘法或卡爾曼濾波法可以求出xu,yu,zu,tu。至此完成了Tlocal時刻的導(dǎo)航解算。
GPS軟件接收機的導(dǎo)航信號處理和導(dǎo)航解算功能是在Microsoft Visual C++ 6.0軟件中實現(xiàn)的。GPS軟件接收機的軟件采用面向?qū)ο蟮脑O(shè)計方法,將軟件接收機的各個模塊功能分別進(jìn)行封裝。該軟件接收機主要由兩個線程組成,一個線程通過定時器完成軟件接收機人機交互各個界面中參數(shù)的更新,另一個線程完成GPS軟件接收機的所有功能。所設(shè)計的軟件接收機的主界面如圖10所示。
圖10 軟件接收機主界面Fig.10 Main frame of GPS software receiver
在計算機中對該數(shù)字中頻信號用本文的捕獲、跟蹤及解調(diào)算法對該數(shù)據(jù)進(jìn)行了處理,再利用3.3節(jié)中提到的算法對導(dǎo)航數(shù)據(jù)進(jìn)行解算處理,在計算出衛(wèi)星位置和偽距后采用擴展卡爾曼濾波(EKF)方法進(jìn)行定位解算,得到一組定位結(jié)果如圖11所示。
圖11 軟件接收機定位結(jié)果圖Fig.11 Positioning results of GPS software receiver
由定位結(jié)果可以看出,本軟件接收機的定位結(jié)果穩(wěn)定性較好。由測量點的實際位置和本文的定位結(jié)果相比較可知,該定位結(jié)果和實際位置基本上一致。由此可以得出結(jié)論,本軟件接收機的設(shè)計是有效的。
該軟件接收機的特色是采用純軟件的方法,實現(xiàn)了射頻前端輸出數(shù)字中頻信號后的所有硬件功能,并且修改靈活方便。同時兼容GPS L1/L2雙頻段衛(wèi)星信號、實時性良好的GPS軟件接收機由于信號結(jié)構(gòu)的限制,同時涉及到的技術(shù)難點較多,是GPS軟件接收機的研究難點及重點。
參考文獻(xiàn):
[1] Tsui J B Y. Fundamentals of Global Positioning System Receivers: A Software Approach [M]. New York: John Wiley & Sons Inc., 2000:133-190.
[2] Kaplan E D.Understanding GPS Principles and Applications[M].Norwood:Artech House,1996:153-199.
[3] 羅大成,王仕成,曾洪貴,等.一種GPS軟件接收機的設(shè)計[J].儀器儀表學(xué)報,2008,29(9):1856-1861.
LUO Da-cheng,WANG Shi-cheng,ZENG Hong-gui,et al.Design of a software GPS receiver[J].Chinese Journal of Scientific Instrument,2008,29(9):1856-1861.(in Chinese)
[4] Ping Lian. Improving Tracking Performance of PLL in High Dynamic Application [D]. Canada: the University of Calgary, 2004:35-55.
[5] 羅大成,王仕成,劉志國,等.一種基于FQFD/FLL/PLL的混合載波跟蹤算法[J].航天控制, 2009,27(1):10-14.
LUO Dacheng,WANG Shi-cheng,LIU Zhi-guo,et al.A Hybrid Carrier Tracking Algorithm Based on FQFD,FLL and PLL[J].Aerospace Control,2009,27(1):10-14.(in Chinese)
[6] 王惠南.GPS導(dǎo)航原理與應(yīng)用[M].北京:科學(xué)出版社,2003:74-89.
WANG Hui-nan.Principles and Applications of GPS Navigation [M].Beijing:Science Press,2003:74-89.(in Chinese)
[7] IRN-200C-001,ICD-GPS-200C[S].
[8] 楊俊,武奇生.GPS基本原理及其Matlab仿真[M].西安:西安電子科技大學(xué)出版社,2006:164-180.
YANG Jun,WU Qi-sheng.GPS Principles and Its Matlab Simulation[M].Xi′an:Xidian University Press,2006:164-180.(in Chinese)
[9] 張博,楊春,解楠,等.FFT快速捕獲算法在GPS C/A碼與P(Y)碼中的應(yīng)用[J].電訊技術(shù),2008,48(12):34-38.
ZHANG Bo, YANG Chun,XIE Nan,et al.Application of Fast FFT Acquisition Algorithm in GPS C/A and P(Y)Codes [J].Telecommunication Engineering,2008,48(12):34-38.(in Chinese)