王奕新,左啟耀,李 峰
(北京自動化控制設備研究所,北京 100074)
基于FPGA的BOC(1,1)信號捕獲技術
王奕新,左啟耀,李 峰
(北京自動化控制設備研究所,北京 100074)
BOC調制是新一代衛星導航系統中廣泛采用的調制方式,在時域上具有多峰值特性,副峰的存在增加了捕獲的難度。采用自相關副峰消除技術(ASPeCT)在原有的BOC碼相關支路的基礎上增加一條偽碼相關支路,可以有效削弱碼相位檢測函數的副峰,避免誤捕獲,是一種性能良好的BOC信號捕獲技術。提出一種采用二維并行快速搜索的在FPGA芯片中實現ASPeCT捕獲技術的方案,可以顯著縮短捕獲時間。在理論分析和仿真驗證的基礎上,采用Verilog硬件描述語言在接收機FPGA+DSP平臺上編程實現,在露天測試中,成功捕獲到Galileo E1B衛星導航信號,并對ChipScope采集的數字中頻信號的多普勒頻率和碼相位靜態捕獲結果進行驗證,與同一段信號的Matlab仿真結果一致,證明所提出的技術方案正確合理可行。
BOC調制;ASPeCT技術;信號捕獲;FPGA
隨著衛星導航技術的發展,傳統的BPSK調制信號在提高定位精度上遭遇瓶頸,因此,新一代衛星導航系統計劃采用BOC調制方式[1]。BOC調制相較于BPSK調制,增加了一個副載波調制環節,將原有的基帶信號頻譜分別向左右兩側搬移。BOC調制不僅提高了頻段的復用性,而且信號的自相關函數峰值相較于BPSK信號更加尖銳,有利于提高偽距測量精度[2];但是自相關函數的多峰值特性[3]也增加了信號捕獲的復雜性,尤其是存在噪聲和干擾的情況下,容易造成誤捕獲,給接收機捕獲算法設計帶來難度。
BOC信號捕獲技術的研究重點是如何正確識別主峰值,BPSK-Like捕獲算法[4]只捕獲頻譜中一個邊帶,適合高信噪比信號捕獲;SCC捕獲算法[5]、三路并行相關捕獲算法[6]、Filtered捕獲算法[7]和ASPeCT算法[8]都是通過增加額外的相關支路來確定主峰,由于2個頻譜邊帶都參與運算,所以低信噪比信號也有很好的處理效果。本文提出一種基于二維并行快速搜索的ASPeCT捕獲技術實現方案,并在FPGA芯片中完成了方案的軟件設計,以及實際信號的捕獲測試。
通過多普勒頻率和碼相位的二維搜索實現捕獲。如果每次只搜索一個單元,對于偽碼周期長度為4ms的BOC(1,1)調制信號,完成128×8184個單元的搜索大約需要1h,難以在FPGA上實現。因此,本文提出了ASPeCT算法的二維并行快速搜索實現方案,在多普勒頻率一維,通過傅里葉變換一次完成128個頻率的搜索;在碼相位一維,通過100路并行相關器一次搜索100個碼相位,將搜索次數由128×8184降為82,最小捕獲時間降為328ms。算法原理圖如圖1所示。

圖1 基于二維并行快速搜索的ASPeCT捕獲算法原理圖Fig.1 The schematic diagram of ASPeCT acquisition algorithm based on 2-D parallel fast search
以圖1中最下方一對相關支路為例,它可以完成一個碼相位上全部頻率搜索單元的搜索,將輸入的BOC(1,1)數字中頻信號表示為[9]

(1)
其中,c(t)和χ(t)分別表示信號中的調制偽碼和調制副載波,τi(t)表示傳播相位時延,θi(t)是載波相位。
對于BOC碼相關支路,中頻輸入信號先與本地載波混頻,再與本地BOC碼做相關運算,結果可表示為w1(t) = 2c(t-τi(t))c(t-τo(t))χ(t-τi(t))
χ(t-τo(t))·cosθi(t)(cosθo(t)+jsinθo(t))
=c(t-τi(t))c(t-τo(t))χ(t-τi(t))
χ(t-τo(t))·((cosθe(t)-cos(θi(t)+
θo(t)))+j(sinθe(t)+sin(θi(t)+θo(t))))
(2)
其中,θe(t)=θi(t)-θo(t)。再經過時間為T的積分,對積分結果采樣得到

(cosφe(nT)+jsinφe(nT))
(3)
RBOC/BOC(τ)為BOC碼自相關函數,τe(t)=τi(t)-τo(t),ωe(t)=ωi(t)-ωo(t),ωi(t)和ωo(t)分別為信號載波和本地載波角頻率,φe(t)表示信號載波和本地載波的相位差均值。RBOC/BOC(τ)的表達式為

