姚相振,崔紹龍,方金云
(1.中國(guó)科學(xué)院 計(jì)算技術(shù)研究所,北京 100190;2.中國(guó)科學(xué)院 研究生院,北京 100049)
衛(wèi)星信號(hào)捕獲是GPS接收機(jī)里的第一個(gè)必要操作,它用來(lái)檢測(cè)來(lái)自天線接收的信號(hào)中包含有哪些導(dǎo)航衛(wèi)星的信息,捕獲的最終目的是為了得到載波的多普勒頻移以及每顆衛(wèi)星C/A碼的初始相位。在此過(guò)程中執(zhí)行C/A碼相位和多普勒頻移的二維搜索,具體的操作是用本地生成的碼跟接收到的信號(hào)做交叉相關(guān),然后把相關(guān)的結(jié)果累加起來(lái),設(shè)定一個(gè)門(mén)限,超過(guò)此門(mén)限則判定相應(yīng)的衛(wèi)星被捕獲。
GPS信號(hào)采用擴(kuò)頻調(diào)制技術(shù),導(dǎo)航數(shù)據(jù)首先被C/A碼或者P碼進(jìn)行擴(kuò)頻調(diào)制,然后對(duì)1575.42MHz的L1載波進(jìn)行BPSK調(diào)制。同相分量上含有C/A碼,正交分量上含有P碼。因此,利用Gold碼的相關(guān)特性進(jìn)行相關(guān)調(diào)制是 GPS接收機(jī)中最基本的運(yùn)算。相關(guān)器的性能和C/A碼的捕獲成功率,往往決定了接收機(jī)的性能。在噪聲環(huán)境,尤其是弱信號(hào)的時(shí)候,利用相干累計(jì)和非相干累計(jì)技術(shù)可以提高接收機(jī)的增益。但是無(wú)論是相干累計(jì)還是非相干累計(jì)都包含有大量的相關(guān)運(yùn)算,這對(duì)于軟件接收機(jī)來(lái)說(shuō)無(wú)疑是一個(gè)沉重的負(fù)擔(dān)[1],Van Nee在文獻(xiàn)[2]中提出了用FFT運(yùn)算來(lái)代替相關(guān)運(yùn)算,此方法大大提高了運(yùn)算的效率,也奠定了軟件無(wú)線電設(shè)備的基礎(chǔ),但是在軟件導(dǎo)航接收機(jī)中要實(shí)現(xiàn)實(shí)時(shí)信號(hào)處理,傳統(tǒng)的FFT算法還是無(wú)法勝任,另外,F(xiàn)FT中存在的大量浮點(diǎn)運(yùn)算也使得在嵌入式導(dǎo)航接收機(jī)上更是難以實(shí)現(xiàn)實(shí)時(shí)性,因?yàn)槭袌?chǎng)上現(xiàn)有的嵌入式設(shè)備對(duì)于浮點(diǎn)運(yùn)算的支持還不是很完善。
為了減少捕獲階段的運(yùn)算復(fù)雜度以及處理時(shí)間,大量的嘗試和實(shí)驗(yàn)已經(jīng)被實(shí)施,在文獻(xiàn)[3]中提出一種平均相關(guān)算法,此算法對(duì)采樣值求平均,以降低參與 FFT/IFFT的運(yùn)算點(diǎn)數(shù)。在文獻(xiàn)[4,5]中,作者提出一種自我調(diào)整捕獲方案,它能夠根據(jù)信噪比的大小自動(dòng)的調(diào)節(jié)捕獲門(mén)限的大小,文獻(xiàn)[6]中提到了一種利用特殊軟件相關(guān)器的方法,使用并行位操作來(lái)實(shí)現(xiàn) 32個(gè)點(diǎn)同時(shí)工作來(lái)模擬硬件相關(guān)器,結(jié)果顯示其效率有很大程度的提高。
本文中提出一種優(yōu)化 PFA算法,首先,提出一種基于位操作的基帶混合算法,從RF前端得到的數(shù)字信號(hào)被存儲(chǔ)為一種特殊的2bit形式,本地載波體也被量化為2bit形式,為2組數(shù)據(jù)創(chuàng)建一個(gè)數(shù)據(jù)表,通過(guò)索引來(lái)實(shí)現(xiàn)基帶混合的過(guò)程,避免了乘法運(yùn)算,在FFT運(yùn)算過(guò)程中,將旋轉(zhuǎn)因子預(yù)存為16bit的補(bǔ)碼形式,并將其映射為一個(gè)較大的整數(shù),中間數(shù)據(jù)以及最終結(jié)果都用一個(gè)32bit的整數(shù)來(lái)存儲(chǔ),在每一次蝶形運(yùn)算后進(jìn)行溢出檢測(cè),以確保數(shù)據(jù)的正確性,另外 PFA算法過(guò)程中不必要的乘法也將會(huì)被省略,因此在整個(gè)運(yùn)算過(guò)程中只存在整數(shù)運(yùn)算,此方法在浮點(diǎn)運(yùn)算支持不利嵌入式設(shè)備上的運(yùn)行取得良好的運(yùn)行效果。
所有的GPS衛(wèi)星都發(fā)射1.57542GHz(L1波段)和1.2276GHz(L2波段)2種頻率的信號(hào),GPS的信號(hào)發(fā)射采用的是CDMA模式[7],低頻的導(dǎo)航數(shù)據(jù)被高頻的偽隨機(jī)碼進(jìn)行調(diào)制,每顆衛(wèi)星的信號(hào)通過(guò)調(diào)制不同的偽隨機(jī)碼來(lái)實(shí)現(xiàn)身份識(shí)別,GPS信號(hào)采用了 2種不同的偽隨機(jī)碼:一種是 C/A碼(Gold碼的一種),碼片率為 1.023Mchip/s, 另一種是 P碼,碼片率為 10.23Mchip/s。P碼被調(diào)制在 L1和L2載波上,而C/A碼僅調(diào)制在L1載波上且與P碼相位相差90°。C/A碼被廣泛用于民用接收機(jī)應(yīng)用,而P碼被加密為一個(gè)被稱為P(Y)碼的編碼,只用于軍事裝備。在此本文重點(diǎn)討論C/A碼的應(yīng)用模式。
從RF前端接收到的信號(hào)可以表示為
其中,Ns代表可見(jiàn)衛(wèi)星的個(gè)數(shù),Ai代表信號(hào)的幅度,Di代表導(dǎo)航數(shù)據(jù),Ci代表第i顆衛(wèi)星的C/A碼,tτi代表碼時(shí)延,fdi代表多普勒頻移,fL1代表 L1載波的頻率,其值為1575.42MHz,fIF是RF下變頻后的中頻頻率,φi代表衛(wèi)星i的初始相位,n代表一個(gè)均值為零方差為的高斯白噪聲。用于計(jì)算多普勒頻移造成的碼元長(zhǎng)度變化。
C/A碼一個(gè)周期長(zhǎng)度為1023個(gè)碼元,碼率為1.023MHz,一個(gè)周期的C/A碼可以用式(3)表示為
p(t)表示以原點(diǎn)為中心,具有單位高度和單位寬度的脈沖波形。xn為C/A碼的第n個(gè)碼元??梢杂?1 和?1 來(lái)表示,Tc=1/(1.023MHz)= (1/1.023)μs,是C/A碼的碼元寬度,C/A碼的周期Tcode= 1023Tc=1ms。
在硬件GPS接收機(jī)中,由于硬件相關(guān)器的應(yīng)用使得處理循環(huán)相關(guān)的速度非??欤谲浖邮諜C(jī)中則是用FFT來(lái)代替相干運(yùn)算以達(dá)到提速的目的。對(duì)于N點(diǎn)數(shù)據(jù)的離散傅里葉變換(DFT)表示如下:
x(n) 和y(n) 2個(gè)N點(diǎn)有限時(shí)域信號(hào)的循環(huán)相關(guān)表達(dá)式為
基于式(4)和式(5)推出x和y序列循環(huán)相關(guān)的DFT公式:
其中,* 代表復(fù)數(shù)的復(fù)共軛形式,X和Y是x和y信號(hào)的頻域表達(dá)形式。
從式(6)中可以看到x和y序列循環(huán)相關(guān)的DFT可以用X和Y的乘積來(lái)表示,見(jiàn)文獻(xiàn)[8],其中一個(gè)是復(fù)共軛的形式。只需要對(duì)其結(jié)果做一次逆傅里葉變換(IFFT)就可以轉(zhuǎn)化為時(shí)域表示形式:
z(i)max代表 z( n)集合中最大的一個(gè),i暗示了GPS信號(hào)C/A碼的初始相位。
本地載波信號(hào)分為同向和正交2種,載波信號(hào)跟本地C/A碼信號(hào)相乘作為整體的本地?cái)?shù)據(jù):
Cj代表j號(hào)衛(wèi)星的C/A碼,是衛(wèi)星j的估計(jì)初始相位。
接收機(jī)接收到的數(shù)據(jù)跟本地?cái)?shù)據(jù)相乘得:
本文將RF前端得到的中頻信號(hào)以及本地載波信號(hào)進(jìn)行量化,用特定的位格式存儲(chǔ),通過(guò)移位元操作來(lái)代替原有的乘法操作,因此所有的浮點(diǎn)運(yùn)算都被轉(zhuǎn)化為了位運(yùn)算,在大多數(shù)的微處理器上,移位操作比數(shù)學(xué)運(yùn)算要快得多。在PFA算法之前首先要進(jìn)行基帶混合運(yùn)算,將接收到的導(dǎo)航數(shù)據(jù)跟本地載波數(shù)據(jù)相乘;PFA算法是FFT算法的變種[9],為了解決非基二點(diǎn)的數(shù)據(jù)輸入,但是對(duì)于輸入點(diǎn)個(gè)數(shù)也有相應(yīng)的要求,必須為 m×2n的形式,其中,m為質(zhì)數(shù),n為正整數(shù)。本文根據(jù)實(shí)際情況設(shè)計(jì)了一種適用于PFA算法的插值方案。
對(duì)于中心頻率在0f,信號(hào)帶寬為B的中頻模擬信號(hào),如果用采樣率為sf進(jìn)行采樣量化,采樣后的信號(hào)頻譜,必然是以sf為周期,對(duì)原始模擬信號(hào)的頻譜進(jìn)行周期擴(kuò)展的結(jié)果。如果要求采樣后的頻譜不發(fā)生混迭,必然要求
式(11)就是帶通采樣定理的主要內(nèi)容[10]。
因此原始采樣頻率sf=5.714MHz是滿足帶通采樣定理的。
在捕獲時(shí),對(duì)原始數(shù)據(jù)進(jìn)行線性插值,必然會(huì)改變采樣頻率,從上面的討論可以看出,在5.332MHz ≤ fs≤ 6.572MHz 這個(gè)范圍內(nèi)的采樣頻率,不會(huì)使得一個(gè)C/A碼周期(1ms)的樣點(diǎn)數(shù)正好等于2n。由于3×211=6144,對(duì)于這個(gè)組合數(shù),有快速的 PFA算法,而與此相對(duì)應(yīng)的采樣頻率fs= 6.144MHz ,也能滿足帶通采樣定理的要求。
本文采用的RF前端為ZARLINK的GP2015,信號(hào)的十進(jìn)制值為+1,?1,+3,?3,每個(gè)值存放在一個(gè)字節(jié)中,有用的信息存放在一個(gè)字節(jié)的低2bit中,本文將其先提取出來(lái)每4個(gè)存儲(chǔ)到一個(gè)字節(jié)中,然后以字節(jié)讀取的方式一次性讀取 4個(gè)導(dǎo)航數(shù)據(jù)進(jìn)行處理,數(shù)字信號(hào)的 4個(gè)十進(jìn)制值表示方式見(jiàn)表1。本地載波的同相跟正交兩路信號(hào)也被量化為2bit形式,見(jiàn)表2,在這種定義方式中假設(shè)本地載波信號(hào)的幅度為2.5,導(dǎo)航數(shù)據(jù)跟載波信號(hào)的量化值被預(yù)先存起來(lái),用(Sign, Mag)數(shù)組表示,根據(jù)系統(tǒng)特定的要求,如果要進(jìn)行高靈敏度處理,則可以通過(guò)增加本地載波的量化級(jí)數(shù)來(lái)實(shí)現(xiàn)。對(duì)于前面所述的理論推導(dǎo)過(guò)程,量化只是改變了數(shù)據(jù)的表示精度從而簡(jiǎn)化運(yùn)算過(guò)程以提高效率,滿足原有的理論,只是需要在PFA算法上進(jìn)行運(yùn)算方式的調(diào)整。
表1 導(dǎo)航數(shù)據(jù)的2bit量化
表2 本地載波的2bit量化
本地載波信號(hào)的頻率跟接收到的導(dǎo)航數(shù)據(jù)的載波頻率近似相同,然后,將接收到的數(shù)據(jù)跟本地載波的同相正交兩路信號(hào)相乘,為基帶混合過(guò)程,以實(shí)現(xiàn)后續(xù)的低通濾波,基于以上的2個(gè)定義,只通過(guò)(Sign, Mag)數(shù)組的異或運(yùn)算就可得到結(jié)果,在此定義另一種存放結(jié)果的數(shù)據(jù)格式,見(jiàn)表 3,2個(gè)表中的數(shù)據(jù)相乘時(shí),表3中的High Mag比特為表1中的Mag比特;Low Mag比特是表2中的Mag比特;Sign比特則是前面兩表中Sign比特異或運(yùn)算的結(jié)果。此時(shí)將原本的浮點(diǎn)數(shù)乘法運(yùn)算轉(zhuǎn)化為了簡(jiǎn)單的位操作,最終結(jié)果只需一次查表便可得到。
表3 基帶混合結(jié)果查詢表
C/A碼本身就是二進(jìn)制的碼流,因此不用做轉(zhuǎn)換而直接被預(yù)先存儲(chǔ)起來(lái)。接下來(lái)的步驟就是對(duì)接收信號(hào)與本地信號(hào)的乘積以及C/A碼分別做快速傅里葉變換。
FFT的輸入數(shù)據(jù)在前面的步驟中已經(jīng)被完全整數(shù)化,本系統(tǒng)中采用的FFT算法都是基二時(shí)間抽取方式的,見(jiàn)文獻(xiàn)[11],基二FFT的本質(zhì)是將原始的DFT運(yùn)算分割成為一系列2點(diǎn)DFT運(yùn)算,首先將一個(gè)原始的N點(diǎn)DFT分裂為2個(gè)N/2點(diǎn)DFT運(yùn)算,然后再將N/2點(diǎn)DFT分裂為2個(gè)N/4點(diǎn)DFT,如此操作直到每個(gè)DFT的操作點(diǎn)數(shù)減少到2,此算法要求FFT的點(diǎn)個(gè)數(shù)是2的整數(shù)冪。一個(gè)基二時(shí)間抽取方式FFT的蝶形運(yùn)算器結(jié)構(gòu)見(jiàn)圖1,其中,輸入數(shù)據(jù)(A, B)和輸出數(shù)據(jù)(A', B')都是復(fù)數(shù)形式,Wn代表在FFT每個(gè)運(yùn)算階段所需要的旋轉(zhuǎn)因子。本系統(tǒng)采用的是時(shí)間抽取的方式,在進(jìn)行FFT運(yùn)算之前先進(jìn)行數(shù)據(jù)的逆序操作,將排好序的數(shù)據(jù)序列進(jìn)行后續(xù)的2點(diǎn)DFT運(yùn)算。
本系統(tǒng)的輸入數(shù)據(jù)只有如表3所示的8個(gè)值,并且都是整數(shù)形式,不需要轉(zhuǎn)換,而對(duì)于一般形式的浮點(diǎn)FFT輸入數(shù)據(jù),則要先進(jìn)行整形化,具體的做法可以將其擴(kuò)大一定倍數(shù)轉(zhuǎn)換為整數(shù),因?yàn)镕FT算法會(huì)產(chǎn)生固有的處理增益,對(duì)于實(shí)數(shù)輸入,其處理增益是 N/2,對(duì)于復(fù)數(shù)輸入,其處理增益是 N,其中,N為FFT的點(diǎn)數(shù),然后在每一級(jí)蝶形運(yùn)算以后對(duì)中間數(shù)據(jù)進(jìn)行適當(dāng)縮小以防止數(shù)據(jù)溢出。這種做法對(duì)于點(diǎn)數(shù)比較少的FFT應(yīng)用比較合適,但是當(dāng)點(diǎn)數(shù)很大時(shí),由于每次蝶形運(yùn)算以后對(duì)中間數(shù)據(jù)的縮小會(huì)損失一定的精度,當(dāng)多次縮小操作后會(huì)使得精度大幅降低,因此,本文采取了前述的量化方式,使得輸入到FFT的數(shù)據(jù)值很小,最大的模值僅為6,運(yùn)算過(guò)程中出現(xiàn)整數(shù)越界的情況會(huì)很少,至多進(jìn)行一次數(shù)據(jù)縮小處理,保證了處理精度。
圖1 蝶形運(yùn)算器結(jié)構(gòu)
為了減少運(yùn)算時(shí)間,旋轉(zhuǎn)因子(正弦函數(shù)以及余弦函數(shù)值)將不會(huì)被實(shí)時(shí)計(jì)算,而是預(yù)計(jì)算出來(lái)并且存儲(chǔ)在表格中,此表格只存儲(chǔ)了1/4周期的正弦函數(shù)值,用16bit二進(jìn)制補(bǔ)碼表示,其對(duì)應(yīng)的十進(jìn)制的整數(shù)值代表了?1.0到1.0之間的小數(shù)。例如,在表中一個(gè)值為16384的數(shù)實(shí)際代表的值為16384/32768=0.5,其中,32768為16bit二進(jìn)制補(bǔ)碼代表的最大正數(shù),F(xiàn)FT算法需要用到正余弦函數(shù)1/2周期的值,本文中為了節(jié)省內(nèi)存開(kāi)銷,只存儲(chǔ)了1/4周期的正弦函數(shù)值,記為SinTable[],并且每個(gè)數(shù)值都有相應(yīng)的索引,在后續(xù)運(yùn)算用到的正余弦函數(shù)值都可以通過(guò)此索引從表中找到,計(jì)算規(guī)則見(jiàn)表4。其中,A代表FFT點(diǎn)個(gè)數(shù),B代表正弦函數(shù)的索引值。
表4 旋轉(zhuǎn)因子映射公式
SinTable[]的預(yù)計(jì)算取決于FFT的點(diǎn)數(shù),在本系統(tǒng)中由于采樣頻率(6.144MHz)是固定的,因此對(duì)于C/A碼的一個(gè)周期(1ms)進(jìn)行操作,即6144個(gè)點(diǎn),6144不是2的整數(shù)冪,但可以拆分為3×211的形式,可以采用一種特殊的FFT算法即PFA算法來(lái)進(jìn)行計(jì)算,對(duì)于6144點(diǎn)的輸入,PFA算法先進(jìn)行數(shù)據(jù)分組,分為3組,然后對(duì)3組2048點(diǎn)的數(shù)據(jù)分別進(jìn)行FFT運(yùn)算,最后在進(jìn)行重新組合,因此旋轉(zhuǎn)因子表就只針對(duì)固定的2048點(diǎn)進(jìn)行預(yù)計(jì)算。以下列舉了SinTable[]部分?jǐn)?shù)據(jù)。
當(dāng)在蝶形運(yùn)算器中需要用到旋轉(zhuǎn)因子的時(shí)候則通過(guò)查表的方式從 SinTable[]中得到,正弦函數(shù)1/4周期外的數(shù)據(jù)以及余弦函數(shù)的數(shù)據(jù),通過(guò)表 4中的計(jì)算規(guī)則獲得,這樣在整個(gè)FFT過(guò)程中,所有的浮點(diǎn)運(yùn)算都被轉(zhuǎn)換為了整數(shù)運(yùn)算,并且在可能的情況下避免乘法運(yùn)算,除法運(yùn)算用右移操作來(lái)替代,使得運(yùn)算速度大幅提高。本系統(tǒng)采用 32bit有符號(hào)數(shù)來(lái)存儲(chǔ)蝶形運(yùn)算中的中間數(shù)據(jù),這樣在極端的情況下(32768×6×2048)也不會(huì)出現(xiàn)數(shù)據(jù)越界。
對(duì)于一個(gè)N點(diǎn)DFT,其中的復(fù)數(shù)乘法次數(shù)為N2,而對(duì)于一個(gè)N點(diǎn)FFT,其復(fù)數(shù)運(yùn)算次數(shù)為
當(dāng)N的值越大的時(shí)候,F(xiàn)FT的加速效果越顯著,每次復(fù)數(shù)運(yùn)算可以被拆分為4個(gè)浮點(diǎn)乘和6個(gè)浮點(diǎn)加運(yùn)算,在6144點(diǎn)的常規(guī)FFT中,浮點(diǎn)乘運(yùn)算個(gè)數(shù)為(3×1024×11×4=135168),浮點(diǎn)加運(yùn)算個(gè)數(shù)為(3×1024×11×6=202752),計(jì)算旋轉(zhuǎn)因子需要的三角運(yùn)算個(gè)數(shù)為(3×1024×2=6144),浮點(diǎn)乘運(yùn)算個(gè)數(shù)同樣為(3×1024×2=6144)。本算法將 FFT存在的大量浮點(diǎn)運(yùn)算全部轉(zhuǎn)化為了整數(shù)運(yùn)算,并且通過(guò)預(yù)存正弦函數(shù)表的方法省掉了計(jì)算旋轉(zhuǎn)因子的時(shí)間,其中,蝶形運(yùn)算中存在的一些不必要的乘運(yùn)算可以被省掉,當(dāng)乘法兩邊存在零值的時(shí)候便直接將結(jié)果置為零,當(dāng)乘法兩邊存在一的時(shí)候則保存原始數(shù)據(jù)作為結(jié)果,具體操作中會(huì)對(duì)數(shù)據(jù)兩邊的值進(jìn)行檢測(cè),以確定時(shí)候符合條件,這樣復(fù)數(shù)乘法的次數(shù)將減少:
其中,N為FFT點(diǎn)個(gè)數(shù)。本系統(tǒng)采用2種類型的數(shù)據(jù)做了測(cè)試,一種為采樣率4.096MHz的模擬數(shù)據(jù),一種為真實(shí)接收的導(dǎo)航數(shù)據(jù),重采樣率為6.144MHz,測(cè)試平臺(tái)為雙核1.83GHz PC,操作系統(tǒng) Ubuntu-Linux,重復(fù) 50次實(shí)驗(yàn),對(duì)結(jié)果進(jìn)行了平均,將本算法跟定點(diǎn)運(yùn)算和浮點(diǎn)運(yùn)算做了比較,算法的性能如圖2所示。
文獻(xiàn)[6]中采用的方法是利用特殊軟件相關(guān)器的方法,使用并行位操作來(lái)實(shí)現(xiàn) 32個(gè)點(diǎn)同時(shí)工作來(lái)模擬硬件相關(guān)器,其效率有很大程度的提高,但是其實(shí)施方式依然是采用循環(huán)相關(guān)的方式,與本文中采用的位操作結(jié)合整數(shù)化PFA算法做了對(duì)比,如圖3所示。
可以看出由于并行位操作的循環(huán)相關(guān)運(yùn)算方式,使得捕獲耗時(shí)跟處理數(shù)據(jù)量成正比關(guān)系,而優(yōu)化PFA算法的本質(zhì)是FFT運(yùn)算,PFA的運(yùn)算量不會(huì)隨著處理數(shù)據(jù)量的成倍增大而過(guò)快的增長(zhǎng),因此在長(zhǎng)時(shí)間累積的情況下有著明顯的優(yōu)勢(shì)。
導(dǎo)航數(shù)據(jù)采取2bit存儲(chǔ)的方式,在捕獲階段,為了提高靈敏度,需要做一個(gè)較長(zhǎng)時(shí)間的累積[12],本系統(tǒng)采用了 7ms的非相干累積,內(nèi)存消耗量為(7 × 6144× 2 × 2/8 = 21504)byte,用字節(jié)形式存儲(chǔ)相比,2bit方式資源占用量減少75%。在基帶混合階段,原始的復(fù)數(shù)信號(hào)是由2個(gè)浮點(diǎn)數(shù)組成的,內(nèi)存消耗量為(21× 6144 × 2× 4 = 1032192)byte,以及相應(yīng)數(shù)量的中間結(jié)果存儲(chǔ),本系統(tǒng)采用了通過(guò)表1和表2這2個(gè)表位運(yùn)算的方式來(lái)得到表3的索引,以查表的方式來(lái)得到結(jié)果,因此省去了所有的浮點(diǎn)數(shù)存儲(chǔ)空間,內(nèi)存開(kāi)銷僅為3個(gè)表中的數(shù)據(jù),可以忽略。在軟件接收機(jī)的跟蹤階段,需要跟蹤并處理相當(dāng)長(zhǎng)的數(shù)據(jù),本方法對(duì)于資源的節(jié)省效率更加突出,尤其在嵌入式設(shè)備上,資源的效率顯得更為重要。
本文的實(shí)驗(yàn)平臺(tái)采用 Linux-Ubuntu 系統(tǒng),Intel雙核2.8處理器PC機(jī),實(shí)驗(yàn)數(shù)據(jù)采用北京回龍觀地區(qū)的實(shí)地接受信號(hào)。對(duì)浮點(diǎn)運(yùn)算和整數(shù)運(yùn)算2種方式得到的捕獲結(jié)果做了分析,圖4為浮點(diǎn)運(yùn)算結(jié)果,圖5為本系統(tǒng)采用的整數(shù)化方法得到的結(jié)果。實(shí)驗(yàn)數(shù)據(jù)采用信噪比大約為?15dB的實(shí)地接收信號(hào),由實(shí)驗(yàn)結(jié)果可以看出,對(duì)于載波以及旋轉(zhuǎn)因子的量化并未對(duì)捕獲的精度造成很大影響,而速度得到了大幅提升。
圖4 浮點(diǎn)運(yùn)算方式的捕獲結(jié)果
圖5 整數(shù)化方法的捕獲結(jié)果
本地載波的量化級(jí)別會(huì)影響到捕獲靈敏度,實(shí)驗(yàn)中采取2bit、4bit、8bit、16bit的量化方式分別對(duì)信噪比不同的導(dǎo)航數(shù)據(jù)進(jìn)行了測(cè)試,對(duì)于捕獲結(jié)果以及捕獲時(shí)間進(jìn)行了對(duì)比,實(shí)驗(yàn)結(jié)果如圖6所示。
圖6 不同量化級(jí)別的捕獲結(jié)果
由實(shí)驗(yàn)可以看出當(dāng)量化等級(jí)高的時(shí)候在同一信噪比下捕獲到的衛(wèi)星數(shù)量比較多,量化等級(jí)低的時(shí)候隨著信噪比的降低,會(huì)出現(xiàn)丟星的情況,但是在信噪比為?25dB的情況下2bit量化仍然能夠捕獲到6顆衛(wèi)星,達(dá)到了位置解算的要求。在實(shí)際的應(yīng)用中,常常設(shè)定一個(gè)參數(shù)來(lái)衡量衛(wèi)星是否被捕獲到,此參數(shù)的值為循環(huán)累積的最大值與次大值的比值,比值越大說(shuō)明相關(guān)峰越明顯,再根據(jù)此參數(shù)與閾值的比較來(lái)判斷捕獲結(jié)果,在本實(shí)驗(yàn)中發(fā)現(xiàn),2bit與4bit量化方式下,捕獲參數(shù)隨著信噪比的下降而降低的比較明顯,信噪比每下降 5dB,捕獲參數(shù)大約降低 22.5%,當(dāng)信噪比非常低的情況下,參數(shù)值衰減比較大從而低于閾值而被判為未被捕獲到,而高量化等級(jí)的方式下參數(shù)值隨信噪比降低而衰減的幅度比較小。因此,可以根據(jù)實(shí)際情況來(lái)選取量化的級(jí)別,信噪比高的時(shí)候選擇2bit或者4bit的方式,信噪比低的時(shí)候選取8bit或者16bit或者更高級(jí)別的量化方式,這樣在提高捕獲效率的同時(shí)保證了系統(tǒng)靈敏度的需求。
本文的重點(diǎn)在于提高軟件接收機(jī)捕獲階段的效率,考慮到GPS數(shù)據(jù)的特殊存儲(chǔ)結(jié)構(gòu),提出了一種使用2bit進(jìn)行操作的PFA算法。在此方法中包括GPS數(shù)據(jù),載波頻率以及FFT算法中的旋轉(zhuǎn)因子都將被量化為比特類型,F(xiàn)FT中的浮點(diǎn)運(yùn)算被轉(zhuǎn)化為整數(shù)運(yùn)算。實(shí)驗(yàn)表明此算法使得存在大量FFT運(yùn)算的捕獲階段效率得到大幅提升,另外,采用多種量化方法也大大減少了資源開(kāi)銷,尤其在后續(xù)的信號(hào)跟蹤階段效果更加明顯。嵌入式軟件接收機(jī)的實(shí)時(shí)化實(shí)現(xiàn)一直是一個(gè)難題,本算法消除了系統(tǒng)中的絕大部分浮點(diǎn)運(yùn)算,并且進(jìn)行了大量的量化操作,在性能以及資源都處于劣勢(shì)的嵌入式平臺(tái)上將會(huì)發(fā)揮更大的作用,為嵌入式軟件接收機(jī)的實(shí)時(shí)化奠定了基礎(chǔ)。
[1]AKOS D M.Software Radio Approach to Global Navigation Satellite System Receiver Design[D].Ohio:Ohio University, 1997.
[2]VAN NEE D, COENEN A.A new fast GPS code-acquisition technique using FFT[J].Electronics Letters, 1991, 27(2):158-160.
[3]STARZYK J A, ZHU Z.Averaging correlation for C/A code acquisition and tracking in frequency domain[A].IEEE MWSCAS 2001[C].Dayton, Ohio, 2001.905-908
[4]KWONHUE C, KYUNGWHOON C, TAEJIN J.Adaptive PN code acquisition using instantaneous power-scaled detection threshold under rayleigh fading and pulsed gaussian noise jamming[J].IEEE Trans Commun, 2002, 50(8):1232-1235.
[5]CHUANG M Y, FENG K T.Adaptive GPS acquisition technique in weak signal environment[A].IEEE Vehicular Technology Conference[C].Melbourne, 2006.1612-1616.
[6]BRENT M, LEDVINA, MARK L, et al.Bit-wise parallel algorithms for efficient software correlation applied to a GPS software receiver[J].IEEE Transactions on Wireless Communications, 2004, 3(5):1469-1473.
[7]ANDREW J, VITERB I.CDMA Principles of Spread Spectrum Communication[M].MA:Addison-Wesley, 1995.120-135.
[8]OPPENHEIM A V, SCHAFER R W.Discrete-time Signal Processing,2nd Ed[M].New Jersey:PrenticeHall, Inc, 1999.541-669.
[9]KOLBA D, PARKS T.A prime factor FFT algorithm using high-speed convolution[J].IEEE Transactions on Acoustics, Speech and Signal Processing, 1977,25(4):281-294.
[10]曹志剛, 錢(qián)亞生.現(xiàn)代通信原理[M].北京:清華大學(xué)出版社, 2006.108-110.CAO Z G, QIAN Y S.The Principle of Modern Communication[M].Beijing:Tsinghua University Press,2006.108-110.
[11]BURRUS C, ESCHENBACHER P.An in-place, in-order prime factor FFT algorithm[J].IEEE Transactions on Acoustics, Speech, and Signal Processing, 1981, 29(4):806-816.
[12]ZIEDAN N I, GARRISON J L.Unaided acquisition of weak GPS signals using circular correlation or double-block zero padding[A].IEEE PLANS,2004 Position Location and Navigation Symposium[C].2004.461-470.