文獻標識碼: B
文章編號: 0258-7998(2011)07-0026-03
當前,以FPGA+DSP為硬件平臺實現的軟件接收機,由于參數設置靈活、可驗證新的導航算法而備受重視。伴隨著新算法的日益復雜和對接收機要求的不斷提高,對系統的速度提出了更高的要求[1-2]。比較GNSS接收機不同解決方案的處理能力與靈活性[3],將更多的任務交給FPGA處理以減少DSP的負擔、提高系統速度。本文采用FPGA完成GPS的基帶處理,保留了軟件接收機參數的靈活性;節省了DSP資源,增加了定位結果的輸出率;在FPGA硬件資源允許下,通道個數可以任意擴展。
1 基帶處理FPGA實現方案
如圖1所示,GPS信號經天線、射頻下變頻至中頻,進入FPGA。載波環路和碼環路對中頻信號進行解擴,得到數據比特流。同步電路對數據流進行同步,輸出偽距等相關信息。系統啟動時,衛星號分配模塊和多普勒限定模塊接收DSP發送的配置方案。時鐘發生器模塊用于產生時鐘脈沖。
1.1 數控振蕩器設計
載波發生器按照輸入值產生不同頻率的同相I、正交Q兩路正弦信號。碼發生器除了產生不同頻率的C/A碼外,還具有對碼相位進行移位的操作。為減少資源使用,只采用每次延遲一個碼片的操作。延遲移位可減少捕獲到多徑信號的危險。
1.2 環路濾波器參數調整
考慮到FPGA除法運算的舍入誤差和射頻芯片帶寬的影響,環路參數的調整工作按以下步驟進行。
(1)按濾波器典型值計算公式,計算環路的增益、載波環帶寬100 Hz和碼環的10 Hz的參數值。此外,為了FPGA能夠利用移位進行運算,應化簡計算結果。
(2)修改載波環環路增益,使環路穩定。
(3)修改載波環和碼環增益,使環路波動最小。
系統使用一階鎖頻環輔助二階鎖相環濾波器。當濾波器使用表1的參數時,得到圖2所示的系統時域性能。從圖2可以看出,第一組鎖相環鑒相器的輸出抖動大,系統相位誤差大。同時I、Q相位圖中在正交支路Q上還有很大的能量,環路收斂性差。逐步調整參數比例后,在第二組中相位誤差減小到20°以內。
1.3 偽距信息輸出
在位同步和幀同步完成后,FPGA能夠檢測到子幀頭位置并通過數據流得到子幀頭部的發送時刻(周內時)。為得到子幀頭后任意一點的發送時刻,FPGA在檢測到子幀頭部時對各計時寄存器清零,然后按照各自的頻率累加計時。當DSP請求提取偽距信息時,FPGA將該時刻的各計時寄存器值同時轉移鎖存,并傳送給DSP處理。DSP計算出計時寄存器值對應的時間,再加上子幀頭對應的周內時即可得到信號的發送時刻。
2 基帶處理輔助模塊優化設計
接收機的正常工作需要一些輔助模塊,以協助接收機在信號遮擋、消失等條件下正常運行。
2.1 衛星號自動分配方法
在系統冷啟動時,FPGA自動搜星。為避免自由通道同時搜索同一顆星,需要設計衛星號分配方法。自動分配方法采用申請交換方式。如果自由通道沒有捕獲到當前衛星,則向衛星號分配庫申請新的衛星,同時將正在使用的衛星號上交。為適應熱啟動,DSP需要將優先搜索的衛星排在分配器前端以獲得高的優先級。PRN碼庫可將剛剛處理過的衛星號自動變為低優先級,以保證系統及時處理新出現的衛星。
2.2 熱啟動載波多普勒限制
多普勒限制模塊與衛星號分配庫結構相同。DSP系統根據歷書、時間和預存儲的位置計算出可視衛星號、概略多普勒頻移信息,把結果傳送至FPGA,并通知FPGA使用何種搜索模式進行搜星捕獲等。此處理方式可大大減少首次定位時間。
2.3 秒時鐘脈沖輸出
為輸出與UTC同步的精準秒脈沖,在FPGA內部設計了時鐘發生器。時鐘發生器以系統時鐘為基準,并輸出時鐘秒內計時累加器值tc,為DSP系統校正使用。當DSP請求偽距信息時,FPGA同時將tc鎖定送出。DSP定時計算后,可得到秒內時誤差tc-tu'(tu'為系統當前時間中不到1 s的部分),濾波后把校正值反饋給FPGA進行校正。
3 系統驗證
系統使用表1中第二組參數時,環路的牽引過程如圖3所示。從即時碼支路輸出可以看出,開始階段環路積分值不斷增大,最后正交支路積分值變小,同相支路解調出數據流。載波多普勒頻移顯示環路承受了250 Hz左右的偏差,達到了設計目標。
圖4(a)所示的位同步是圖4(b)幀同步的局部放大,Data_in為解調出的數據流輸入。可以看出,Count_bit將一個數據位分成了20份,Head_bit指示出數據位的頭部且第0位置處在數據位的開頭。由于環路積分,Data_in晚于真實數據位一個積分周期,真正的子幀頭在Count_bit為18時的末端,即圖4(a)中TOW_short值發生改變的時刻。從圖4(b)可以看出,在Head_subframe指示子幀頭部后,Data_in的后續輸入即為子幀頭的標識“10001011”。當遙測字和交接字均通過校驗后,幀同步成功。Head_subframe的觸發由前一子幀數據計算得到。
圖4(c)中,在子幀頭部TOW_short發生改變的時刻,計時寄存器中過子幀頭的完整C/A碼碼片個數Num_CA、過碼片周期的完整系統周期個數Num_81 MHz重新計數。由于Num_81 MHz晚于真實子幀頭CA_reset的上升沿一個系統時鐘周期,即從2開始計數,這樣,就能夠統一時間計算方法。
綜上所述,基于FPGA的基帶處理,向DSP系統提供偽距相關信息的最大頻率和FPGA的系統時鐘有關。本系統理論最大提供頻率為81.84 MHz,但受DSP處理速度和數據傳輸速度影響,在DSP滿負荷運行下,系統最快輸出定位頻率為100 Hz。
本文將基帶處理功能全部轉移至FPGA,設計實現了GPS信號捕獲、跟蹤、同步、偽距相關信息整理等模塊。將DSP從繁重的基帶處理部分脫離后,可專注于復雜的導航解算,大大提高了導航解算的速度,為復雜導航算法的實現和導航結果的高頻率輸出提供了寬裕的硬件資源。
本系統采用Altera公司Cyclone II 系列的EP2C70-
F672C6芯片,實現了12通道GPS模塊和EMIF接口電路。邏輯單元共占用60%,因此本款芯片支持更多的GPS通道模塊設計。
參考文獻
[1] 胡銳,薛曉中,孫瑞勝,等.基于FPGA+DSP的嵌入式GPS數字接收機系統設計[J].中國慣性技術學報,2009,17(2):188.
[2] ABOELMAGD N,KARAMAT B T,Mark D E,et al. Performance enhancement of MEMS-based INS/GPS integration for low-cost navigation applications[J].IEEE Transactions.on Vehicular Technology,2009,58(3):1077-1096.
[3] DOVIS F,SPELAT M,LEONE C,et al.On the tracking performance of a galileo/GPS receiver based on hybrid FPGA/DSP board[C].Proceeding.ION GNSS,2005:1611-1620.