葛愛學1,2,羅大成,廖守億,劉志國
(1.清華大學 計算機系,北京 100084;2.第二炮兵裝備研究院,北京100085;3第二炮兵工程學院,西安 710025)
GPS軟件接收機主要基于軟件無線電(Software Defined Radio,SDR)思想,即將硬件作為無線通信基本平臺,而把盡可能多的無線及個人通信功能用軟件來實現。GPS軟件接收機可以采用通用開放性的可編程數字信號處理平臺,通過加載不同的算法程序實現不同的功能,方便升級和實現新的處理算法。
GPS軟件接收機自James Bao-Yen Tsui[1]于2000年出版的第一本基于軟件無線電概念論述GPS接收機設計基礎的著作發展至今,經歷了由最初的單一通道到現在最多12通道,由L1頻段C/A碼信號到L1/L2雙頻段衛星信號,由本地數字中頻信號后處理到GPS衛星信號實時處理的過程。同時,國內外諸多研究院所及公司進行了GPS軟件接收機的研究工作:國外代表性的有美國的NAVSYS公司、Stanford大學、瑞典Lule科技大學、歐洲GJU(Galileo Joint Undertaking)、德國FAF Munich大學和加拿大Calgary大學等對GPS軟件接收機技術進行了研究和開發;國內代表性的有北京航空航天大學、國防科技大學、浙江大學等。GPS軟件接收機還方便與其它定位方式進行組合,多通道、多頻段及實時化的GPS軟件接收機仍是GPS接收機的發展方向。
由于美國對GPS L2載波上的P碼采用了嚴格的保密措施,因此本文所設計的GPS軟件接收機主要針對L1載波上的C/A碼信號。
設衛星i的C/A碼信號ACCi(t)Di(t)sin (ω1t+φ1)為所需要的信號(式中φ1=ωdt+φ1,ωd為多普勒頻率,φ1為初相),而其它衛星的信號被視為干擾信號,用Sj表示,噪聲和其它干擾信號用n(t)表示,這樣天線接收到的混合信號S(t)為

(1)
式中,ωL1=2πfL1,fL1=1 575.42 MHz,m為接收到信號的衛星數目。
從天線接收到的GPS導航信息需要通過射頻模塊轉換為GPS軟件接收機的輸入信號源,即數字中頻信號。一種基于GP2010的射頻前端模型如圖1所示,主要由三級下變頻電路、低通濾波器、A/D轉換電路和自動增益控制器(AGC)組成[1,2]。

圖1 射頻前端模型Fig.1 Generic GPS RF front end model
數字中頻信號在GPS軟件接收機中的流程如圖2所示。

圖2 GPS軟件接收機信號流程Fig.2 Signal flow graph of software GPS receiver
由圖2可知,GPS軟件接收機主要由捕獲算法、跟蹤算法、解調算法、基帶信號處理和導航解算算法等組成,故GPS軟件接收機的設計也圍繞這幾方面展開。
GPS衛星信號捕獲的目的主要有兩個[3]:首先是使本地產生的偽碼與調制在衛星信號上的偽碼粗同步,使兩者的碼相位差在一個碼片以內,實現衛星信號的相關解擴,為碼跟蹤算法提供初始相位;其次是粗估計衛星信號的多普勒頻率,為載波跟蹤算法提供頻率初始值。
GPS衛星信號的捕獲主要基于信號中偽隨機碼的良好相關性,即只有當本地復制載波的頻率和衛星信號中的某顆衛星下變頻后的頻率相同,且本地復制C/A的碼相位和該顆衛星對應C/A碼的碼相位在一個碼片內,本地復制信號和衛星信號的相關值才會出現峰值。因此,GPS信號的捕獲過程為:調整接收機本地信號發生器的碼相位和多普勒頻率估計值,使信號對準某一搜索單元,若信號捕獲成功,則搜索停止而碼跟蹤啟動;若信號被否決,則碼相位步進一單元,直到整個碼域搜索完畢。若信號仍未捕獲,則多普勒頻率步進一單元,重復上述過程。
由于本地復制載波和輸入GPS數字中頻信號的相關計算可以轉換為快速傅里葉變換(FFT)來完成[9],因此目前GPS信號捕獲算法大多基于FFT,其主要優點是可大大減小運算量,縮短捕獲時間。由于數據碼的一個碼元的長度為20 ms,因此在捕獲用的GPS信號長度不大于10 ms的情況下,連續兩組捕獲長度的GPS信號中必然有一組不存在數據碼的跳變,因此可以選取連續兩組捕獲長度的數據進行捕獲。同時,當本地復制C/A碼的碼相位和衛星信號的碼相位之差大于1個碼片時,相關峰值將小于最大峰值的1/2,因此可以選取相關峰值和碼相位相差一個碼片時的相關最大值的比值作為門限值。一種基于FFT的GPS衛星信號捕獲算法如圖3所示。