χ(t-τi(t))χ(t-τo(t)))dt
(4)

(5)
故經過歸一化FFT的結果可表示為

(cosφe+jsinφe)L(ωe,k)
(6)
對S1(k)取模平方,得到式(7)。

(7)
偽碼相關支路有類似結果

(8)
其中,RBOC/PRN(τ)為BOC碼與偽碼的互相關函數,RBOC/PRN(τ)的表達式為

χ(t-τi(t)))dt
(9)
將V1與V2相減,得到

(10)

在預設BOC(1,1)中頻信號載噪比為45dB·Hz、碼相位延遲為1000碼片的條件下,BOC碼相關支路輸出的取模平方結果V1、偽碼相關支路輸出的V2及兩路求差結果V分別如圖2所示,可以看出,基于二維并行快速搜索的ASPeCT算法通過偽碼相關支路可以顯著削減位于捕獲碼相位±0.5碼片處的副峰,使合路輸出檢測量不受副峰的影響,主峰值更加尖銳,是一種性能良好的快速高精度捕獲算法。

(a)BOC碼相關支路平方結果 (a) The square result of BOC code correlation branch

圖3 基于二維并行快速搜索的ASPeCT捕獲算法流程圖Fig.3 The flowing chart of ASPeCT acquisition algorithm based on 2-D parallel fast search

(b)偽碼相關支路平方結果 (b) The square result of pseudo code correlation branch

(c)兩路求差結果 (c) The subtraction of two branches圖2 兩路求差前后的結果Fig.2 The result before and after subtraction of two branches
基于二維并行快速搜索的ASPeCT捕獲算法在FPGA+DSP硬件平臺上實現,其中FPGA采用Xilinx公司的Kintex-7 K325T芯片,工作時鐘為62M,中頻信號數據速率為62M,位數為4bit。
2.1 實現流程
基于二維并行快速搜索的ASPeCT捕獲算法流程如圖3所示。輸入中頻信號先與載波NCO生成的正余弦信號相乘得到同相正交兩路零中頻信號I_Data和Q_Data,再將它們分別與碼NCO生成的偽碼序列Code和BOC碼序列Code_BOC相關,一次完成K個碼相位上的相關,經過部分累積降低采樣頻率分別得到P個采樣點補零至M點進行傅里葉變換,將時域信號轉換為頻域信號,一次完成對多普勒頻率一維的搜索,然后將兩條相關支路的變換結果平方相減生成檢測量,最后將檢測量的最大值MaxValue和對應地址MaxAddr傳給DSP,在DSP的控制下進行N/K次運算完成對整個偽碼周期的搜索。
以Galileo E1B信號的捕獲為例,Galileo E1B信號采用CBOC(6,1,1/11,'+')調制方式,只捕獲其中的BOC(1,1)成分造成的損耗不超過0.5dB。Galileo E1B信號長度為4ms,包含4092碼片。將實現的搜索參數說明如下:
1)對于多普勒頻率一維,一般陸基運動載體上的衛星信號接收機接收到載波的最大多普勒頻率為±10kHz,為了覆蓋20kHz的頻率搜索范圍,相干積分時間最長不能超過50μs[11]。對于偽碼周期為4ms的Galileo E1B信號,取P等于80,4ms信號經過50μs相關累積得到80點采樣數據。如果將這80點數據直接進行FFT,由式(10)可知,雖然對所有頻率單元的搜索可以一次完成,但是當ωe偏離譜線時會產生頻率損耗L2(ωe,k),多普勒頻率一維的輸出結果如圖4所示。

圖4 80點FFT歸一化輸出結果Fig.4 The normalized output result of 80 point FFT
可以看出,在FFT點數和輸入數據個數均為80時,FFT的頻譜泄漏會造成ASPeCT算法多普勒頻率輸出結果最大3.9dB的頻率損耗,嚴重影響性能。為了彌補頻率損耗,同時兼顧FFT對輸入數據的長度是以2為底的指數冪的要求,取FFT點數M為128,將80點采樣數據補零至128點進行運算。補零后的多普勒頻率輸出結果如圖5所示。

