吳宇飛,劉 琰,高軍軍
(北京控制與電子技術(shù)研究所,北京,西城 100038)
在通信系統(tǒng)中,由于發(fā)送端和接收端的動(dòng)態(tài)產(chǎn)生的多普勒效應(yīng)可由下式表示
(1)
其中f為發(fā)送信號(hào)的載波頻率,v為發(fā)送端和接收端的相對(duì)速度,θ為發(fā)送信號(hào)和接收機(jī)運(yùn)動(dòng)路徑之間的夾角。
在空間對(duì)地的通信,以北斗衛(wèi)星信號(hào)舉例,其北斗衛(wèi)星發(fā)送信號(hào)的載波頻率f=1561.098MHz,最小的可觀測(cè)角為5°。北斗衛(wèi)星的的運(yùn)行速度約為7km/s,由式(1)可計(jì)算得北斗衛(wèi)星信號(hào)在傳播過(guò)程中會(huì)產(chǎn)生約10.5kHz的多普勒頻偏[1]。
本文是以飛行器協(xié)同控制所需的組網(wǎng)通信為研究背景。出于通信抗干擾能力的考量,載波會(huì)選用厘米波甚至是毫米波的頻段,比北斗衛(wèi)星信號(hào)的載波頻率高出了一個(gè)數(shù)量級(jí)以上。飛行器組網(wǎng)通信信號(hào)在傳播過(guò)程中產(chǎn)生約200kHz頻偏,飛行器組網(wǎng)通信信號(hào)時(shí)多普勒搜索范圍遠(yuǎn)大于捕獲衛(wèi)星導(dǎo)航信號(hào)時(shí)多普勒搜索范圍。
同時(shí)北斗衛(wèi)星將星歷信息持續(xù)廣播發(fā)送,使得接收機(jī)在捕獲信號(hào)時(shí)可以進(jìn)行長(zhǎng)時(shí)間的相關(guān)積累,這個(gè)時(shí)間通常超過(guò)10ms。而空間飛行器組網(wǎng)通信信息是猝發(fā)的,并且用于捕獲的幀同步步頭時(shí)間通常在1ms以下。接收機(jī)只能利用如此短時(shí)間的信息快速完成信號(hào)的捕獲,以便對(duì)幀內(nèi)信息進(jìn)行解擴(kuò)。
面對(duì)大頻偏猝發(fā)信號(hào)的捕獲,已有的雙塊補(bǔ)零信號(hào)捕獲算法[2]效果并不好,主要體現(xiàn)在算法計(jì)算量大,捕獲時(shí)間長(zhǎng)。而雙塊補(bǔ)零算法目前研究的重點(diǎn)集中在對(duì)雙塊補(bǔ)零算法引入額外的如運(yùn)動(dòng)補(bǔ)償[3]或粒子濾波[5]等環(huán)節(jié),以實(shí)現(xiàn)對(duì)長(zhǎng)相關(guān)時(shí)間信號(hào)更精準(zhǔn)的捕獲。而以猝發(fā)信號(hào)為研究對(duì)象,以減少捕獲時(shí)間為目的的研究目前并不充分。
針對(duì)雙塊補(bǔ)零算法目前存在的問(wèn)題,本文對(duì)雙塊補(bǔ)零算法進(jìn)行改進(jìn),通過(guò)調(diào)整分塊方案和優(yōu)化系統(tǒng)參數(shù)擴(kuò)大了頻偏搜索范圍。提出了列壓縮算法,通過(guò)先時(shí)域累加再FFT的方式,減少了算法FFT的次數(shù),在犧牲少許捕獲性能的基礎(chǔ)上大幅減少了計(jì)算復(fù)雜度,提高了系統(tǒng)的實(shí)時(shí)性。
雙塊補(bǔ)零算法能在一個(gè)擴(kuò)頻碼周期內(nèi)同時(shí)完成相位搜索和多普勒頻偏估計(jì),其算法的核心在于分塊和補(bǔ)零。將分塊后的數(shù)據(jù)子塊后面接入相同大小的零塊,之后再進(jìn)行圓周相關(guān),既保證了數(shù)據(jù)的搜索充分且不重復(fù),同時(shí)將分塊后的相關(guān)結(jié)果進(jìn)行FFT和IFFT,減少了進(jìn)行變換的點(diǎn)數(shù),從而減少了計(jì)算量。并且,將相關(guān)值矩陣向頻域變換減小了多普勒頻偏對(duì)相關(guān)值的影響,頻率搜索范圍較其它算法更大。
基于BPSK調(diào)制通信系統(tǒng)的雙塊補(bǔ)零捕獲模型如圖1所示。雙塊補(bǔ)零算法主要分為三步,即雙塊補(bǔ)零、塊內(nèi)相關(guān)和移塊、檢測(cè)和判決(假設(shè)相干積累時(shí)間為T,分塊數(shù)為Nb,每塊包含數(shù)據(jù)點(diǎn)Ls個(gè),一個(gè)擴(kuò)頻碼包含的分塊數(shù)為Nms。
圖1 通信系統(tǒng)模型
現(xiàn)對(duì)各個(gè)步驟進(jìn)行詳述:
第一步:雙塊補(bǔ)零,包括分塊,雙塊,補(bǔ)零三個(gè)操作。
分塊操作:將下變頻到基帶,相干累積時(shí)間為T的信號(hào)和本地?cái)U(kuò)頻信號(hào)等分為Nb個(gè)數(shù)據(jù)子塊,每個(gè)數(shù)據(jù)子塊包含Ls個(gè)采樣點(diǎn)。
雙塊操作:將相鄰的兩個(gè)數(shù)據(jù)子塊組合成新的數(shù)據(jù)子塊,新的數(shù)據(jù)子塊包含2Ls個(gè)采樣點(diǎn)。
補(bǔ)零操作:將本地?cái)U(kuò)頻信號(hào)的每一個(gè)數(shù)據(jù)子塊后補(bǔ)上相同長(zhǎng)度的零,組成新的數(shù)據(jù)子塊,每個(gè)數(shù)據(jù)子塊也包含2Ls個(gè)點(diǎn)。
第二步:塊內(nèi)相關(guān)和移塊操作
塊內(nèi)相關(guān):將接收信號(hào)和本地?cái)U(kuò)頻信號(hào)對(duì)應(yīng)的兩個(gè)數(shù)據(jù)子塊分別做2Ls個(gè)點(diǎn)的FFT,得到兩組長(zhǎng)度為2Ls的數(shù)據(jù),將本地?cái)U(kuò)頻信號(hào)的FFT結(jié)果取共軛,然后將兩組結(jié)果點(diǎn)對(duì)點(diǎn)相乘,得到2Ls長(zhǎng)度的數(shù)據(jù),對(duì)相乘結(jié)果做IFFT后取前Ls個(gè)數(shù)據(jù)。對(duì)Nb個(gè)塊均進(jìn)行以上操作,共得到Nb×Ls個(gè)點(diǎn),構(gòu)成時(shí)域相關(guān)值矩陣M1的前Ls列。
圖2 雙塊補(bǔ)零分塊示意圖
移塊操作:將接收信號(hào)左移一塊,移塊后的信號(hào)和本地?cái)U(kuò)頻信號(hào)進(jìn)行塊內(nèi)相關(guān)操作,相關(guān)結(jié)果依次放入時(shí)域相關(guān)值矩陣M1中,信號(hào)共移動(dòng)Nms-1次,即共完成Nms次塊內(nèi)相關(guān),最終得到矩陣M1為Nb行,Nms×Ls列的矩陣。
第三步:檢測(cè)與判定
得到的時(shí)域相關(guān)值矩陣M1按列進(jìn)行FFT變換,計(jì)算出該矩陣所有點(diǎn)的能量。其中的最大值即為捕獲的結(jié)果,最大值點(diǎn)對(duì)應(yīng)的行位置即為多普勒頻偏,對(duì)應(yīng)的列位置即為碼相位。
雙塊補(bǔ)零算法是碼相位多普勒頻偏并行搜索,理論上一個(gè)碼周期即可估算出碼相位和多普勒頻偏。
雙塊補(bǔ)零算法中假設(shè)采樣率為fs,總數(shù)據(jù)點(diǎn)數(shù)為M,則算法的頻率分辨率可表示為
(2)
其中T為相干積累時(shí)間。
當(dāng)相干積累時(shí)間為一個(gè)碼片周期時(shí),上式可進(jìn)一步推得
(3)
其中fchip為偽碼符號(hào)率,cyclength為碼片周期長(zhǎng)度。
算法的搜索帶寬Bf=[fmin,fmax]為
|fmax-fmin|=Δf*Nb
(4)
由上分析可知,雙塊補(bǔ)零算法的頻偏搜索帶寬由兩個(gè)因素決定,頻率分辨率和算法分塊方案。空間飛行器對(duì)地通信時(shí),捕獲信號(hào)時(shí)的相干積累時(shí)間長(zhǎng)通常在10ms以上,頻率分辨率高,捕獲精度高使得算法的頻偏搜索帶寬不足。而空間飛行器之間的通信,相干積累時(shí)間低,通常在1ms以下,使得算法的頻率分辨率低,搜索步長(zhǎng)大,調(diào)整算法的分塊方案可以滿足大的頻偏搜索范圍。
下變頻到基帶的信號(hào)由MATLAB仿真產(chǎn)生,調(diào)制方式為BPSK。偽碼符號(hào)率9.6Mcps,信號(hào)采樣率19.2MHz,即偽碼過(guò)采樣率為2,偽碼周期2047,載波頻率1.5Mhz,噪聲使用加性高斯噪聲。信噪比-15dB。取一個(gè)偽碼周期的時(shí)間0.2133ms作為相干積累時(shí)間,既共采樣4094個(gè)點(diǎn)用雙塊補(bǔ)零算法進(jìn)行計(jì)算。算法信號(hào)等分為128段,每段有32個(gè)采樣點(diǎn)(剩余兩個(gè)信號(hào)點(diǎn)用零補(bǔ)齊)。
雙塊補(bǔ)零FFT捕獲矩陣如圖4所示,當(dāng)多普勒頻移為90kHz,碼相位偏移275個(gè)碼片時(shí)的捕獲情況,估計(jì)頻偏為88920Hz,誤差為1080Hz,計(jì)算的碼相位偏移為275,F(xiàn)FT捕獲最大值為3600。
圖3 圓周相關(guān)示意圖
圖4 雙塊補(bǔ)零FFT捕獲矩陣
圖5圖6分別展示了碼片對(duì)齊時(shí)和多普勒時(shí)的FFT幅度值。既將圖3中捕獲成功時(shí)將當(dāng)前碼片和多普勒補(bǔ)償值所有FFT幅度值用二維圖像表示出來(lái)??梢钥闯?,當(dāng)本地碼片相位和多普勒補(bǔ)償和接收信號(hào)匹配成功時(shí)時(shí),F(xiàn)FT幅值有明顯的峰值。此時(shí)碼片相位誤差為0,補(bǔ)償多普勒頻率誤差小于算法多普勒分辨率的一半,可認(rèn)為算法捕獲信號(hào)成功。
圖5 碼片對(duì)齊時(shí)FFT幅度值
圖6 多普勒對(duì)齊時(shí)FFT幅度值
雙塊補(bǔ)零算法的計(jì)算量主要集中在FFT相關(guān)的乘法和加法計(jì)算。N點(diǎn)的FFT復(fù)數(shù)乘法計(jì)算量為0.5×Nlog2N,復(fù)數(shù)加法計(jì)算量為Nlog2N?,F(xiàn)將不同分塊條件下的計(jì)算量列表如下所示。
表1 分塊數(shù)為64,每塊長(zhǎng)64的計(jì)算量
表2 分塊數(shù)為128,每塊長(zhǎng)32的計(jì)算量
表3 分塊數(shù)為256,每塊長(zhǎng)16的計(jì)算量
由以上三表可以看出,雙塊補(bǔ)零算法的運(yùn)算量主要集中在最后一步列計(jì)算上。隨著分塊長(zhǎng)度的減小,數(shù)據(jù)預(yù)處理和部分相關(guān)步驟的計(jì)算量有所減小,但是最后一步對(duì)每列求FFT所需計(jì)算量急劇增加。算法所需的總計(jì)算量也隨著分塊長(zhǎng)度的減小而增加。這是因?yàn)樵谧詈笠徊綄?duì)每列求FFT的過(guò)程中,雖然不同分塊長(zhǎng)度下所需FFT次數(shù)不變,均為4096次FFT,遠(yuǎn)超數(shù)據(jù)預(yù)處理和部分相關(guān)計(jì)算的輪數(shù),所以算法的計(jì)算量都集中在列計(jì)算上。每次列計(jì)算FFT的長(zhǎng)度為矩陣的行數(shù),也就是分塊的塊數(shù)。分塊長(zhǎng)度減小,分塊的塊數(shù)相應(yīng)增加,使得FFT的長(zhǎng)度相應(yīng)的增加了,從而使得總計(jì)算量增加了。
在不同信噪比條件不同分塊方案下對(duì)雙塊補(bǔ)零算法進(jìn)行仿真,計(jì)算其捕獲成功率。將捕獲成功定義為計(jì)算得到的多普勒頻偏與仿真信號(hào)頻偏的差值小于算法當(dāng)前頻率分辨率的一半,記為捕獲成功,否則失敗。
圖7 不同分塊數(shù)下算法的捕獲率
上圖給出了在多普勒頻偏為30kHz時(shí),雙塊補(bǔ)零算法在不同分塊長(zhǎng)度,不同信噪比條件下用蒙特卡洛對(duì)信號(hào)進(jìn)行多次獨(dú)立的捕獲。統(tǒng)計(jì)的信號(hào)捕獲概率,可以看出,捕獲率隨著信噪比上升而逐漸增加,最終趨近與100%。當(dāng)信噪比相同時(shí),分塊長(zhǎng)度越大,捕獲率越高。其中分塊長(zhǎng)度越長(zhǎng),分段數(shù)越小,算法的捕獲成功率越高。
對(duì)于猝發(fā)信號(hào)而言,不僅要求相關(guān)累計(jì)時(shí)間更少,也對(duì)運(yùn)算時(shí)間提出了更加嚴(yán)格的要求。由此有必要以犧牲一部分捕獲性能為代價(jià),來(lái)減少算法過(guò)程中的計(jì)算量。本節(jié)使用列壓縮的方法來(lái)減少算法的計(jì)算量,并通過(guò)實(shí)際仿真給出實(shí)際的捕獲性能損失和計(jì)算量減少量。
通過(guò)上一章的分析,雙塊補(bǔ)零算法的計(jì)算量主要集中在最后一步對(duì)每一列進(jìn)行FFT。根據(jù)FFT的性質(zhì),不同頻率的信號(hào)在時(shí)域進(jìn)行相加后再進(jìn)行FFT,與先對(duì)不同信號(hào)進(jìn)行FFT,再在頻域進(jìn)行累加,兩者的結(jié)果是相同的。所以可以采取列壓縮的方法減少計(jì)算量。其計(jì)算流程圖如圖8所示。
圖8 列壓縮算法流程圖
先對(duì)所有的列分成若干塊。每一塊內(nèi)的所有列先按行進(jìn)行累加,再進(jìn)行FFT。這樣就減少了進(jìn)行FFT的總列數(shù),從而減少了算法的計(jì)算量。
對(duì)不同倍數(shù)的列壓縮進(jìn)行捕獲性能的仿真。主要參數(shù)與上一章相同,分塊數(shù)仍然是將接收數(shù)據(jù)和本地偽碼分為128塊,每塊長(zhǎng)32個(gè)數(shù)據(jù)。在雙塊補(bǔ)零算法最后一步對(duì)每一列求FFT之前。將所有列按每4/8/16列為一組進(jìn)行分塊累加后再執(zhí)行FFT操作,每個(gè)分組情況下的使用蒙特卡洛對(duì)信號(hào)進(jìn)行多次獨(dú)立捕獲,統(tǒng)計(jì)捕獲成功率結(jié)果如圖8所示。圖中紅線是沒有進(jìn)行分組減少計(jì)算量的雙塊補(bǔ)零算法的捕獲性能。由圖可以看出列壓縮倍數(shù)為4的捕獲性能相較于沒有進(jìn)行列壓縮時(shí),其損失約為1dB。列壓縮倍數(shù)為8和16,算法的捕獲性能有較大的損失,性能損失分別為3dB和5dB。
為了探究不同列壓縮倍數(shù)下的不同分塊方式對(duì)捕獲性能的影響。對(duì)不同分塊情況下都對(duì)雙塊補(bǔ)零列壓縮進(jìn)行捕獲性能的仿真。主要參數(shù)仍然與上一章相同。對(duì)分塊數(shù)是256塊,每塊16個(gè)數(shù)據(jù);分塊數(shù)是64塊,每塊64個(gè)數(shù)據(jù)。這兩種分塊情況使用蒙特卡洛統(tǒng)計(jì)算法的捕獲性能。
由圖可以看出結(jié)論與分塊數(shù)128塊,每塊32個(gè)數(shù)據(jù)的結(jié)論類似。列壓縮倍數(shù)為4捕獲性能相較于沒有進(jìn)行列壓縮時(shí),其損失約為1dB。列壓縮倍數(shù)為8和16,算法的捕獲性能有較大的損失。對(duì)比圖9圖10和圖8,可以得出結(jié)論:不同的分塊方式對(duì)捕獲性能損失影響較小。
圖9 不同分組條件下算法的捕獲率
圖10 分塊情況為16*256下的捕獲性能
將不同列壓縮倍數(shù)下和不同分塊方式下的計(jì)算量做圖如下所示。
圖13 不同分塊方案下的乘法量圖
由圖11和圖12可以看出,不同的分塊方案下,使用列壓縮算法的情況下,對(duì)比相同分塊方案不進(jìn)行列壓縮,算法的加法計(jì)算量和乘法計(jì)算量都得到了大幅的降低。捕獲性能降低最少的4倍列壓縮,總計(jì)算量降低了約73%
圖11 分塊情況為64*64下的捕獲性能
圖12 不同分塊方案下的加法量圖
在實(shí)際的猝發(fā)信號(hào)捕獲中,雙塊補(bǔ)零算法需要綜合頻偏搜索范圍,搜索精度來(lái)選擇合適的分塊方法。而列壓縮算法可以有效的降低算法所需的計(jì)算量。綜合捕獲性能和計(jì)算量的減少,最優(yōu)的列壓縮比為4倍。捕獲性能損失了約1dB,在可接受范圍內(nèi)。計(jì)算量下降了約73%。
本文詳細(xì)研究了雙塊補(bǔ)零算法的原理和實(shí)現(xiàn)步驟,通過(guò)雙塊補(bǔ)零算法分塊方案和參數(shù)設(shè)置的優(yōu)化,使算法的搜索帶寬大幅提升了,并且通過(guò)仿真證明了優(yōu)化后的算法能夠成功對(duì)高動(dòng)態(tài)擴(kuò)頻信號(hào)進(jìn)行捕獲。之后通過(guò)仿真定量的說(shuō)明了不同分塊方案對(duì)雙塊補(bǔ)零算法捕獲性能計(jì)算量的影響。最后針對(duì)高動(dòng)態(tài)猝發(fā)擴(kuò)頻信號(hào)的應(yīng)用場(chǎng)景,提出了列壓縮算法,通過(guò)減少算法FFT的次數(shù)的方式,大幅減少了算法所需的計(jì)算量。最后綜合捕獲性能損失和計(jì)算量減少,給出了最優(yōu)的列壓縮比。