<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于軟件的GPS接收機(jī)本地系統(tǒng)

          基于軟件的GPS接收機(jī)本地系統(tǒng)

          作者:朱繼耀,張宗橙 時(shí)間:2008-05-16 來(lái)源:《電子工程師》 收藏

            0引言

          本文引用地址:http://www.ex-cimer.com/article/82713.htm

            對(duì)于一個(gè)普通的(全球定位系統(tǒng))接收機(jī)來(lái)說(shuō),其對(duì)信號(hào)的捕獲和追蹤均由硬件進(jìn)行處理,主要是用(專用集成電路)實(shí)現(xiàn)。用的主要好處之一是它的有效性,能夠?qū)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/GPS">GPS信號(hào)進(jìn)行有效處理,但它的造價(jià)較高,而目前技術(shù)還在高速發(fā)展,各種算法還在不斷研究,如果都用來(lái)實(shí)現(xiàn),顯然并不現(xiàn)實(shí)。而使用軟件來(lái)模擬搭建GPS的接收系統(tǒng),不但可以方便地對(duì)現(xiàn)有的一些算法進(jìn)行比較,而且也能快速地應(yīng)用到實(shí)際中。在該系統(tǒng)中,用將輸入的模擬信號(hào)數(shù)字化,然后交由軟件接收機(jī)處理,由此重構(gòu)的系統(tǒng)不僅花費(fèi)較少,而且靈活多變,可以對(duì)各種算法測(cè)試,也可以適用于將來(lái)可能改變的GPS信號(hào),如包括L5 band的不同信號(hào)傳輸載波的頻率。

            目前,MathWorks公司推出的數(shù)值型語(yǔ)言計(jì)算軟件已經(jīng)發(fā)展成為適合多學(xué)科、多種工作平臺(tái)的功能強(qiáng)勁的大型軟件,其在數(shù)值分析和科學(xué)計(jì)算方面的工具能夠用來(lái)進(jìn)行算法的研究和比較。本文充分利用了這一特點(diǎn),對(duì)基于軟件的GPS接收機(jī)本地系統(tǒng)進(jìn)行研究。

            1 GPS信號(hào)的特點(diǎn)

            GPS采用偽隨機(jī)碼擴(kuò)頻系統(tǒng)。其原理見(jiàn)圖1。由圖1可知,GPS衛(wèi)星向用戶發(fā)送的信號(hào)由兩個(gè)分量L1和L2組成。L1的中心頻率為1 575.42 MHz,L2的中心頻率為1 227.6 MHz,L1和L2均是己調(diào)波,其調(diào)制波是衛(wèi)星導(dǎo)航電文D碼和偽隨機(jī)噪聲碼P碼、C/A碼。P碼是精密測(cè)距碼,為取±1的偽隨機(jī)序列,其速率為10.23 Mbit/s,其碼長(zhǎng)為235.469 592 765×103碼元,周期約為266 d 9 h;C/A碼是粗捕獲碼,為取±1的C/A碼偽隨機(jī)序列,其碼速率為1.023 Mbit/s,其碼長(zhǎng)為1 023碼元,周期為1 ms;D碼為取±1的導(dǎo)航電文編碼,其碼速率為50 bit/s載波。

                  

            信號(hào)L1的同相載波分量是用PoD復(fù)合碼進(jìn)行調(diào)制,而正交載波分量是由C/A D復(fù)合碼調(diào)制的。載波信號(hào)L2上只調(diào)制有P碼和D碼。調(diào)制的方法是:首先,P碼與數(shù)據(jù)D碼模2和構(gòu)成復(fù)合碼P D,C/A碼與D碼模2和構(gòu)成復(fù)合碼C/A D;然后,用P D和c/A D復(fù)合碼對(duì)載波L1進(jìn)行調(diào)制。載波調(diào)制均采用移相鍵控調(diào)制,L1采用QPSK(四相移相鍵控)調(diào)制,12采用DPSK(雙相移相鍵控)調(diào)制。這幾個(gè)GPS分量均來(lái)源于一個(gè)公共的基準(zhǔn)頻率,見(jiàn)表1。

                 

            2軟件接收機(jī)的實(shí)現(xiàn)
            
            2.1 GPS信號(hào)處理的主要步驟

            GPS接收機(jī)信號(hào)處理主要包括射頻信號(hào)處理與中頻信號(hào)處理兩部分,如圖2所示。

                  
           
            射頻信號(hào)處理主要是指對(duì)天線接收到的GPS衛(wèi)星信號(hào)進(jìn)行下變頻、采樣、量化處理,得到數(shù)字中頻信號(hào)。它包括天線、RF和。RF用于將信號(hào)變中頻,中頻信號(hào)在中進(jìn)行采樣量化數(shù)字化。輸入的中頻為4.31 MHz,采樣頻率為20 MHz。這個(gè)采樣頻率是最適合進(jìn)行中頻信號(hào)處理的。

            中頻信號(hào)處理主要是指對(duì)數(shù)字中頻信號(hào)進(jìn)行相關(guān)、捕獲、跟蹤、解調(diào)處理,得到衛(wèi)星的導(dǎo)航電文數(shù)據(jù)后,再進(jìn)一步解算出導(dǎo)航信息。本文的軟件接收機(jī)主要處理這些問(wèn)題。

            2.2捕獲模塊

            捕獲模塊的功能是:在輸入信號(hào)多普勒頻率和C/A碼相位二維平面上尋找最大相關(guān)峰,找到對(duì)應(yīng)的載波頻率和C/A碼相位,為本地生成的載波頻率和C/A碼相位與輸入信號(hào)提供粗略的初始值。搜索過(guò)程是將不同碼相位l和載波頻率ωsvn情況下的I、Q兩路的相關(guān)積分值的平方和相關(guān)峰值與規(guī)定的閾值比較,如果大于閾值則找出最大值,此時(shí)所使用的碼相位和載波頻率值即為輸入信號(hào)的碼相位和載波頻率值。

            算法思路如下。在不同頻率、不同C/A碼相位進(jìn)行二維搜索尋找最大相關(guān)峰。首先使本地載波發(fā)生器固定在期望的中頻頻點(diǎn)上,然后使C/A碼發(fā)生器從碼相位為1開(kāi)始運(yùn)行相關(guān)器1 ms時(shí)間,保存并清空I、Q兩路積分值,求I、Q兩路積分值的平方和作為相關(guān)峰值。再令C/A碼發(fā)生器從碼相位2開(kāi)始運(yùn)行l(wèi) ms時(shí)間取得相關(guān)峰值,直到取得相位從1023開(kāi)始運(yùn)行的1 ms時(shí)間相關(guān)峰值。使本地載波發(fā)生器頻率增加一個(gè)頻率步長(zhǎng),比如500 Hz,重復(fù)上述過(guò)程,直到將所有可能的頻率范圍和所有的碼相位都搜索完為止。在搜索得到的二維平面上尋找最大相關(guān)峰的值與對(duì)應(yīng)的頻率和碼相位值。如果最大相關(guān)值大于相關(guān)平面平均相關(guān)值16倍,則可以認(rèn)為接收信號(hào)內(nèi)包含該衛(wèi)星信號(hào),已經(jīng)檢測(cè)出其信號(hào)相關(guān)峰,記錄下對(duì)應(yīng)的頻率和碼相位供后續(xù)程序進(jìn)行跟蹤解碼。最差情況下捕獲時(shí)間可以由二維平面的相關(guān)峰值點(diǎn)數(shù)確定。靜態(tài)定位的多普勒頻偏在-5 kHz~+5 kHz,以500 Hz為頻率間隔則需要在21個(gè)頻點(diǎn)搜索,每個(gè)頻點(diǎn)都需要1 023個(gè)碼相位的搜索,則最差捕獲時(shí)間約為21 s,即

            2.3跟蹤模塊

            跟蹤模塊的功能是:實(shí)現(xiàn)本地C/A碼相位和載波的頻率、相位與輸入信號(hào)的C/A碼相位和載波的嘲率、相位同步,輸出I路中路積分信號(hào)供解碼基帶報(bào)文信號(hào)。算法思路如下。將碼跟蹤與載波跟蹤視為獨(dú)翻的兩個(gè)過(guò)程。碼跟蹤使用超前延遲環(huán)反饋控制C/A碼發(fā)生器調(diào)整碼的相位。其中超前路(E)、中路(P)和延遲路(L)各相差半個(gè)碼片,分別代表信號(hào)提前、準(zhǔn)時(shí)和落后達(dá)到。經(jīng)綜合后,這些信號(hào)分別代表輸入信號(hào)和一個(gè)本地碼之間的相關(guān)性。具有最高相關(guān)值的信號(hào)被選中并保留下來(lái),即當(dāng)超前路的能量和延遲路的能量相同時(shí)可確定中路已與輸入信號(hào)的碼相位對(duì)齊。

            載波跟蹤是先使用FLL(鎖頻環(huán))跟蹤頻率,待跟蹤一段時(shí)間使頻率抖動(dòng)變小后,將鎖定的頻率送給PLL(鎖相環(huán))作為初始值,使用PLL對(duì)信號(hào)的相速度進(jìn)行跟蹤,經(jīng)過(guò)一段時(shí)間跟蹤穩(wěn)定后,累積器的結(jié)果就可以用于解碼基帶電文數(shù)據(jù)。載波跟蹤的I、Q路積分值使用中路的I、Q積分值。先將捕獲得到的粗略頻率作為FLL的初始值,使用I、Q積分值求得頻率差來(lái)調(diào)整跟蹤頻率,待跟蹤一段固定長(zhǎng)時(shí)間可以確定頻率已經(jīng)很接近真實(shí)頻率后,將鎖定頻率送給PLL作為初始值,使用PLL對(duì)信號(hào)的頻率和相位進(jìn)行追蹤,待跟蹤一段時(shí)間穩(wěn)定后本地載波與輸入信號(hào)的頻率和相位將鎖定,累積器的結(jié)果可以用于解碼基帶電文數(shù)據(jù)。綜合碼跟蹤和載波跟蹤的原理圖見(jiàn)圖3。

                  
           
            2.4導(dǎo)航電文解調(diào)、定位模塊

            為了解調(diào)出導(dǎo)航電文,需要進(jìn)一步消除載波的相位誤差。導(dǎo)航電文解調(diào)模塊用以下算法消除誤差,并由I′(k)給出當(dāng)前導(dǎo)航電文的數(shù)據(jù)位。

                 

            式中:I(k)和Q(k)為I、Q分路的即時(shí)分支的第k次累加值;θk為載波相位誤差估計(jì)值,θk=θk1-1+△k-1,且θ0=0,其中△θk為載波相位誤差的估計(jì)殘差,且△θk=sign(I′(K))Q′(k)。
          3設(shè)計(jì)驗(yàn)證和仿真結(jié)果

            為了驗(yàn)證設(shè)計(jì)模型,本文利用GPS信號(hào)模擬器產(chǎn)生的GPS中頻信號(hào)作為輸人信號(hào),并在幾個(gè)典型點(diǎn)上觀察相應(yīng)的模塊輸出波形。

            信號(hào)模擬器可由實(shí)現(xiàn),并可對(duì)信號(hào)的信噪比、多普勒頻率、碼相位等參數(shù)進(jìn)行調(diào)整。

            本文使用的中頻信號(hào)中心頻率為16.8 MHz。仿真結(jié)果見(jiàn)圖4 ~圖6。

                 

                  

            4結(jié)束語(yǔ)

            本文用MATLAB軟件實(shí)現(xiàn)GPS軟件接收機(jī)的本地系統(tǒng),并通過(guò)MATLAB軟件對(duì)設(shè)計(jì)模塊進(jìn)行了驗(yàn)證。驗(yàn)證結(jié)果表明,該設(shè)計(jì)夠?qū)崿F(xiàn)對(duì)GPS信號(hào)的處理,包括信號(hào)捕獲、碼跟蹤、載波跟蹤和導(dǎo)航電文解調(diào)等功能,不僅為GPS軟件接收機(jī)設(shè)計(jì)提供了基本的參考依據(jù),還可作為各種新的GNSS高性能信號(hào)處理方法的設(shè)計(jì)、評(píng)估可視化研究平臺(tái)。



          關(guān)鍵詞: GPS ASIC A/D轉(zhuǎn)換器 MATLAB

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();