圖5 128點補零FFT歸一化輸出結果Fig.5 The normalized output result of 128 point FFT
由圖5可知,補零后的ASPeCT捕獲算法最大僅有1.4dB的頻率損耗,滿足實際要求。算法的頻率分辨率為
Δf=20kHz/128=156.25Hz
(11)
2)對于碼相位一維,GalileoE1B信號的偽碼周期長度為4092碼片,選取碼相位搜索步長Δc為0.5碼片,實現對整個偽碼周期的搜索需要遍歷8184個搜索單元。本文取K等于100,即采用100路并行相關器,一次搜索100個半碼相位,只需82次就可以完成對碼相位一維的搜索。算法對碼相位的估算精度為0.5碼片。
可以看出,基于二維并行快速搜索的ASPeCT捕獲算法通過復雜的傅里葉變換和追加更多相關器資源,在碼相位估算精度和頻率分辨率不變的前提下,將搜索次數從原有的128×8184次降為82次,最小捕獲時間從70min降為328ms,適合在資源豐富的Kintex-7芯片中實現。
2.2 實現結構
2.2.1 本地載波和碼的生成
捕獲電路的載波NCO通過累加DSP提供的載波頻率控制字,并將累加值作為取樣地址送入相幅轉換電路得到本地復制正余弦載波信號Carrier_Sin和Carrier_Cos用于混頻,如圖6所示。
碼NCO通過讀入DSP提供的碼頻率控制字,得到2倍于偽碼速率的半碼片發生計數信號Code_En,當計數值為偶數時,通過ROM控制器依次讀取存在ROM里的4092個Galileo E1B信號的偽碼碼片值,得到偽碼序列Code;如果同時在計數值為奇數時反轉偽碼電平,即可生成經副載波調制的偽碼序列Code_BOC,如圖7所示。
2.2.2 相關支路數據的處理
BOC碼相關支路的結構如圖8所示。將BOC碼延時得到依次相差半個碼片的100路信號,再將這100路信號分別與同相正交支路上的零中頻信號相關并進行50μs累積,每個碼相位上產生80個累積結果,100路信號共產生100×80個累積結果。每完成一次50μs累積,就將100個結果縱向寫入100×80 RAM的一列,4ms寫滿RAM的80列。當一個RAM縱向寫滿后,依次將每個碼相位上的80個結果橫向讀出補零后進行128點FFT變換,輸出的實部和虛部結果分別為RE_BOC和IM_BOC。偽碼相關支路的情況與之類似,輸出的FFT變換實部和虛部結果分別為RE_PRN和IM_PRN。

圖6 本地載波生成的結構框圖Fig.6 The structured flowchart of local carrier generation

圖7 本地碼生成的結構框圖Fig.7 The structured flowchart of local code generation

圖8 BOC碼相關支路的結構框圖Fig.8 The structured flowchart of BOC code correlation branch
2.2.3 檢測量的生成
將BOC碼和偽碼相關支路輸出的FFT結果平方相減得到峰值檢測量Value,計算公式為
(12)
實現框圖如圖9所示,利用平方差公式進行分解,并采用流水線的工作模式,依次計算100個半碼相位上FFT變換輸出的多普勒頻率搜索結果存入100×128 RAM,然后逐一比較選出最大值MaxValue和對應地址MaxAddr傳給DSP,由DSP比較82次搜索的結果得到整個偽碼周期的最大值,當最大值超過門限時,聲明捕獲成功,對應地址就是捕獲到信號的碼相位時延和多普勒頻率。

圖9 檢測量生成的結構框圖Fig.9 The structured flowchart of test quantity generation
ASPeCT算法驗證是通過接收實際Galileo E1B信號實現的。2015年8月25日上午9點54分,北京市僅可以觀測到播發BOC(1,1)信號的Galileo系統在軌工作的11號衛星,經過反復調試,解決實際問題,在露天環境下,采用基于二維并行快速搜索的ASPeCT捕獲算法在“FPGA+DSP”平臺上成功實現了對11號衛星的動態捕獲,并利用ChipScope采集了4bit衛星信號數據,數據中頻頻率為15.58MHz,數據長度為4ms。實際衛星信號的Matlab捕獲仿真結果如圖10所示,信號的多普勒頻率和碼相位時延分別為625Hz和3459.5碼片。

(a)多普勒頻率捕獲結果 (a) The Doppler frequency acquisition result

(b)碼相位捕獲結果 (b) The code phase acquisition result

(c)二維捕獲結果(局部) (c) The two-dimension acquisition result (part)圖10 ASPeCT算法的實際衛星信號捕獲結果Fig.10 The real satellite signal acquisition result of ASPeCT
同一段衛星信號的FPGA捕獲結果如圖11所示,可以看出,捕獲結果峰值明顯,最大值遠大于次大值,且在地址00100110000100處有一個幅值為3231的峰值,地址的前七位0010011即十進制數19為碼相位捕獲結果,后七位0000100即十進制數4為多普勒頻率捕獲結果,經過DSP計算得到的實際衛星信號的多普勒頻率和碼相位分別為
Doppler=4Δf=4×156.25=625(Hz)
(13)
Phase=(100×69+19)Δc
=6919×0.5=3459.5(chip)
(14)
與Matlab仿真結果一致,驗證了設計的正確性。