圖3 基于FFT的GPS信號快速捕獲算法Fig.3 Block diagram of the fast GPS code acquisition by FFT
采用一組基于GP2015得到GPS數字中頻信號為數據源,對設計捕獲算法的性能進行驗算。該數據源的數字中頻為1.405 MHz,采樣頻率為5.714 285 MHz。根據經驗選取門限值為3,捕獲結果如圖4所示。
由圖4可以看出,用于捕獲的該段GPS數字中頻信號包含有7、8、24、28、29、31共6顆衛星的信號。

圖4 衛星信號捕獲結果Fig.4 Acquisiton result of GPS signal
文獻[2]給出了一種通用C/A碼信號跟蹤算法的結構圖,如圖5所示。由圖5可以看出,衛星信號跟蹤環路主要由碼跟蹤環和載波跟蹤環兩大部分組成,其中碼跟蹤環常用的有延時鎖定環(DLL),載波跟蹤環常用的有鎖頻環(FLL)、鎖相環(PLL)、四相鑒頻器(FQFD)等。

圖5 載波跟蹤原理圖Fig.5 Block diagram of carrier tracking algorithm
載波跟蹤的通常作法為采用四相鑒頻對輸入信號進行牽引,保證本地復制載波的頻率和輸入信號的頻率之差在鎖頻環或鎖相環工作的允許誤差內,在通過鎖頻環或鎖相環完成對輸入信號頻率及相位的跟蹤,通過碼跟蹤環保持對C/A碼碼相位的跟蹤。載波跟蹤環和碼跟蹤環同時進行,完成對輸入信號的跟蹤,達到解調數據碼(D碼)的功能。
本文采用一種基于歸一化超前減滯后功率鑒相器的碼跟蹤環[2,4]和一種基于四相鑒頻器、二階鎖頻環和三階鎖相環組成的混合載波跟蹤環[5]組成的GPS衛星信號跟蹤算法。
采用所設計的跟蹤算法對捕獲算法所用的數字中頻信號進行跟蹤,跟蹤結果的前4 s數據如圖6所示。其中圖6(a)為早碼、即時碼和遲碼每毫秒相干積分后對應的模值,圖6(b)為跟蹤環中同相即時碼對應的幅值。由圖6(b)可以看出,即時碼的幅值對應于數據碼。

