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