圖11 基于ASPeCT技術的實際衛星信號的FPGA捕獲結果Fig.11 The FPGA acquisition result of actual satellite signal based on ASPeCT
為了削弱BOC調制信號的副峰、避免誤捕獲,ASPeCT算法在原有的BOC碼相關支路的基礎上增加一條偽碼相關支路,實現方案更為復雜,每次只搜索一個單元的串行搜索不能滿足BOC信號在FPGA上動態捕獲的實現。
本文提出了一種ASPeCT捕獲算法在FPGA芯片上的二維并行快速搜索實現方案,在BOC碼相關支路和偽碼支路并行工作的基礎上,在碼相位一維,通過追加更多的相關器資源一次搜索多個碼相位;在多普勒頻率一維,通過傅里葉變換一次完成所有頻率單元的搜索,顯著縮短了捕獲時間。在理論分析和仿真驗證的基礎上,通過FPGA邏輯編程在FPGA+DSP平臺上實現了動態捕獲并采集了衛星導航信號數據。數據的FPGA測試結果顯示捕獲峰值明顯,且多普勒頻率和碼相位時延與Matlab仿真結果一致,證明了方案設計的正確性和有效性。可見,基于二維并行快速搜索的ASPeCT捕獲算法是一種捕獲BOC(1,1)信號的有效算法,可以在實際應用中加以推廣。
[1]BetzJW.TheoffsetcarriermodulationforGPSmodernization[C].ProceedingsofIONNationalTechnicalMeetingInstituteofNavigation, 1999.
[2] 周驥, 郭承軍, 曹建蜀, 等.GNSSCBOC信號快速無模糊度捕獲算法研究[J]. 信號處理, 2015, 31(7):876-882.
[3] 許磊, 何巍巍, 趙勝.BOC調制導航信號的精確捕獲方法研究[J]. 無線電工程, 2015, 45(12):36-39.
[4]MartinN,LeblondV,GuillotelG,etal.BOC(x,y)signalacquisitiontechniquesandperformances[C].Proceedingsofthe16thInternationalTechnicalMeetingoftheSatelliteDivisionoftheInstituteofNavigation,IONGPS/GNSS, 2003.
[5]WardPW.Adesigntechniquetoremovethecorrelationambiguityinbinaryoffsetcarrier(BOC)spreadspectrumsignal[C].ProceedingsofAnnualMeetingoftheInstituteofNavigation&CigtfGuidanceTestSymposium, 2003.
[6] 邢兆棟, 張其善, 楊東凱.GALILEO接收機中BOC(1,1)信號的捕獲[J]. 北京航空航天大學學報, 2006, 32(6):687-690.
[7]BrickellF,GardonM,McCurleyS,etal.Fastexponentiationwithprecomputation[C].ProceedingsofEurocryptonAdvancesinCryptology, 1993.
[8]JulienO,CannonME,LachapelleG.ANewunambiguousBOC(n,n)signaltrackingtechnique[C].TheEuropeanNavigationConferenceGNSS, 2004.
[9] 謝鋼. 全球導航衛星系統原理——GPS、格洛納斯和伽利略系統[M]. 北京: 電子工業出版社, 2013.
[10]RabinerLR,GoldB.Theoryandapplicationofdigitalsignalprocessing[M].NJ:PrenticeHall, 1989.
[11] 謝鋼.GPS原理與接收機設計[M]. 北京: 電子工業出版社, 2009.
Technique of BOC(1,1) Signal Acquisition Based on FPGA
WANG Yi-xin, ZUO Qi-yao, LI Feng
(Beijing Institute of Automatic Control Equipment, Beijing 100074, China)
BOC modulation will be widely adopted in new satellite navigation system. The signal has multi-peaks in time domain. The existence of side-peak increases the difficulty of acquisition. Autocorrelation side-peak cancellation technique (ASPeCT) is good in performance as it can effectively weaken the side-peak of code-phase detecting function and avoid false lock by adding a pseudo-code detecting branch on the basis of one BOC-code detecting branch. An implementation project of 2-D parallel fast search for ASPeCT on the FPGA chip is put forward which can significantly cut the acquisition time.On the basis of theoretical analysis and emulation verification, the acquisition algorithm is realized by Verilog HDL programing on FPGA+DSP receiving platform. The Galileo E1B satellite navigation signal is successfully acquired in the open air test. The Doppler frequency and code phase static acquisition results of the digital IF signal captured by ChipScope fall in line with the Matlab simulation results of the same signal, which proves the validity and feasibility of the project put forward.
BOC modulation; ASPeCT; Signal acquisition; FPGA
2016-06-02;
2016-08-01
王奕新(1991-),女,碩士,主要從事衛星接收機基帶處理算法研究。E-mail:wangyixin0916@163.com
10.19306/j.cnki.2095-8110.2017.02.012
TN967.1
A
2095-8110(2017)02-0064-08