圖6 衛星信號跟蹤結果Fig.6 Tracking result of GPS signal
解調算法(比特同步算法)的功能是從輸入數字中頻信號中提取出二進制的數據碼。由于數據碼是頻率為50 Hz的二進制碼,其每個碼元的長度為20 ms,因此只要找到跟蹤算法中得到同相即時碼每20 ms處的比特跳變沿即可完成二進制數據碼的提取。具體做法為:找到處理數據中所有跳變沿的位置,在跳變沿位置中尋找3個之間相差20 ms整數倍長度的跳變沿,則認為這3個跳變沿所在的位置就是真正的比特邊沿,繼而所有和3個跳變沿相差20 ms長度的位置均為比特邊沿,從而完成了二進制數據碼的提取。
當完成了導航數據的位同步后,下一步的工作是找到導航數據中子幀1的起始點,然后根據電文的內容進行校驗,檢驗電文的正確性,最后按照電文的固定格式解調出有用的電文信息,這個過程統稱為幀同步。由模擬器中電文生成算法可以看出,每一幀電文的導言均為“10001011”。在進行位同步的過程中,首先將解調出導航數據中的“0”轉換為“-1”,然后將得到的導航數據和導言“1 -1 -1 -1 1 -1 1 1”作相關,當每子幀頭和導言作相關時,其相關值的絕對值應為8。由于導航數據中也可能存在和導言相同的數據位,從而出現子幀頭的誤判斷,因此需要多判斷幾個子幀頭。具體做法為:首先和導言作相關找到絕對值大于7.9的相關值對應的導航數據,如果該數據點是子幀頭,那么該數據點加上300位(一個子幀的長度)應該也為子幀頭,該數據點后的8位導航數據和導航數據作相關其絕對值也應該大于7.9;反之如果該相關值小于7.9,則說明找到的導航數據位不是子幀頭。如此連續檢驗3個子幀頭,如果滿足上述大于7.9的相關值,則認為找到的導航數位為子幀頭。找到子幀頭后,再將導航數據中的“-1”還原為“0”。子幀頭后的連續8個數據位應該為導言位,如果為“10001011”,則說明該幀電文不存在數據位翻轉,反之如果為“01110100”,則說明該幀電文存在數據位翻轉,需要將該幀電文中的“0”轉換為“1”,“1”轉換為“0”。找到子幀頭后,下一步的工作是找到子幀1的起始位,則導航電文的結構可知,每幀電文的第63~68位共6位為子幀號,將該6位數據轉換為十進制數據,由于子幀號最大為5,則該數據應該大于0而小于等于5,否則認為該幀電文數據存在錯誤。然后找子幀號為1的子幀頭,則該子幀頭即為子幀1的起始位。
找到子幀1的起始位后,需要對電文進行校驗,判斷電文的可用性。首先將判斷電文的第59位、第60位是否為“0”,如果不為“0”,說明電文存在錯誤,該幀電文不可用;如果均為“0”,則對該幀電文進行奇偶校驗,如果奇偶校驗正確,說明該幀電文可用,反之不可用。子幀2~5的校驗算法同子幀1的校驗算法。奇偶校驗算法的原理及流程詳見文獻[7]。
當所得到的二進制數據碼通過奇偶校驗算法時,余下的工作是從該數據碼中提出有用的星歷信息。衛星星歷是描述衛星運動軌道的信息,包含一組對應于某一時刻的衛星軌道參數及其變化率。根據衛星星歷可以計算出任意時刻的衛星位置及速度。導航電文的基本單位是一個主幀,每個主幀的長度為1 500 bit,由5個子幀組成,每個子幀含有10個字,每個字含有30 bit電文。對C/A碼接收機而言,主要用到了前3幀的星歷電文。星歷電文的格式及衛星位置、速度計算的公式詳見文獻[8]。衛星星歷查看界面及衛星狀態查看界面的設計分別如圖8和圖9所示。

圖7 衛星星歷數據查看界面Fig.7 Frame to show ephemeris data

圖8 衛星狀態查看界面Fig.8 Frame to show status of a satellite
由于GPS軟件接收機處理的數字中頻信號沒有絕對的時間參考,唯一的時間參考是采樣頻率,因此采用相對的方法測量偽距。如果不考慮每顆衛星的時鐘修正項,所有衛星的子幀1的起始點都是在同一時刻發射的。子幀1每30 s出現一次,而兩顆衛星之間的最大時間差約為19 ms,這就說明如果兩顆衛星的時間差在幾十毫秒之內,那么這兩個子幀必定是同一時刻發射的。由于傳播距離的不同,各個子幀的起始點在處理GPS數字中頻信號中的位置并不相同,而這些位置之間的時間差就代表不同衛星到接收機的距離差,稱之為相對偽距。相對偽距的測量原理如圖9所示。

