文獻標識碼: A
文章編號: 0258-7998(2014)06-0137-03
目前,采用FPGA實現的DSP系統與利用傳統DSP處理器相比,在高速與實時性,系統的重配置與硬件可重構性以及單片DSP系統的可實現性等方面具有突出優勢[1]。而DSP Builder是Altera公司的一個面向DSP開發的系統級工具,內嵌Matlab的一個Simulink工具箱,使得DSP算法的電路實現可以充分利用Simulink的圖形化界面,具有直觀、高效的特性,簡化了硬件實現流程[2]。采用DSP Builder作為設計數字電路的工具,是現代DSP系統設計的發展方向之一。
GPS L1頻點和BD2 B1頻點是衛星導航系統中公開的民用信號,以此為基礎的軟件接收機得到廣泛而深入的研究。目前,并行碼相位算法在用高級語言實現的軟件接收機中廣泛應用,在運算速度得到保證的前提下,與串行捕獲算法相比可以極大地提高捕獲衛星的速度。但是目前大多數嵌入式實時衛星接收機由于計算能力和資源的限制,而只能采用串行捕獲的方法。另外,采用C/C++或者Matlab等高級語言實現的軟件接收機雖然在捕獲速度和精度上滿足要求,但是大多數只能實現事后處理,達不到實時處理的要求。即使實現了實時處理,用整臺計算機完成接收機的功能成本過高,而且體積重量較大。但FPGA在運算的并行特性以及內部集成的邏輯資源方面有著巨大優勢,保證了實時處理的可實現性。
對于RX3007 GPS/BD2雙模雙通道射頻模塊,1 ms的中頻數據量就達到了16 368個點,原始的算法必須執行一次16 368個點的FFT和IFFT組合,而163 68個點的FFT將極大地消耗LEs和RAM資源,這對FPGA十分不利。因此必須改進捕獲算法,將運算量和資源消耗量降至最低。相比參考文獻[3]中自行設計浮點型FFT的方式,本文在DSP Builder的圖形化界面中以第三方可定制FFT IP核為核心搭建基于改進并行碼相位算法的GPS/BD2雙模接收機快速捕獲電路,實現雙模雙通道快速捕獲,能極大地縮短開發周期,減少資源消耗,提高計算效率。
1 并行碼相位捕獲算法原理
衛星接收機捕獲算法的實現與射頻前端緊密關聯,本文采用廣州潤芯公司的RX3007雙模雙通道射頻模塊,上電后輸出頻率為4.092 MHz的GPS和BD2兩路2 bit中頻數字信號,采樣時鐘為16.368 MHz。
并行碼相位捕獲算法的原理如圖1所示。先將中頻信號進行載波剝離,采集整數倍毫秒時間內的數據進行FFT變換;然后將FFT結果與本地偽碼的FFT取共軛后的值逐點執行復數乘法;最后對所得結果進行IFFT變換,求取復數的幅值,進行捕獲門限判決[4]。
設長度都為N的兩個信號x(n)和y(n),x(n)代表輸入信號,y(n)代表本地偽碼,信號x(n)與y(n)的相關值為:
從而可將相關運算轉換為頻域的乘法運算。一旦算出了Z(k),則其時域的結果就可以通過傅里葉逆變換得到,即:
2 算法改進及仿真
以GPS為例,平均降采樣[5]主要是采用一個期望的小頻率時鐘對原始數據重采樣,對一個周期內的數據進行平均。但是降采樣時對這個時鐘要求較高,不方便實現[6]。將載波去除之后的16 368個數據降采樣至1 024點,要進行16次15個點的平均操作,其余均為16個點的平均。為方便實現和節省資源,本文采用固定位置和只進行累加的方式,即先找出所有的對15個點累加操作的起始位置并存儲起來備用,將16 368個點的位置與之比較,如果相同則進行連續15個點的累加操作,其余情況下均進行連續16個點的累加。本地C/A碼先上采樣至16.368 MHz,然后采取同樣的方式進行下采樣。為減少存儲偽碼FFT結果的位數,對下采樣后的偽碼累加值做除法運算,以降低平均采樣后的幅值,最后執行1 024點的FFT。由于硬件電路中全是整型操作,為了便于存儲處理以及減少存儲所占的空間,綜合考慮精度和資源消耗兩方面因素,最終將所有32顆衛星的本地偽碼FFT結果擴大5倍并取整,存儲備用。另外,考慮弱信號條件和捕獲速度,采用4 ms非相干累積的方式提高信噪比。BD2 GEO衛星C/A碼速率為2.046 MHz,沒有調制NH碼,所以必須降采樣至2 048點,執行2 048點FFT/IFFT組合,但捕獲過程中的其他操作同GPS類似。本設計的目標是對中頻數據進行適當預處理使之能夠調用Altera的FFT IP核執行FFT和IFFT變換組合,由于FFT IP核采用塊浮點的處理方式,運算過程中在精度和資源占用之間的折中,數據位寬和旋轉因子固定,每一級蝶形變換都會根據情況對數據進行移位,如果超出數據位寬,則低位數值將會被丟棄。考慮到這種情況,最后的門限判決采用主次峰值比值超過閾值的方法。圖2為GPS/BD2改進捕獲算法的Matlab仿真驗證結果。
分別用改進算法和原始捕獲算法對同一組通過USB2.0采集到的中頻數據進行處理,兩者捕獲得到的衛星一樣,各衛星多普勒頻率一樣,初始碼相位精度也在正負半個碼片之內。這說明改進的捕獲算法不僅大大降低了計算量,實現起來更加容易,而且仍然能夠很好地捕獲衛星。
3 硬件電路設計及驗證
快捕電路主要由平均采樣模塊average_sample、FFT/IFFT模塊fft_my、本地偽碼存儲模塊CA_FFT、復數乘法模塊complex_product、時序控制電路及累加判決六大部分組成,各模塊工作的參考時鐘為16.368 MHz。圖3顯示了完整電路的其中一部分, 整個電路的工作流程如圖4所示。
(1)FFT /IFFT模塊
本設計采用FFT和IFFT依照時序輪流在一個FFT IP核中執行的方式,節省了一個FFT處理器,降低了資源消耗。GPS捕獲中IP核輸入數據位寬旋轉因子精度定為18 bit,BD2中精度為20 bit。由于采用主次峰值比值的檢測算法,IFFT的輸出結果可以不必除以變換點數而直接用于累加判決模塊,另外,在信號較強情況下利用1 ms數據進行判決的過程中,IP核的指數輸出exp可不予考慮,這樣既節省了資源又降低了電路的復雜性。在執行單次FFT/IFFT變換組合的過程中,首先將IP核的inverse信號置高,等待平均采樣模塊采集完1 ms數據,從RAM中讀取數據,依次產生sop和eop脈沖,執行FFT,將所得結果取共軛后依次與預存在ROM中對應衛星的本地偽碼FFT結果相乘并暫存結果,然后將inverse信號置低,執行IFFT。
(2)平均采樣模塊
本設計利用平均采樣模塊將16.368 MHz的數據降采樣至1.024 MHz和2.048 MHz,該模塊包括本地載波NCO子模塊carrier_gen,15點和16點累加子模塊add_1516,RAM模塊,累加點數判決子模塊index_judge和相應的時序生成電路。其中載波NCO模塊基于LUT設計,LUT預存8個數據代表正余弦波的一個周期,數據位寬為3 bit,輸入不同的頻率控制字將輸出不同頻率的本地載波。其對應關系為:
其中,fcar為輸出的本地載波頻率,fclk為輸入時鐘,M為頻率控制字,N為相位累加的數據位寬(本設計N取32)。M由頻率控制字選擇模塊生成,遍歷±10 kHz范圍內以400 Hz步進的所有對應頻率控制字,在捕獲過程中完成對本地載波頻率的調整。其余子模塊在時序電路的控制下完成15點或16點數據累加功能,最終數據分為I支路和Q支路分別暫存在兩個1 024×6 bit RAM中。
(3)其他模塊
本地偽碼存儲模塊存儲的是預先計算好的各衛星偽碼被下采樣之后的FFT結果,按照實部和虛部分別存放在兩個ROM中。對GPS衛星而言,偽碼FFT結果擴大5倍取整后的數據需用10 bit表示, 而BD2則需用11 bit表示。復數乘法模塊的功能是將本地預存的C/A碼FFT結果與FFT IP核執行FFT之后取共軛的結果相乘,然后進行暫存,為執行IFFT準備數據,根據實際情況對數據位寬進行截取,使之等于IP和輸入精度。時序控制電路實現了對inverse信號的精確控制以及對各生成地址的計數器的使能和驅動。累加判決完成最終的I2+Q2累加,找出最高峰值和非相鄰次高峰,寄存最高峰值的偏移量并進行門限判決。
圖5為GPS和BD2快捕電路仿真得到I2+Q2的值,橫軸為采樣點的偏移值,縱軸為幅值。主次峰值的比值都超過了2,說明捕獲到衛星;主峰偏移量分別為644和206,說明快捕電路通過運算得到的初始碼相位與Matlab中的結果一致,算法改進效果明顯。最終,使用Signal Compiler將圖形模塊轉化成VHDL語言,在QuartusII軟件中編譯成功后下載配置文件至目標器件EP3C120F780C8N。實際測試時與華訊HX6330 GPS/BD2雙模接收機對比,快捕電路可以在2 s之內對所有GPS和BD2衛星完成一次盲捕,兩者捕獲得到的衛星號基本一致。
改進的捕獲算法不僅大大降低了運算量,減少資源消耗,便于硬件電路的實現,而且設計出來的電路能夠在單片FPGA內以較高的精度迅速對GPS和BD2衛星同時進行捕獲,為捕獲之后的跟蹤環路留下寶貴的邏輯資源。同時,本設計也為將來添加NIOS II多處理器系統完成信號跟蹤解調及導航解算從而在單片FPGA內部實現雙模導航接收機的全部功能奠定了基礎。
參考文獻
[1] 潘松,黃繼業,王國棟.現代DSP技術[M]. 西安:西安電子科技大學出版社,2003.
[2] 楊守良.基于DSP Builder的插值濾波器的設計及FPGA實現[J].微型機與應用,2013,32(1):54-56.
[3] 劉健.基于FPGA的高速浮點FFT的實現研究[J]. 微型機與應用,2012,31(14):79-81.
[4] AKOS D M. 軟件定義的GPS和伽利略接收機[M].楊東凱,張飛舟,張波,譯.北京:國防工業出版社,2009.
[5] STARZYK J A, ZHU Z. Averaging correlation for C/A code acquisition and tracking in frequency domain[J].MWSCAS 2001, Dayton, OH, 2001:905-908.
[6] 趙麗.基于FPGA平臺的GPS信號捕獲與跟蹤算法研究與實現[D]. 南京:南京郵電大學,2012.