吳宇飛,劉 琰,高軍軍
(北京控制與電子技術研究所,北京,西城 100038)
在通信系統中,由于發送端和接收端的動態產生的多普勒效應可由下式表示
(1)
其中f為發送信號的載波頻率,v為發送端和接收端的相對速度,θ為發送信號和接收機運動路徑之間的夾角。
在空間對地的通信,以北斗衛星信號舉例,其北斗衛星發送信號的載波頻率f=1561.098MHz,最小的可觀測角為5°。北斗衛星的的運行速度約為7km/s,由式(1)可計算得北斗衛星信號在傳播過程中會產生約10.5kHz的多普勒頻偏[1]。
本文是以飛行器協同控制所需的組網通信為研究背景。出于通信抗干擾能力的考量,載波會選用厘米波甚至是毫米波的頻段,比北斗衛星信號的載波頻率高出了一個數量級以上。飛行器組網通信信號在傳播過程中產生約200kHz頻偏,飛行器組網通信信號時多普勒搜索范圍遠大于捕獲衛星導航信號時多普勒搜索范圍。
同時北斗衛星將星歷信息持續廣播發送,使得接收機在捕獲信號時可以進行長時間的相關積累,這個時間通常超過10ms。而空間飛行器組網通信信息是猝發的,并且用于捕獲的幀同步步頭時間通常在1ms以下。接收機只能利用如此短時間的信息快速完成信號的捕獲,以便對幀內信息進行解擴。
面對大頻偏猝發信號的捕獲,已有的雙塊補零信號捕獲算法[2]效果并不好,主要體現在算法計算量大,捕獲時間長。而雙塊補零算法目前研究的重點集中在對雙塊補零算法引入額外的如運動補償[3]或粒子濾波[5]等環節,以實現對長相關時間信號更精準的捕獲。而以猝發信號為研究對象,以減少捕獲時間為目的的研究目前并不充分。
針對雙塊補零算法目前存在的問題,本文對雙塊補零算法進行改進,通過調整分塊方案和優化系統參數擴大了頻偏搜索范圍。提出了列壓縮算法,通過先時域累加再FFT的方式,減少了算法FFT的次數,在犧牲少許捕獲性能的基礎上大幅減少了計算復雜度,提高了系統的實時性。
雙塊補零算法能在一個擴頻碼周期內同時完成相位搜索和多普勒頻偏估計,其算法的核心在于分塊和補零。將分塊后的數據子塊后面接入相同大小的零塊,之后再進行圓周相關,既保證了數據的搜索充分且不重復,同時將分塊后的相關結果進行FFT和IFFT,減少了進行變換的點數,從而減少了計算量。并且,將相關值矩陣向頻域變換減小了多普勒頻偏對相關值的影響,頻率搜索范圍較其它算法更大。
基于BPSK調制通信系統的雙塊補零捕獲模型如圖1所示。雙塊補零算法主要分為三步,即雙塊補零、塊內相關和移塊、檢測和判決(假設相干積累時間為T,分塊數為Nb,每塊包含數據點Ls個,一個擴頻碼包含的分塊數為Nms。

圖1 通信系統模型
現對各個步驟進行詳述:
第一步:雙塊補零,包括分塊,雙塊,補零三個操作。
分塊操作:將下變頻到基帶,相干累積時間為T的信號和本地擴頻信號等分為Nb個數據子塊,每個數據子塊包含Ls個采樣點。
雙塊操作:將相鄰的兩個數據子塊組合成新的數據子塊,新的數據子塊包含2Ls個采樣點。
補零操作:將本地擴頻信號的每一個數據子塊后補上相同長度的零,組成新的數據子塊,每個數據子塊也包含2Ls個點。
第二步:塊內相關和移塊操作
塊內相關:將接收信號和本地擴頻信號對應的兩個數據子塊分別做2Ls個點的FFT,得到兩組長度為2Ls的數據,將本地擴頻信號的FFT結果取共軛,然后將兩組結果點對點相乘,得到2Ls長度的數據,對相乘結果做IFFT后取前Ls個數據。對Nb個塊均進行以上操作,共得到Nb×Ls個點,構成時域相關值矩陣M1的前Ls列。

圖2 雙塊補零分塊示意圖
移塊操作:將接收信號左移一塊,移塊后的信號和本地擴頻信號進行塊內相關操作,相關結果依次放入時域相關值矩陣M1中,信號共移動Nms-1次,即共完成Nms次塊內相關,最終得到矩陣M1為Nb行,Nms×Ls列的矩陣。
第三步:檢測與判定
得到的時域相關值矩陣M1按列進行FFT變換,計算出該矩陣所有點的能量。其中的最大值即為捕獲的結果,最大值點對應的行位置即為多普勒頻偏,對應的列位置即為碼相位。
雙塊補零算法是碼相位多普勒頻偏并行搜索,理論上一個碼周期即可估算出碼相位和多普勒頻偏。
雙塊補零算法中假設采樣率為fs,總數據點數為M,則算法的頻率分辨率可表示為
(2)
其中T為相干積累時間。
當相干積累時間為一個碼片周期時,上式可進一步推得
(3)
其中fchip為偽碼符號率,cyclength為碼片周期長度。
算法的搜索帶寬Bf=[fmin,fmax]為
|fmax-fmin|=Δf*Nb
(4)
由上分析可知,雙塊補零算法的頻偏搜索帶寬由兩個因素決定,頻率分辨率和算法分塊方案。空間飛行器對地通信時,捕獲信號時的相干積累時間長通常在10ms以上,頻率分辨率高,捕獲精度高使得算法的頻偏搜索帶寬不足。而空間飛行器之間的通信,相干積累時間低,通常在1ms以下,使得算法的頻率分辨率低,搜索步長大,調整算法的分塊方案可以滿足大的頻偏搜索范圍。
下變頻到基帶的信號由MATLAB仿真產生,調制方式為BPSK。偽碼符號率9.6Mcps,信號采樣率19.2MHz,即偽碼過采樣率為2,偽碼周期2047,載波頻率1.5Mhz,噪聲使用加性高斯噪聲。信噪比-15dB。取一個偽碼周期的時間0.2133ms作為相干積累時間,既共采樣4094個點用雙塊補零算法進行計算。算法信號等分為128段,每段有32個采樣點(剩余兩個信號點用零補齊)。
雙塊補零FFT捕獲矩陣如圖4所示,當多普勒頻移為90kHz,碼相位偏移275個碼片時的捕獲情況,估計頻偏為88920Hz,誤差為1080Hz,計算的碼相位偏移為275,FFT捕獲最大值為3600。

圖3 圓周相關示意圖

圖4 雙塊補零FFT捕獲矩陣
圖5圖6分別展示了碼片對齊時和多普勒時的FFT幅度值。既將圖3中捕獲成功時將當前碼片和多普勒補償值所有FFT幅度值用二維圖像表示出來。可以看出,當本地碼片相位和多普勒補償和接收信號匹配成功時時,FFT幅值有明顯的峰值。此時碼片相位誤差為0,補償多普勒頻率誤差小于算法多普勒分辨率的一半,可認為算法捕獲信號成功。

圖5 碼片對齊時FFT幅度值

圖6 多普勒對齊時FFT幅度值
雙塊補零算法的計算量主要集中在FFT相關的乘法和加法計算。N點的FFT復數乘法計算量為0.5×Nlog2N,復數加法計算量為Nlog2N。現將不同分塊條件下的計算量列表如下所示。

表1 分塊數為64,每塊長64的計算量

表2 分塊數為128,每塊長32的計算量

表3 分塊數為256,每塊長16的計算量
由以上三表可以看出,雙塊補零算法的運算量主要集中在最后一步列計算上。隨著分塊長度的減小,數據預處理和部分相關步驟的計算量有所減小,但是最后一步對每列求FFT所需計算量急劇增加。算法所需的總計算量也隨著分塊長度的減小而增加。這是因為在最后一步對每列求FFT的過程中,雖然不同分塊長度下所需FFT次數不變,均為4096次FFT,遠超數據預處理和部分相關計算的輪數,所以算法的計算量都集中在列計算上。每次列計算FFT的長度為矩陣的行數,也就是分塊的塊數。分塊長度減小,分塊的塊數相應增加,使得FFT的長度相應的增加了,從而使得總計算量增加了。
在不同信噪比條件不同分塊方案下對雙塊補零算法進行仿真,計算其捕獲成功率。將捕獲成功定義為計算得到的多普勒頻偏與仿真信號頻偏的差值小于算法當前頻率分辨率的一半,記為捕獲成功,否則失敗。

圖7 不同分塊數下算法的捕獲率
上圖給出了在多普勒頻偏為30kHz時,雙塊補零算法在不同分塊長度,不同信噪比條件下用蒙特卡洛對信號進行多次獨立的捕獲。統計的信號捕獲概率,可以看出,捕獲率隨著信噪比上升而逐漸增加,最終趨近與100%。當信噪比相同時,分塊長度越大,捕獲率越高。其中分塊長度越長,分段數越小,算法的捕獲成功率越高。
對于猝發信號而言,不僅要求相關累計時間更少,也對運算時間提出了更加嚴格的要求。由此有必要以犧牲一部分捕獲性能為代價,來減少算法過程中的計算量。本節使用列壓縮的方法來減少算法的計算量,并通過實際仿真給出實際的捕獲性能損失和計算量減少量。
通過上一章的分析,雙塊補零算法的計算量主要集中在最后一步對每一列進行FFT。根據FFT的性質,不同頻率的信號在時域進行相加后再進行FFT,與先對不同信號進行FFT,再在頻域進行累加,兩者的結果是相同的。所以可以采取列壓縮的方法減少計算量。其計算流程圖如圖8所示。

圖8 列壓縮算法流程圖
先對所有的列分成若干塊。每一塊內的所有列先按行進行累加,再進行FFT。這樣就減少了進行FFT的總列數,從而減少了算法的計算量。
對不同倍數的列壓縮進行捕獲性能的仿真。主要參數與上一章相同,分塊數仍然是將接收數據和本地偽碼分為128塊,每塊長32個數據。在雙塊補零算法最后一步對每一列求FFT之前。將所有列按每4/8/16列為一組進行分塊累加后再執行FFT操作,每個分組情況下的使用蒙特卡洛對信號進行多次獨立捕獲,統計捕獲成功率結果如圖8所示。圖中紅線是沒有進行分組減少計算量的雙塊補零算法的捕獲性能。由圖可以看出列壓縮倍數為4的捕獲性能相較于沒有進行列壓縮時,其損失約為1dB。列壓縮倍數為8和16,算法的捕獲性能有較大的損失,性能損失分別為3dB和5dB。
為了探究不同列壓縮倍數下的不同分塊方式對捕獲性能的影響。對不同分塊情況下都對雙塊補零列壓縮進行捕獲性能的仿真。主要參數仍然與上一章相同。對分塊數是256塊,每塊16個數據;分塊數是64塊,每塊64個數據。這兩種分塊情況使用蒙特卡洛統計算法的捕獲性能。
由圖可以看出結論與分塊數128塊,每塊32個數據的結論類似。列壓縮倍數為4捕獲性能相較于沒有進行列壓縮時,其損失約為1dB。列壓縮倍數為8和16,算法的捕獲性能有較大的損失。對比圖9圖10和圖8,可以得出結論:不同的分塊方式對捕獲性能損失影響較小。

圖9 不同分組條件下算法的捕獲率

圖10 分塊情況為16*256下的捕獲性能
將不同列壓縮倍數下和不同分塊方式下的計算量做圖如下所示。

圖13 不同分塊方案下的乘法量圖
由圖11和圖12可以看出,不同的分塊方案下,使用列壓縮算法的情況下,對比相同分塊方案不進行列壓縮,算法的加法計算量和乘法計算量都得到了大幅的降低。捕獲性能降低最少的4倍列壓縮,總計算量降低了約73%

圖11 分塊情況為64*64下的捕獲性能

圖12 不同分塊方案下的加法量圖
在實際的猝發信號捕獲中,雙塊補零算法需要綜合頻偏搜索范圍,搜索精度來選擇合適的分塊方法。而列壓縮算法可以有效的降低算法所需的計算量。綜合捕獲性能和計算量的減少,最優的列壓縮比為4倍。捕獲性能損失了約1dB,在可接受范圍內。計算量下降了約73%。
本文詳細研究了雙塊補零算法的原理和實現步驟,通過雙塊補零算法分塊方案和參數設置的優化,使算法的搜索帶寬大幅提升了,并且通過仿真證明了優化后的算法能夠成功對高動態擴頻信號進行捕獲。之后通過仿真定量的說明了不同分塊方案對雙塊補零算法捕獲性能計算量的影響。最后針對高動態猝發擴頻信號的應用場景,提出了列壓縮算法,通過減少算法FFT的次數的方式,大幅減少了算法所需的計算量。最后綜合捕獲性能損失和計算量減少,給出了最優的列壓縮比。