基于DSP的GPS定位解算算法研究與實(shí)現(xiàn)
摘要:采用TI公司的TMS320C6713DSP芯片實(shí)現(xiàn)了GPS接收機(jī)定位解算功能。利用該芯片實(shí)現(xiàn)GPS接收機(jī)各模塊的調(diào)度,完成對(duì)時(shí)間觀測(cè)量和導(dǎo)航電文的提取,進(jìn)行衛(wèi)星位置解算和用戶位置解算以及對(duì)外接口。試驗(yàn)結(jié)果表明,根據(jù)該方案設(shè)計(jì)的GPS接收機(jī)工程樣機(jī)可以準(zhǔn)確地實(shí)現(xiàn)定位解算功能。
關(guān)鍵詞:GPS接收機(jī);TMS320C6713;中斷;EMIF;定位解算
0 引言
全球定位系統(tǒng)(GlobaI Positioning System,GPS)是一種全天候、全球覆蓋、高精度的衛(wèi)星導(dǎo)航定位系統(tǒng)。該系統(tǒng)向有適當(dāng)接收設(shè)備的全球范圍用戶提供精確、連續(xù)的三維位置和時(shí)間信息。DSP芯片具有適合于數(shù)字信號(hào)處理的硬件和軟件資源,運(yùn)算速度快,精度高,接口豐富,穩(wěn)定性好,可用于實(shí)現(xiàn)復(fù)雜的數(shù)字信號(hào)處理算法。隨著DSP技術(shù)的發(fā)展,GPS衛(wèi)星信號(hào)的實(shí)時(shí)處理越來越趨向于用DSP來實(shí)現(xiàn)。TMS320C67 13是TI公司生產(chǎn)的一種32位高性能浮點(diǎn)型數(shù)字信號(hào)處理器,功能強(qiáng)大,片內(nèi)資源豐富,外擴(kuò)存儲(chǔ)器方便,運(yùn)算速度快,無論從速度上還是精度上,TMS320C6713芯片都完全可以滿足GPS接收機(jī)系統(tǒng)的設(shè)計(jì)要求。
1 GPS定位解算原理
1.1 用戶位置的計(jì)算
GPS衛(wèi)星定位系統(tǒng)定位的基本原理是延時(shí)測(cè)距,通過測(cè)量空間己知位置上信號(hào)傳播的時(shí)間延遲,確定該己知位置至用戶的距離,根據(jù)測(cè)量距離解算出用戶的三維位置和用戶與已知位置的時(shí)間偏移量。為了確定用戶的三維位置(xu,yu,zu)和時(shí)間偏移量,需要同時(shí)對(duì)4顆衛(wèi)星進(jìn)行跟蹤并獲取其偽距:
由于這個(gè)方程組是非線性的,很難直接求解,解非線性方程組一個(gè)常用的方法就是線性化。由于用戶的三維位置和時(shí)間偏移量是未知量,于是可以認(rèn)為未知的接收機(jī)位置和時(shí)間偏移量由近似分量和修正分量△xu,△yu,△zu,△tu兩部分組成,即:
式中:ρj是第j顆衛(wèi)星的偽距觀測(cè)量;xj,yj,zj是根據(jù)第j顆衛(wèi)星的星歷計(jì)算出該顆衛(wèi)星的位置,均為已知量;用戶的三維位置和時(shí)間偏移量的修正分量△xu,△yu,△zu,△tu是未知量,近似分量可以認(rèn)為是已知量。因?yàn)榭梢越o這些近似分量賦初值,由初值可以解出一組修正分量△xu,△yu,△zu,△tu,近似分量經(jīng)過修正之后又可以認(rèn)為是已知量,重復(fù)這個(gè)計(jì)算過程,直到修正分量小到預(yù)定的范圍之內(nèi)。最后的近似分量就是要解的用戶的三維位置和時(shí)間偏移量。這種方法即基于線性化的迭代法。[!--empirenews.page--]
1.2 偽距的獲取
分析GPS定位解算算法可知,要解算用戶的三維位置和時(shí)間偏移量,首先需要獲得各顆衛(wèi)星的位置和相應(yīng)的偽距觀測(cè)量,因此,偽距觀測(cè)量的精度直接影響到用戶位置解算的精度。
在GPS接收機(jī)中,可以任意選擇一個(gè)時(shí)刻作為本地參考時(shí)間,本地參考時(shí)間與GPS系統(tǒng)時(shí)間的差值即為時(shí)間偏移量tu。對(duì)于GPS信號(hào)發(fā)射時(shí)間而言,如果不考慮每顆衛(wèi)星的時(shí)鐘修正項(xiàng),所有衛(wèi)星的導(dǎo)航電文子幀1的起始點(diǎn)都是在同一時(shí)刻發(fā)射的,因此可以認(rèn)為不同衛(wèi)星的導(dǎo)航電文子幀1的發(fā)射時(shí)刻是相同的,但是不同衛(wèi)星的子幀1的起始點(diǎn)是在不同時(shí)刻接收到的,這個(gè)時(shí)間差就代表不同衛(wèi)星到接收機(jī)的時(shí)間差,即距離差。在導(dǎo)航電文中,子幀1每30 s出現(xiàn)1次,而不同衛(wèi)星信號(hào)到達(dá)接收機(jī)所需時(shí)間的差值最大只有20 ms。因此,很容易保證所觀測(cè)的不同衛(wèi)星的子幀1都是在同一時(shí)刻發(fā)送的。統(tǒng)計(jì)本地參考時(shí)間與所接收到的衛(wèi)星星歷子幀1的開始位置的時(shí)間間隔即可得到偽距信息,如圖1所示為偽距測(cè)量的時(shí)間關(guān)系。
在GPS接收機(jī)內(nèi)部存在兩種時(shí)間統(tǒng)計(jì)方式,本地時(shí)間T和道時(shí)間Ti。本地時(shí)間可以選擇任意一個(gè)時(shí)刻作為參考,之后便由本地晶振計(jì)數(shù)累加。通道時(shí)間由三部分組成:20 ms計(jì)數(shù)TD,1 ms計(jì)數(shù)TCA和C/A碼相位計(jì)數(shù)TCAphasc。每個(gè)通道在接收到導(dǎo)航電文子幀1的TLM遙測(cè)字時(shí)刻,三個(gè)計(jì)數(shù)值同時(shí)清零,之后由跟蹤得到的C/A碼相位為步長(zhǎng)累加,即通道時(shí)間Ti為:
Ti=TD/50+TCA/1 000+TCAphasc/(1 023×1 000)
在某一中斷時(shí)刻,本地參考時(shí)間與GPS系統(tǒng)時(shí)間的差值即為時(shí)間偏移量tu,本地參考時(shí)問和各個(gè)通道時(shí)間的差值與光速乘積即為ρi,即:
ρi=(T-Ti)·c
2 系統(tǒng)方案設(shè)計(jì)
一般來說,在實(shí)時(shí)信號(hào)處理系統(tǒng)中,底層信號(hào)處理的特點(diǎn)是處理的數(shù)據(jù)量大,處理速度高,但運(yùn)算結(jié)構(gòu)相對(duì)比較簡(jiǎn)單,適于用FPGA進(jìn)行硬件實(shí)現(xiàn),這樣能同時(shí)兼顧速度及靈活性。上層信號(hào)處理的特點(diǎn)是處理的數(shù)據(jù)量較少,但算法的控制結(jié)構(gòu)復(fù)雜,適于用運(yùn)算速度高,尋址方式靈活,通信機(jī)制豐富的DSP芯片來實(shí)現(xiàn)。
由于GPS接收機(jī)系統(tǒng)涉及到GPS信號(hào)捕獲算法、載波跟蹤算法、碼跟蹤算法、衛(wèi)星位置解算,用戶位置解算、以及大量的相關(guān)算法計(jì)算,綜合算法復(fù)雜且運(yùn)算量相當(dāng)大,同時(shí)GPS接收機(jī)系統(tǒng)要求很高的定位精度和實(shí)時(shí)的動(dòng)態(tài)性能,對(duì)系統(tǒng)的體積、功耗、穩(wěn)定性等也都有較嚴(yán)格的要求。如果所有任務(wù)都由DSP來完成,不僅對(duì)DSP的壓力很大,還有可能滿足不了系統(tǒng)的實(shí)時(shí)性要求。為了協(xié)同DSP完成整個(gè)GPS接收機(jī)系統(tǒng)的工作,在該系統(tǒng)中采用一片DSP高速微處理器和FPGA大規(guī)??删幊剃嚵薪M合搭建了系統(tǒng)硬件平臺(tái),F(xiàn)PGA主要完成GPS信號(hào)的捕獲、跟蹤和解擴(kuò)解調(diào),以得到導(dǎo)航和測(cè)距信息;DSP芯片作為系統(tǒng)的主處理芯片,主要負(fù)責(zé)數(shù)據(jù)處理,以及對(duì)邏輯控制模塊的通信與控制,而系統(tǒng)外圍設(shè)備的控制與通信工作由FPGA完成。這樣可以使整個(gè)系統(tǒng)的任務(wù)合理分配,DSP芯片能更專注于大量數(shù)據(jù)的處理,使信號(hào)處理的實(shí)時(shí)性得以保證??傮w框圖如2所示。
[!--empirenews.page--]
以下簡(jiǎn)要說明DSP的工作流程:
(1)DSP系統(tǒng)初始化,等待外部中斷;
(2)中斷到來,由外部中斷4得到時(shí)間觀測(cè)量,由外部中斷5得到導(dǎo)航電文;
(3)對(duì)時(shí)間觀測(cè)量和導(dǎo)航電文進(jìn)行拼接組合,由時(shí)間觀測(cè)量得到偽距信息,由導(dǎo)航電文計(jì)算衛(wèi)星發(fā)射時(shí)刻的位置,其中包括觀測(cè)衛(wèi)星在WGS-84坐標(biāo)系下的三維位置、仰角和方位角等;
(4)根據(jù)觀測(cè)衛(wèi)星的星歷對(duì)偽距進(jìn)行修正,并進(jìn)行電離層和對(duì)流層校正等;
(5)根據(jù)定位原理,計(jì)算出用戶的三維位置,校正本地時(shí)間,并將三維位置轉(zhuǎn)換成所需要的坐標(biāo)格式;
(6)通過McBSP串口輸出定位結(jié)果,并對(duì)輸出結(jié)果進(jìn)行記錄。
2.1 中斷
中斷是DSP系統(tǒng)的基本功能。一般而言,中斷表明一個(gè)特別事件的開始或結(jié)束。一個(gè)DSP系統(tǒng)需要與多個(gè)事件打交道,這些事件可能是內(nèi)部的,也可能是外部的,而這些事件發(fā)生的時(shí)間是不確定的,也就是這些事件可能是異步的。異步事件的發(fā)生具有時(shí)間上的不確定性,一旦異步事件發(fā)生,就要求DSP能夠隨之做出相應(yīng)的反應(yīng)和處理。中斷就可以提供這樣的一種機(jī)制,一旦異步事件發(fā)生,DP立即暫停CPU當(dāng)前的處理任務(wù),按預(yù)先的安排對(duì)該事件進(jìn)行處理,處理完畢后,CPU再繼續(xù)原來的任務(wù)。中斷可以由外部設(shè)備產(chǎn)生,也可以由DSP內(nèi)部產(chǎn)生。由硬件或軟件驅(qū)動(dòng)的中斷信號(hào)可使DSP中止當(dāng)前程序并執(zhí)行另一個(gè)程序,該程序稱為中斷服務(wù)程序。
TMS320C6713的中斷處理過程分為三個(gè)階段:
(1)中斷請(qǐng)求。當(dāng)有中斷請(qǐng)求時(shí),DSP將IFR寄存器的相應(yīng)位置1。
(2)中斷確認(rèn)。對(duì)于軟件中斷和不可屏蔽中斷,CPU是立即響應(yīng)的;對(duì)于可屏蔽中斷,要滿足下列條件才能響應(yīng):CSR寄存器的GIE位為0,IER寄存器的NMIE位為1,IER寄存器的相應(yīng)位為1,優(yōu)先級(jí)最高。
(3)中斷處理。保護(hù)特定的寄存器,執(zhí)行中斷服務(wù)程序,完成后恢復(fù)寄存器。
如圖2所示,在該系統(tǒng)的設(shè)計(jì)中,使用了外部中斷4和外部中斷5。每當(dāng)DSP接收到中斷請(qǐng)求,立即暫停CPU當(dāng)前的處理任務(wù),進(jìn)入中斷服務(wù)程序,處理完畢后,CPU再繼續(xù)原來的任務(wù)。由外部中斷4得到時(shí)間觀測(cè)量,由外部中斷5得到導(dǎo)航電文。DSP提供的中斷是以中斷向量表的形式出現(xiàn)的,該系統(tǒng)的部分中斷向量表如下:
2.2 EMIF接口
EMIF是外部存儲(chǔ)器與TMS320C6713片內(nèi)單元間的接口。CPU訪問片外存儲(chǔ)器時(shí)一般通過EMIF接口,DSP的EMIF具有很強(qiáng)的接口能力。TMS320~C6713的EMIF接口有20根地址總線,32位數(shù)據(jù)總線,4個(gè)片選信號(hào)和多種控制信號(hào),能夠支持多種不同類型的外部存儲(chǔ)器件。其中,每個(gè)片選空間是相對(duì)獨(dú)立的,各自占用一段地址,能夠適應(yīng)不同速率的存儲(chǔ)器件。
如圖2所示,圖中ED[31:0]表示數(shù)據(jù)總線,EA[21:2]表示地址總線,CE[3:0]為片選信號(hào),AOE為輸出使能信號(hào),ARE為讀使能信號(hào),AWE為寫使能信號(hào)。通過控制信號(hào)、數(shù)據(jù)總線和地址總線的配合使用,就可以完成DSP與外部存儲(chǔ)器件的數(shù)據(jù)交換。
圖3所示為TMS320C6713EMIF接口的讀時(shí)序。圖中讀的建立需要兩個(gè)時(shí)鐘周期,之后每個(gè)觸發(fā)需要兩個(gè)時(shí)鐘周期,在AlRE的下降沿,F(xiàn)PGA將時(shí)間觀測(cè)量和導(dǎo)航電文放在數(shù)據(jù)總線上,在ARE的上升沿,也就是數(shù)據(jù)保持的中間時(shí)刻,DSP讀取數(shù)據(jù),這樣就完成了FPGA與DSP的數(shù)據(jù)交換。
在該系統(tǒng)的設(shè)計(jì)中,時(shí)間觀測(cè)量的幀格式如圖4所示,導(dǎo)航電文的幀格式如圖5所示,DSP由EMIF接口接收到時(shí)間觀測(cè)量和導(dǎo)航電文之后,首先進(jìn)行數(shù)據(jù)的拼接組合,由時(shí)間觀測(cè)量得到偽距,由導(dǎo)航電文計(jì)算出衛(wèi)星發(fā)射時(shí)刻的位置。[!--empirenews.page--]
3 試驗(yàn)結(jié)果
在本設(shè)計(jì)的試驗(yàn)中使用了某種GPS衛(wèi)星信號(hào)模擬器,采用信號(hào)直接注入的方法,模擬器模擬用戶在WG-84坐標(biāo)系下某靜態(tài)位置。接收機(jī)經(jīng)過射頻前端模塊、數(shù)字信號(hào)轉(zhuǎn)換模塊、基帶信號(hào)處理模塊之后,由EMIF接口將時(shí)間觀測(cè)量和導(dǎo)航電文傳給DSP,之后由DSP負(fù)責(zé)定位解算數(shù)據(jù)處理。在本系統(tǒng)中,導(dǎo)航電文每6 s發(fā)送1次,時(shí)間觀測(cè)量每100 ms發(fā)送1次,即每秒進(jìn)行10次定位解算。由McBSP串口發(fā)送連續(xù)1 000點(diǎn)定位解算結(jié)果,如圖6所示,圖6(a),(c),(e)為定位解算結(jié)果,圖6(b),(d),(f)為定位解算結(jié)果與模擬位置距離之差。從圖中可以看出,定位解算結(jié)果與模擬位置之差為5 m左右。
4 結(jié)語(yǔ)
本文設(shè)計(jì)的基于TMS320C6713的GPS定位解算可以完整的實(shí)現(xiàn)定位解算功能,但與高精度GPS接收機(jī)相比,由于跟蹤環(huán)路的設(shè)計(jì)與電離層、對(duì)流層修正模型的區(qū)別,定位精度還是存在一定的差距,需要進(jìn)一步改進(jìn)。