袁進,劉云飛
(南京林業(yè)大學(xué) 信息科學(xué)技術(shù)學(xué)院,江蘇 南京 210037)
全球衛(wèi)星導(dǎo)航系統(tǒng)(GNSS)主要包括GPS、GLONASS、Galileo和我國的北斗衛(wèi)星導(dǎo)航系統(tǒng)(BDS),可以為全球用戶提供高性能的定位、導(dǎo)航與授時服務(wù),在軍事、社會和科研領(lǐng)域都有廣泛的應(yīng)用并在全球范圍內(nèi)形成了一個高新技術(shù)產(chǎn)業(yè)。導(dǎo)航信號的接收技術(shù)是導(dǎo)航系統(tǒng)的核心技術(shù)之一,是所有應(yīng)用的基礎(chǔ)。GNSS信號接收涉及信號的捕獲、跟蹤和解算等關(guān)鍵技術(shù),其中捕獲是接收機的第一步,是首要解決的關(guān)鍵技術(shù)[1-2]。
針對現(xiàn)有的信號捕獲算法中出現(xiàn)的硬件資源消耗大、捕獲精度低、捕獲速度慢、兼容性差等問題,本文針對GNSS系統(tǒng)兼容互操作方面,研究設(shè)計了一種適用于多種導(dǎo)航系統(tǒng)的信號捕獲算法,并進行了仿真驗證及工程應(yīng)用測試,證明了系統(tǒng)的有效性及精確性。由測試結(jié)果可知,在資源利用較少的情況下,本算法可在較短時間內(nèi)精確捕獲B1C、B1I、B2a、L1C、L5、E5a、E1OS等信號。
在GNSS系統(tǒng)中,信號捕獲是指對接收信號碼型、多普勒頻移和碼起止時刻的估計。捕獲成功是指使估計的碼型正確,碼相位差小于二分之一碼片的寬度,并初步估計出載波頻偏[3]。捕獲的實質(zhì)就是利用導(dǎo)航信號中PN碼強自相關(guān)的特點從噪聲之中分解出導(dǎo)航信號的過程,為了避免不同衛(wèi)星系統(tǒng)在接收機處理時出現(xiàn)相互干擾的問題,GNSS信號之間存在著許多的差異,如調(diào)制方式、載波頻率PN碼的長度與速度等[4-5]。
總結(jié)相關(guān)捕獲算法的文章,目前捕獲原理大致包含四類:基于序列檢測原理、基于相關(guān)性原理、基于信息迭代傳遞技術(shù)、基于現(xiàn)代信號檢測原理。在捕獲算法方面,大致分類為:能量累加方式(差分累加等)、捕獲策略(檢測策略、搜索策略)、相關(guān)算法:時域(滑動相關(guān)、匹配濾波)、頻域快速傅里葉變換(FFT)捕獲算法。
隨著技術(shù)的發(fā)展與變革,目前信號捕獲算法大多采用頻域處理,即將信號從時域轉(zhuǎn)換到頻域中進行處理。在時域中,信號數(shù)據(jù)循環(huán)卷積的過程可以表示為
m=0,1…,L-1 ,
(1)
式中:L為偽碼序列長度;PN((i+m))N為PN(i+m)以N為周期循環(huán)移位。
如果直接計算式(1),計算量正比于L2,當(dāng)L非常大時計算量過大,捕獲時間太長。但如果利用時域的循環(huán)卷積等價于頻域相乘這一特性,將相關(guān)運算轉(zhuǎn)化到頻域上,利用快速傅里葉變換來計算,將會大幅度縮短運算時間。本文所討論的算法就是基于這種思想提出的,算法分別對樣點和偽碼進行傅里葉變換,接著將變換后的偽碼和樣點共軛相乘,再對相乘結(jié)果進行傅里葉逆變換,完成時域中的卷積過程。過程的數(shù)學(xué)表達如式(2)。最后對式(2)的結(jié)果進行后續(xù)的能量累積處理,能量峰值超過閾值,則表明捕獲成功。
=S(i)?PN(i)
=IFFT(FFT(S(i)))·FFT*
(PN(i)))
(2)
根據(jù)上一節(jié)所述,捕獲算法總體設(shè)計框圖如圖1所示。在無先驗值的條件下,當(dāng)接收機射頻前端接收到衛(wèi)星導(dǎo)航信號時,首先將信號進行下變頻操作,其目的是使信號頻率從中頻轉(zhuǎn)換為便于處理的零頻。接著對信號進行下抽采樣,將采樣數(shù)據(jù)存儲在相應(yīng)的存儲模塊中,并進行合并操作。
在捕獲過程中,若捕獲到的多普勒偏移與真實的多普勒偏移的差值在整個周期的三分之二范圍內(nèi),則表明捕獲成功。由此,將多普勒頻移范圍以667 Hz為單位分為多個子單元。開始捕獲時,將本地載波NCO對準(zhǔn)初始頻率估計值,使產(chǎn)生的信號對準(zhǔn)一個頻率搜索單元。將采樣信號按0和1相位分為兩路,兩相位相差二分之一碼片,保證了捕獲精度。在啟動FFT捕獲環(huán)路之前,設(shè)置數(shù)據(jù)支路選擇模塊,通過時序控制,將數(shù)據(jù)按PN碼、0相位支路、1相位支路的順序依次傳輸。其中PN碼進行FFT處理后,結(jié)果數(shù)據(jù)保存在PN碼存儲模塊,待0相位支路進行FFT后,再將PN碼的FFT結(jié)果輸出到共軛相乘模塊進行下一步驟的運算。
因為在兼容互操作接收機中,捕獲的信號無法判斷是否有周期性的比特翻轉(zhuǎn)現(xiàn)象。故首先在相干累加模塊中對其進行同符號的累加,而且在信號累加的過程中,噪聲信號的能量將以根號二分之一的速度減弱。待相干累加模塊完成后,加入平方模塊,消除正負符號的影響,最后將平方后的值進行非相干累加處理。通過比較相干累加處理后的相關(guān)峰值找出其最大值。若最大值大于設(shè)定的檢測門限,則表明捕獲到信號,給出信號所在位置的碼相位和多普勒頻率。如果小于門限,則信號未捕獲,通過控制邏輯改變多普勒搜索單元,重復(fù)上述過程直到捕獲成功。
三通道數(shù)據(jù)傳輸順序如圖2所示,在PN碼輸入脈沖為高時,將PN碼數(shù)據(jù)傳入FFT模塊,待處理完成后將PN碼完成脈沖置高。只有在PN碼輸出脈沖為高時,才能傳輸0相位支路數(shù)據(jù)。同樣0相位支路數(shù)據(jù)處理完成后,才能繼續(xù)對1相位支路數(shù)據(jù)進行傳輸處理。待處理完成后,才能進行下一輪的傳輸,即從PN碼開始傳輸。
分析各衛(wèi)星系統(tǒng)兼容捕獲結(jié)構(gòu),由于衛(wèi)星的PN碼的長度不同,周期不同,由此導(dǎo)致捕獲算法中FFT變換的點數(shù)也不相同。結(jié)合實際工程要求,本文捕獲算法適用的信號分量信息如表1所示。綜合考慮處理速度及資源使用情況等因素,在進行FFT模塊設(shè)計時,本文采用基2-2048點按頻率抽取(DIF)的FFT算法模塊,以解決雙頻兼容互操作接收機對不同主碼長信號的兼容與遍歷要求。
表1 接收機捕獲的信號信息
由于各蝶形運算的輸入與輸出互不重復(fù),任何一個蝶形的兩個輸入量經(jīng)蝶形運算后可以實現(xiàn)同址運算。這種原位運算方式節(jié)省了大量的存儲單元,降低了硬件資源的使用成本[6]。該方法較傳統(tǒng)方法的優(yōu)點在于,以最小點數(shù)的FFT設(shè)計及雙通道傳輸節(jié)約了大量硬件資源。其次,遍歷各種不同主碼長的信號,對10230主碼長的信號進行處理時,在資源節(jié)約的前提下,只犧牲了少量的時間。
本文參照CORDIC算法對蝶形運算單元進行設(shè)計,目的是充分利用FPGA的流水線結(jié)構(gòu),提高蝶形運算單元的處理速度[7]。另外,考慮到數(shù)據(jù)在頻域轉(zhuǎn)換后主要對頻譜能量信息進行處理分析,故在蝶形運算單元中加入了拋位運算,在資源消耗及處理速度上進一步得到優(yōu)化。
基2-FFT設(shè)計主要由存儲單元、M(log2N,N為FFT輸入序列的長度)級蝶形運算單元、倒位序轉(zhuǎn)為順序單元等部分組成,總體結(jié)構(gòu)如圖3所示。在模塊輸入時序的控制下,將待處理的數(shù)據(jù)流輸入到模塊中,通過數(shù)據(jù)流水線模塊的控制,將有效數(shù)據(jù)按設(shè)定時鐘依次輸入到(M-1)級蝶形運算單元中,直到完成最后一級的蝶形運算后(最后一級無乘法器),經(jīng)過順序排序單元,即可將輸出的倒位序數(shù)據(jù)按自然順序輸出到存儲單元中。其中,為了保證資源的有效利用,且不影響算法有效性的情況下,在順序排序單元的設(shè)計中,本文設(shè)置了兩個存儲單元,既能保證數(shù)據(jù)流水線輸入,又能避免在順序排序單元的工作過程中出現(xiàn)數(shù)據(jù)交叉讀取的問題。
在算法設(shè)計中,FFT與IFFT模塊為同一個模塊,在進行IFFT模塊處理時,只需對旋轉(zhuǎn)因子做稍許處理。FFT模塊框圖如圖3所示。
考慮到兼容互操作接收機接收信號種類不同,加入相干累加模塊,一方面是為了使有用信號得到聚集、干擾信號得到減弱。另一方面,由于有些信號呈現(xiàn)正負交替的形式傳輸,故需選取合適的累加段數(shù),以達到能量累積的效果。如圖4所示,將信號峰值在相干累加后得到進一步的提高。如果設(shè)置不當(dāng),則會出現(xiàn)圖5所示的結(jié)果,信號能量沒有得到聚集,與預(yù)期的設(shè)計思路相違背。
借助Xilinx仿真工具,編寫相應(yīng)的Testbench文件,對整個算法設(shè)計進行系統(tǒng)的仿真分析。在時序控制下,將數(shù)據(jù)進行變頻、下抽和存儲操作。下抽模塊的仿真如圖6所示。樣點傳輸?shù)乃俾蕿槌闃铀俾实乃氖?故在清零脈沖iClrEp為高時,傳輸40個碼片時,下抽脈沖oDsSplEp置高,將40個碼片的樣點數(shù)值相加后下抽一個數(shù)據(jù)。接著將數(shù)據(jù)分為0相位和1相位支路,如圖7所示,處理完畢后,存儲在相應(yīng)存儲模塊。啟動片選模塊工作脈沖,按照設(shè)定的傳輸順序進行傳輸,仿真結(jié)果如圖8所示。iX0Cz、iX1Cz、iX2Cz分別為PN碼、0相位支路、1相位支路輸入數(shù)據(jù),當(dāng)輸出使能為高時,在輸出脈沖的控制下,依次輸出PN碼、0相位支路、1相位支路數(shù)據(jù)給FFT模塊。
為了直觀地分析FFT模塊的仿真結(jié)果,將正弦信號數(shù)據(jù)作為模塊的輸入數(shù)據(jù)。當(dāng)輸入使能為高時,在輸入脈沖的控制下,將數(shù)據(jù)輸入FFT模塊。當(dāng)輸出使能為高時,同樣在輸出脈沖的控制下,輸出FFT處理后的數(shù)據(jù)。從仿真結(jié)果圖9可知,FFT處理結(jié)果較為準(zhǔn)確。
FFT輸出數(shù)據(jù)進行后面的共軛相乘、IFFT及相干累加模塊處理后,對相干累加結(jié)果進行平方處理,接著將結(jié)果輸入到非相干累加模塊,再次進行累加處理,最終將圖10中的iPowValue變量所呈現(xiàn)的結(jié)果輸入到判別模塊,設(shè)定相應(yīng)閾值,如果峰值超過閾值,即可捕獲成功。由仿真結(jié)果可知,本次捕獲成功,樣點偏移為8個比特,載波多普勒偏移為6×667 Hz.
本文主要圍繞雙頻兼容互操作接收機的信號捕獲算法這一關(guān)鍵技術(shù)進行研究與設(shè)計。結(jié)合接收機捕獲的要求與所遇到的問題,提出一種基于FFT偽碼相位捕獲算法的改進方法。算法主要對FFT處理模塊及相干累加、非相干累加模塊做了改進。在FFT模塊設(shè)計中加入截位算法和流水線設(shè)計,使其符合兼容互操作接收機的捕獲信號特點。本文完成了捕獲算法的整體模塊設(shè)計,并借助仿真工具完成了對捕獲系統(tǒng)的仿真、調(diào)試與分析。由仿真結(jié)果可知,本算法在捕獲精度、處理速度及兼容性方面較傳統(tǒng)方法有了較大的提高。從實際工程應(yīng)用中發(fā)現(xiàn),本算法配合后續(xù)的跟蹤和解算模塊,達到了雙頻兼容互操作接收機的性能指標(biāo)。綜上可得,本算法有較好的理論價值及使用價值。