擴(kuò)頻信號(hào)基于FFT碼捕獲的計(jì)算量分析
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:擴(kuò)頻通信技術(shù)中信號(hào)的捕獲是擴(kuò)頻體制的關(guān)鍵。從快速捕獲的角度出發(fā),對(duì)傳統(tǒng)捕獲方法和基于FFT的快速捕獲方法的原理進(jìn)行了對(duì)比,并對(duì)不同捕獲方法的計(jì)算量進(jìn)行了分析和比較。獲得基于FFT的循環(huán)相關(guān)捕獲方法其計(jì)算量比傳統(tǒng)方法少了3個(gè)數(shù)量級(jí)以上的結(jié)果。得到該方法在硬件實(shí)現(xiàn)中與傳統(tǒng)滑動(dòng)相關(guān)法相比大大節(jié)省了資源,減少了耗時(shí)的結(jié)論。
關(guān)鍵詞:擴(kuò)頻;快逮捕獲;FFT;計(jì)算量
0 引言
直接序列擴(kuò)頻通信技術(shù),具有抗干擾、保密性強(qiáng)、可實(shí)現(xiàn)碼分多址通信和高精度測(cè)量的優(yōu)點(diǎn),其中信號(hào)的快速捕獲是擴(kuò)頻體制的關(guān)鍵。最常用的碼捕獲方法是滑動(dòng)相關(guān)法,但該方法捕獲時(shí)間過(guò)長(zhǎng),因此考慮采用計(jì)算速度較快的基于FFT的循環(huán)相關(guān)捕獲方法。本文將對(duì)這兩種方法的計(jì)算量進(jìn)行比較。
1 擴(kuò)頻信號(hào)的捕獲方法
在擴(kuò)頻通信中,傳統(tǒng)的偽碼捕獲是通過(guò)相關(guān)運(yùn)算和能量檢測(cè)來(lái)完成的,成功實(shí)現(xiàn)偽碼捕獲的一個(gè)必要前提是獲得輸入擴(kuò)頻信號(hào)載波的準(zhǔn)確值,因此整個(gè)捕獲過(guò)程是一個(gè)載波頻率、偽碼相位的二維捕獲過(guò)程。捕獲又稱初始同步或粗同步,其任務(wù)是完成對(duì)偽隨機(jī)序列的粗同步,對(duì)偽隨機(jī)序列的相位同步精度一般小于一個(gè)或1/2個(gè)偽碼碼片時(shí)長(zhǎng)。
在高動(dòng)態(tài)條件下,發(fā)射裝置與接收裝置的相對(duì)運(yùn)動(dòng)造成接收端不同程度的多普勒頻率偏移,這會(huì)對(duì)偽隨機(jī)碼擴(kuò)頻信號(hào)捕獲造成一定的影響,因此在捕獲的過(guò)程中要將多普勒頻移考慮進(jìn)去。最大的多普勒頻移大約在±5 kHz的范圍內(nèi)。考慮發(fā)射端和接收端均為高速運(yùn)動(dòng),多普勒頻移的最大值在±10 kHz比較合理,以便覆蓋高速飛行器產(chǎn)生的多普勒頻移。
1.1 滑動(dòng)相關(guān)法
常用的碼捕獲方法包括發(fā)射參考信號(hào)法、前置同步碼法、匹配濾波器法和滑動(dòng)相關(guān)法。其中最常用的是滑動(dòng)相關(guān)法。
設(shè)通信開(kāi)始時(shí)系統(tǒng)處于失步狀態(tài),積分清洗檢測(cè)器的輸出只有噪聲并低于捕獲門限,捕獲判決器的輸出控制本地偽碼產(chǎn)生器使之處于搜索狀態(tài),每隔一個(gè)積分周期,對(duì)PN碼相位進(jìn)行調(diào)整(提前或退后一個(gè)相位)。捕獲判決器每隔一個(gè)積分周期對(duì)捕獲情況進(jìn)行一次判決,決定是否需要繼續(xù)調(diào)整本地偽碼的相位。當(dāng)捕獲判決器有信號(hào)輸出并超過(guò)預(yù)定門限時(shí),即認(rèn)為它開(kāi)始捕獲到信號(hào)。但為了防止噪聲或干擾引起偶然的假捕獲,通常要連續(xù)觀察幾次,等到捕獲判決器的輸出信號(hào)超過(guò)門限的次數(shù)累計(jì)到規(guī)定值后,才認(rèn)為滑動(dòng)相關(guān)捕獲檢測(cè)器確實(shí)捕獲到了信號(hào)。流程如圖1所示。
在各種擴(kuò)頻系統(tǒng)中,因?yàn)榛瑒?dòng)相關(guān)法實(shí)現(xiàn)簡(jiǎn)單,而且不需要任何先驗(yàn)信息,使用的最為廣泛。對(duì)碼長(zhǎng)較短的偽隨機(jī)碼序列,該方法是較好的捕獲方案。但滑動(dòng)相關(guān)法存在一個(gè)突出的缺點(diǎn):當(dāng)兩個(gè)偽碼之間的相位差很大,而且偽碼長(zhǎng)度又很長(zhǎng)時(shí),要逐位檢查(滑動(dòng))以達(dá)到捕獲的時(shí)間可能很長(zhǎng)。
取偽碼長(zhǎng)度N=1 023,信息碼速率為1.2 Kb/s,M=5,則可得最長(zhǎng)捕獲時(shí)間為:
如果在捕獲的過(guò)程中考慮信號(hào)載波的同步問(wèn)題,那么最大捕獲時(shí)間還會(huì)成倍增加。顯然,捕獲時(shí)間過(guò)長(zhǎng)是實(shí)際系統(tǒng)所不能接受的。因此,必須設(shè)法減小捕獲時(shí)間。
1.2 基于FFT的循環(huán)相關(guān)捕獲方法
將FFT(快速傅里葉變換)應(yīng)用于擴(kuò)頻信號(hào)的捕獲源于20世紀(jì)90年代,它在當(dāng)時(shí)是為導(dǎo)航系統(tǒng)而引進(jìn)的一種新的擴(kuò)頻碼捕獲技術(shù)。這種技術(shù)使用FFT來(lái)計(jì)算相關(guān)函數(shù),因而消除了碼相位滑動(dòng)過(guò)程所需的時(shí)間?;贔FT的捕獲方法的優(yōu)勢(shì)在于FFT計(jì)算的快速性。
1.2.1 基本原理
循環(huán)相關(guān)捕獲的示意圖如圖2所示,它是在時(shí)域中表示的,且只給出21個(gè)本地碼的其中一個(gè)。如果用5 MHz對(duì)輸入信號(hào)采樣,輸入電文長(zhǎng)1 ms,含有5 000個(gè)數(shù)據(jù)點(diǎn)??梢哉J(rèn)為輸入電文與本地電文位于兩個(gè)圓柱體表面,為了去匹配輸入電文,本地碼要旋轉(zhuǎn)5 000次。換句話說(shuō),一個(gè)圓柱體相對(duì)于另一個(gè)圓柱體旋轉(zhuǎn)5 000次。
在每一步,5 000個(gè)輸入電文與5 000個(gè)本地電文點(diǎn)對(duì)點(diǎn)相乘,相乘結(jié)果加到一起。包含本地碼與輸入碼所有可能的乘積需要5 000步,乘積中最高幅值被記錄下,若大于門限值,就是我們的期望值。
從基本原理上講,這種方法與滑動(dòng)相關(guān)法是等同的,都是通過(guò)滑動(dòng)碼片來(lái)尋找最大值。不同的是,循環(huán)相關(guān)法每一次滑動(dòng)后不用逐一相乘后相加,而是將時(shí)域信號(hào)進(jìn)行快速傅里葉變換(FFT)轉(zhuǎn)換成頻域信號(hào),在頻域中求循環(huán)相關(guān)運(yùn)算,直接求出了5 000次滑動(dòng)中每一次滑動(dòng)的相關(guān)值。在硬件實(shí)現(xiàn)中,可以利用自帶的IP核直接進(jìn)行FFT運(yùn)算,這大大節(jié)約了資源。FFT的運(yùn)算量分析在后文中將進(jìn)行介紹。
1.2.2 具體步驟
采用如上所述的基于FFT的循環(huán)相關(guān)捕獲方法,假定捕獲的頻率搜索范圍是±10 kHz,步進(jìn)1 kHz,總共有21個(gè)頻率分量。本地碼lsi可表示為:
式中:下標(biāo)s代表衛(wèi)星編號(hào),下標(biāo)i=1,2,…,21,Cs是衛(wèi)星s的C/A碼,fi=fc,-10,-9,…,9,10 kHz。這21組數(shù)據(jù)代表了間隔1 kHz的21個(gè)頻率。將他們與輸入信號(hào)進(jìn)行相關(guān)運(yùn)算,如果本地產(chǎn)生信號(hào)的C/A碼和頻率都正確的話,當(dāng)C/A碼相位對(duì)準(zhǔn)時(shí),輸出達(dá)到峰值。
對(duì)輸入數(shù)據(jù)進(jìn)行捕獲操作的具體步驟如下:
(1)對(duì)1 ms的輸人數(shù)據(jù)x(n)進(jìn)行FFT變換,將輸入數(shù)據(jù)變換到頻域X(k),n=k=0~4 999;
(2)取X(k)的復(fù)共軛,值為X*(k);
(3)用式(2)生成21個(gè)本地碼lsi(n),i=1,2,…,21。每個(gè)lsi(n)都有5 000個(gè)數(shù)據(jù)點(diǎn)。
(4)對(duì)lsi(n)取FFT,轉(zhuǎn)換為頻域中的Lsi(k)。
(5)將Lsi(k)與X*(k)逐點(diǎn)相乘,結(jié)果為Rsi(k)。
(6)求Rsi(k)的FFT逆變換,變換到時(shí)域rsi(n),求絕對(duì)值|rsi(n)|,總共有105 000(5 000×21)個(gè)|rsi(n)|。
(7)在輸入電文200 ns的時(shí)間分辨率和載波頻率為1 kHz分辨率的條件下,|rsi(n)|最大值中的第n位和第i個(gè)載波頻率給出了C/A碼的初始點(diǎn)。
圖3給出了基于FFT的捕獲流程示意圖。
2 不同捕獲方法的計(jì)算量比較
從理論上講,滑動(dòng)相關(guān)法與基于FFT的循環(huán)相關(guān)捕獲法都是利用數(shù)據(jù)點(diǎn)進(jìn)行相關(guān)計(jì)算并比較求得最大值。其不同之處在于計(jì)算量的差距上,采用基于FFT的循環(huán)相關(guān)法計(jì)算量大大的減少,下面對(duì)其進(jìn)行分析。
2.1 傳統(tǒng)滑動(dòng)相關(guān)法
使用傳統(tǒng)滑動(dòng)相關(guān)法進(jìn)行捕獲,考慮21個(gè)多普勒頻率分量,由于它們進(jìn)行相同的操作,只對(duì)這21組數(shù)據(jù)的某一組進(jìn)行討論。
輸入數(shù)據(jù)和C/A碼各含有5 000個(gè)數(shù)據(jù)點(diǎn),根據(jù)滑動(dòng)相關(guān)法的原理,要將C/A碼滑動(dòng)5 000次,每滑動(dòng)一次碼片都要將C/A碼與數(shù)據(jù)進(jìn)行5 000點(diǎn)的復(fù)乘,這樣,在每個(gè)頻率分量上要進(jìn)行5 000×5 000次乘法運(yùn)算,則21個(gè)頻率分量共進(jìn)行:
S=5 000×5 000×21=5.25×108 (3)
次運(yùn)算。由此可見(jiàn),這種方法在硬件實(shí)現(xiàn)中非常浪費(fèi)資源。
2.2 基于FFT的循環(huán)相關(guān)法
2.2.1 FFT算法計(jì)算量簡(jiǎn)介
采用快速FFT/IFFT運(yùn)算,可以顯著降低運(yùn)算的復(fù)雜度,在這里簡(jiǎn)單介紹一下如何計(jì)算IFFT的運(yùn)算量。FFT的運(yùn)算量與此相同,不做贅述。
對(duì)于常用的基2IFFT算法來(lái)說(shuō),其復(fù)數(shù)乘法的次數(shù)僅為(N/2)log N。隨著N的增加,算法復(fù)雜度之間的差距越明顯,IDFT的計(jì)算復(fù)雜度會(huì)隨著N的增加而呈現(xiàn)二次方增長(zhǎng),IFFT的計(jì)算復(fù)雜度的增加速度只是稍微快于線形變化。
對(duì)于計(jì)算點(diǎn)數(shù)比較多的系統(tǒng),可以采用基4FFT算法。在4點(diǎn)的IFFT運(yùn)算中,只存在與{1,-1,j,-j)的相乘運(yùn)算,因此不需要采用完整的乘法器來(lái)實(shí)施這種乘法,只需要通過(guò)簡(jiǎn)單地加、減以及交換實(shí)部和虛部的運(yùn)算(當(dāng)與-j,j相乘時(shí))來(lái)實(shí)現(xiàn)這種乘法。在基4算法中,IFFT變換可以被分為多個(gè)4點(diǎn)的IFFT變換,這樣就只需要在兩個(gè)級(jí)別之間執(zhí)行完整的乘法操作。因此,N點(diǎn)的基4IFFT算法中只需要執(zhí)行(3/8)·N·(log N-2)次復(fù)數(shù)乘法或相位旋轉(zhuǎn),以及N·log N次復(fù)數(shù)加法。
圖4說(shuō)明了4點(diǎn)的IFFT運(yùn)算,稱做基4蝶型運(yùn)算。4個(gè)輸入x0,x1,x2,x3經(jīng)過(guò)簡(jiǎn)單的相加和相位旋轉(zhuǎn),生成4個(gè)輸出y0,y1,y2,y3,例如y1=x0+jx1-x2-jx3。
基4蝶型算法可以用于高效的計(jì)算大規(guī)模的IFFT。圖5說(shuō)明了利用基4蝶型算法實(shí)施16點(diǎn)的IFFT,其中包括2級(jí)運(yùn)算,每級(jí)內(nèi)包含4個(gè)基4蝶型運(yùn)算,在兩級(jí)之間存在中間過(guò)渡級(jí)別,用于對(duì)16個(gè)中間過(guò)渡結(jié)果實(shí)施相位旋轉(zhuǎn)ωi,其中ωi=exp(j2πi/N)。在N=16的情況下,當(dāng)i=0,2,4,8,12時(shí),與ωi相乘就可以簡(jiǎn)化為與{1,-1,j,-j)相乘。
2.2.2 計(jì)算量分析
根據(jù)1.2.2節(jié)中介紹的循環(huán)相關(guān)捕獲的具體步驟以及FFT算法的計(jì)算量,對(duì)基于FFT的循環(huán)相關(guān)捕獲法計(jì)算量分析如下。
首先,根據(jù)式(2)將21個(gè)頻率分量下的C/A碼與射頻相乘,需要運(yùn)算次數(shù)為:
S1=21·N (4)
另外,N點(diǎn)基4FFT的運(yùn)算量為(3/8)·N·(log N-2),考慮21個(gè)多普勒頻率分量以及FFT和IFFT雙向變換,計(jì)算量為:
S2=2·21·(3/8)·N·(log N-2) (5)
因此,總的計(jì)算量為:
S=S1+S2=21·N·[(3/4)(log N-2)+1] (6)
這里數(shù)據(jù)點(diǎn)數(shù)N=5 000,則總計(jì)算量為915 180次,與滑動(dòng)相關(guān)法相比,少了3個(gè)數(shù)量級(jí)。
3 結(jié)語(yǔ)
本文從擴(kuò)頻信號(hào)捕獲的角度出發(fā),描述了傳統(tǒng)捕獲方法和基于FFT的快速捕獲方法的原理和步驟,并對(duì)不同捕獲方法的計(jì)算量進(jìn)行了分析和比較。在文中可以看到,基于FFT的循環(huán)相關(guān)捕獲法其計(jì)算量比傳統(tǒng)方法少了3個(gè)數(shù)量級(jí)以上,該方法在硬件實(shí)現(xiàn)中,與傳統(tǒng)滑動(dòng)相關(guān)法相比大大節(jié)省了資源,減少了耗時(shí),是一種比較好的捕獲方法。