圖9 偽距測量原理Fig.9 Principle of pseudorang measurement
相對偽距的測量過程為:在跟蹤算法中找到某顆衛星子幀1的起始點,并從第一子幀中讀出該子幀離開衛星的時刻,記為How,然后啟動C/A碼計數器和D碼計數器,C/A碼計數器的計數范圍為0~19,當處理數據的長度夠一個D碼的長度時,D碼計數器加1,C/A碼計數器歸0。D碼計數器的長度為一個子幀的長度,即0~300。當D碼計數器至300時,表明處理完一個子幀,D碼計數器歸0,How值加6。進行導航解算數據點對C/A碼的碼相位可由跟蹤算法得到。設第i顆衛星的D碼計數器為n1,C/A碼計數器為n2,C/A碼碼相位為n3,1個C/A碼的最大碼相位為MaxPhase,則進行導航解算數據點對應衛星信號離開第i顆衛星的GPS時為
假定輸入GPS數字中頻信號一共含有n顆衛星,導航解算數據點對應衛星信號離開第i顆衛星的GPS時分別為T1,T2,…,Tn,由于衛星到用戶時間延遲的范圍為67~86 ms,因此可以選擇導航解算時刻對應的本地接收機時間為
Tlocal=70+max (T1,T2,…,Tn)
(3)
則各顆衛星的測量偽距可以表示為
(4)
由提取出的星歷數據和式(2),可以求出各顆衛星在Ti時刻衛星的位置。在根據式(4),可以得到一組導航定位解算的方程:
式中,xi,yi,zi,(i=1,2,3,…,n)分別為第i顆衛星在Ti時刻的坐標,xu,yu,zu為Tlocal時刻接收機的坐標,c為光速,tu為接收機時鐘與GPS系統時鐘之間的偏移。根據式(5),采用最小二乘法或卡爾曼濾波法可以求出xu,yu,zu,tu。至此完成了Tlocal時刻的導航解算。
GPS軟件接收機的導航信號處理和導航解算功能是在Microsoft Visual C++ 6.0軟件中實現的。GPS軟件接收機的軟件采用面向對象的設計方法,將軟件接收機的各個模塊功能分別進行封裝。該軟件接收機主要由兩個線程組成,一個線程通過定時器完成軟件接收機人機交互各個界面中參數的更新,另一個線程完成GPS軟件接收機的所有功能。所設計的軟件接收機的主界面如圖10所示。

圖10 軟件接收機主界面Fig.10 Main frame of GPS software receiver
在計算機中對該數字中頻信號用本文的捕獲、跟蹤及解調算法對該數據進行了處理,再利用3.3節中提到的算法對導航數據進行解算處理,在計算出衛星位置和偽距后采用擴展卡爾曼濾波(EKF)方法進行定位解算,得到一組定位結果如圖11所示。

圖11 軟件接收機定位結果圖Fig.11 Positioning results of GPS software receiver
由定位結果可以看出,本軟件接收機的定位結果穩定性較好。由測量點的實際位置和本文的定位結果相比較可知,該定位結果和實際位置基本上一致。由此可以得出結論,本軟件接收機的設計是有效的。
該軟件接收機的特色是采用純軟件的方法,實現了射頻前端輸出數字中頻信號后的所有硬件功能,并且修改靈活方便。同時兼容GPS L1/L2雙頻段衛星信號、實時性良好的GPS軟件接收機由于信號結構的限制,同時涉及到的技術難點較多,是GPS軟件接收機的研究難點及重點。
參考文獻:
[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軟件接收機的設計[J].儀器儀表學報,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導航原理與應用[M].北京:科學出版社,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].西安:西安電子科技大學出版社,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)碼中的應用[J].電訊技術,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)