盧潔瑩,馬路
(1.華南理工大學廣東廣州510641;2.中國科學院空間科學與應用研究中心北京100190)
?
GPS信號并行捕獲算法的FPGA實現
盧潔瑩1,馬路2
(1.華南理工大學廣東廣州510641;2.中國科學院空間科學與應用研究中心北京100190)
摘要:為了實現對GPS信號的快速捕獲,通過分析和比較了幾種現有算法,提出了基于平均采樣的FFT并行捕獲算法。為了避免平均采樣跨越偽碼的跳變沿而帶來能量損失,采用了尋找偽碼最大游程的方法,在最大游程里重新進行平均采樣,使其多出一個碼片的樣點,通過仿真驗證了該算法既避免了平均能量的損失,又便于硬件實現。為了便于硬件實現,設計了捕獲算法的系統結構和各個子模塊的FPGA結構;通過功能仿真,分析驗證了算法的可行性。
關鍵詞:平均采樣;FFT;并行捕獲;FPGA;有限狀態機
高效的捕獲算法是GPS接收機的關鍵技術。GPS的中頻采樣率為5 MHz,偽碼速率為1.023 Mbps,一個偽碼周期具有5 000個采樣點的數據。而5 000點的FFT,由于不是2的冪次,所以很難用硬件快速實現。為此,很多文獻提出了基于平均采樣的技術方案[1-2]。文獻[1],對連續的4點或5點偽碼樣點進行平均累加作為該碼片的采樣值,將5 000個樣點進行平均下采樣到1 023個點;在第一個連續的5個樣點中,必有一個是碼片的第一個樣點,故而采用5路平均采樣和FFT的捕獲方案,5條支路中最大值對應的捕獲結果必是接收偽碼的相位點。該方案雖然將5 000點下采樣到了1 023點,但是由于是非2的冪次點數,故而不易于硬件實現。文獻[3]在文獻[4]的基礎上進行了改進,對連續的5 000樣點下采樣到1 024點,便于硬件實現,但是由于平均采樣跨越了偽碼跳變沿,從而導致平均能量損失。為了避免平均采樣跨越偽碼的跳變沿,文獻[5]提出了一種非常巧妙的措施:尋找偽碼的最大游程,在最大游程里重新進行平均采樣,使其多出一個碼片的樣點,從而使總的樣點數由1 023點增加到1 024點,這樣既避免了平均能量的損失,又便于硬件實現。
捕獲擴頻信號的方法是尋找相關峰,通過相關峰的位置來粗略估計載波頻偏和碼相位值。由偽隨機序列的自相關特性可知,只有當收發碼片對齊到一個碼片之內時,才會出現相關峰。所以,在做相關計算時,一般移動碼片相位在半個碼片之內。但是,如果按照上述的平均采樣方法,直接將5 000點數據下采樣到1 024點,然后與本地Go1d碼做FFT相關計算,由于其碼相位移動步長為1個碼片,這樣有可能檢測不到相關峰。為了解決上述問題,采用文獻[1]提出的辦法,將輸入信號的前5個連續樣點分別作為輸入信號的第一個采樣碼片的首個數據點,這樣就有5個1 024點的平均樣點。
本文給出了算法的FPGA設計方案,詳細分析和設計了各個子模塊的FPGA結構。
基于平均采樣的FFT并行捕獲方案如圖1所示。其中,數據采集單元用以接收50 MHz的輸入中頻信號,采用5條并行捕獲支路,每條支路用于處理不同的采樣起始點,其內部結構如圖1所示;5條支路的處理結果在搜索調整單元里進行比較,選擇最大的值作為本次搜索的結果,將其與門限比較,大與門限則捕獲成功,否則調整本地載波發生器步進一個載波頻點,進入下一輪的搜索,如此反復,直到搜索完所有的頻點。

圖1 基于平均采樣的5路并行FFT捕獲方案圖

圖2 基于平均采樣的FFT并行捕獲方案的支路內部圖
每條支路的功能說明如下:數據采集控制模塊按照5 MHz的時鐘保存5 005個連續的中頻數據(此處稱為一幀)。當中頻數據采集單元完成一幀數據的采集后,發出有效信號控制有限狀態機(Fjnjte State Machjne,FSM),狀態機控制載波發生器產生一個頻點的載波,同時觸發混頻單元進行載波剝離;下變頻完成之后,進入平均采樣模塊進行降采樣處理,處理后的數據存儲到雙端口RAM中;降采樣完成后,進入FFT相關檢測單元,在狀態機的控制下有序地完成1 024點數據的循環卷積運算;相關檢測完成后進入最大值搜索模塊,若相關峰值大于預設閥值,則捕獲成功,輸出頻偏和碼相位值,否則調整載波頻點,步進一個頻差,進入下一幀的搜索。下面分別介紹捕獲模塊的各個子模塊的設計原理與硬件實現結構。
數據采集單元用于存儲5 MHz連續的5 005點數據樣點,用于5條支路的捕獲處理,每條支路的點數為5 000點。采集模塊采用乒乓RAM的工作方式,即:RAMA先接收數據,A接收完畢后發出“A寫完成”信號;在A的寫完成信號有效后,RAMB開始接收數據,B接收完后發出“B寫完成”信號,接著返回RAMA狀態,繼續RAMA的讀取。當“寫完成”信號有效后,采用40 MHz的時鐘進行數據讀取操作;在讀取完連續的5 000點數據后,進入等待狀態。乒乓RAM的讀寫操作如圖3和4所示。
數字中頻信號格式:信號由2比特組成,分別表示符號位和幅度位,用Sjgn和Mag表示,其格式參考文獻[6]。

圖3 乒乓RAM寫數據狀態機

圖4 乒乓RAM的讀操作狀態機
數據采集單元需要產生5路輸出數據。其操作方法如下:首先產生0~5 003的5 005個數據;接著以5 000為數據長度取出其中某段數據,分別對應到0~4 999,1~5 000,2~5 001,3~5 002,4~5 003;然后將第一段數據延時4個時鐘,第二段數據延時3個時鐘,第3個數據延時2個時鐘,第4段數據延時1個時鐘;最后以最后一段數據的有效信號作為整個數據采集單元輸出的數據有效信號。其時序原理圖如圖5所示。

圖5 數據采集單元輸出數據的時序圖
2.2載波產生與剝離單元
載波產生單元采用數控振蕩器(Numerjca11y Contro11ed Oscj11ator,NCO)的方式實現。本設計中,NCO的工作始終為400 MHz,寄存器長度為32位,取寄存器的高兩位查表。對于采樣率為5 MHz的中心頻率為1.25 MHz中頻信號,由于本地采樣率提高了8倍,故本地NCO初始頻率設為8×12.5=100 MHz,對應頻率控制字為M=0x40000000。5 MHz采樣率下的頻率步進為500 Hz,對應到40 MHz時鐘域下為8×500 Hz,相應的的頻率控制字為:△M= 0x0000A7C5。正余弦查找表的方法可參考文獻[6]。
載波剝離單元采用編碼的方式產生。中頻信號量化為2比特:00,01,10和11,代表的幅值分別為:1,+3,-1,-3;本地載波同樣量化為2比特:00,01,10和11,代表的幅值分別為:+ 1,+2,-1,-2。混頻后的信號幅值分別為:+1,+2,+3,+6,-1,-2,-3,-6。其混頻譯碼結構參考文獻[3]。
混頻輸出符號的編碼方式如表1所示。

表1 混頻器符號編碼
混頻輸出幅值的編碼方式如表2所示,其中sxt在VHDL語言中表示符號擴展:
有杕之杜,其葉湑湑。 獨行踽踽。 豈無他人?不如我同父。 嗟行之人,胡不比焉?人無兄弟,胡不佽焉。 (佽,助。)

表1 混頻器幅值編碼
2.3平均采樣單元
該模塊的功能是將混頻后的5 000點數據累加平均為1 024點,作為后續的1 024點FFT的輸入。由圖1可知,每個碼片的采樣點數是4或5;所以,可以每隔4點或5點進行累加,將累加結果作為本碼片的采樣值。平均點數滿足下列關系式:

其中,Num4和Num5分別是4點和5點累加的個數。
將120個四點累加的地址存在ROM中,輸入數據以5 000點為一段并對輸入點數進行計數;計數值與ROM的輸出值進行比較,當相等時則從當前點數開始對連續的4點數據進行累加,否則對連續的5點數據進行累加;ROM的地址計數加1,進行后續的比較,如此反復,直到5 000點數據計數完畢,對應的累加結果即是1 024點數據。
Mat1ab產生的4點累加的數據地址如表3所示。
平均采樣模塊的設計采用狀態機進行控制,其狀態結構如圖6所示。共有6個狀態。ST0完成初始化操作,對輸入5 000點數據計數器和120點地址計數器清零,在模塊使能情況下進入下一個狀態ST1;在ST1狀態,判斷5 000點計數器與120點地址ROM輸出是否相等,相等則直接跳到ST3狀態,否則進入下一狀態ST2,這樣4點累加相對5點累加少了一個加1操作,即狀態ST2;在ST1,ST2,ST3,ST4和ST5狀態都具有加1操作,即對5000點計數器和120點地址計數器分別加1;在ST5狀態,判斷5 000點數據是否加滿,加滿則轉到ST0,否則轉到ST1。

表1 四點累加地址

圖6 平均累加模塊狀態機
2.4FFT/IFFT變換單元
FFT運算模塊的整體結構主要包括兩個部分:8位的雙端口RAM,用來接收平均下采樣模塊產生的數據;FFT運算模塊,完成對下采樣數據的FFT變換。FFT狀態機共有7個狀態,分別為:STjnjt狀態:清零各變量,在輸入使能后轉入STramwr狀態;STramwr狀態:將下采樣數據的同相和正交支路拼接為一路數據,在寫時鐘的控制下寫入雙端口RAM中,當寫信號完成后轉入STramrd狀態;STramrd狀態:采用400 MHz的系統時鐘,使能RAM讀信號后轉入STready狀態;STready狀態:啟動FFT IP核,在讀RAM的同時將數據寫入FFT IP核的輸入端口,轉入ST1oad狀態;ST1oad狀態:加載1 024長度的數據,加載完成后轉入STfft狀態;STfft狀態:實現對數據的FFT變換,完成后啟動IP數據輸出使能信號un1oad,轉入STun1oad;STun1oad狀態:等待IP核輸出1 024點數據,完成后轉入初始化狀態STjnjt,等待下一次平均采樣后的使能信號。
IFFT模塊采用同FFT模塊相似的狀態機設計結構,不同之處是不需要前端RAM采集數據。狀態機共有5個狀態。STjnjt狀態:完成信號的清零,等待使能信號有效后轉入下一狀態STready;STready狀態:啟動IFFT IP核后轉入下一狀態ST1oad;ST1oad狀態:加載1 024長度的數據,完成后轉入STjfft狀態;STjfft狀態:等待完成1 024點數據的IFFT變換后,轉入STun1oad狀態;STun1oad狀態:輸出1 024點IFFT變換結果。
不同信噪比下,基于平均采樣的FFT并行捕獲算法的檢測概率如圖7所示。

圖7 不同信噪比下的檢測概率
假定輸入載噪比為C/N0=60 dB·Hz,則對應的輸入信噪比為:S/N=C·Tc/N0=60-1og10(1.023e6)=20 dB,經過FFT的相關累加之后得到:(S/N)coh=S/N+10×1og10(N)=-10+10×1og10(5000)=57 dB。由圖7可知,此時的檢測概率幾乎為1,滿足指標要求。
設置收發端的碼偏移為512,如圖8所示為基于平均采樣的FFT并行捕獲算法的捕獲結果,由圖可知,捕獲程序很好地捕獲到了信號。

圖8 基于平均采樣技術的FFT并行捕獲結果
文中比較了幾種常見的捕獲算法,重點分析和討論了基于平均采樣的FFT并行捕獲算法的FPGA整體設計,詳細描述了混頻單元、平均采樣單元、FFT相關卷積單元的FPGA設計結構。最后對捕獲模塊的FPGA設計進行了功能驗證。在捕獲模塊設計上,為了確定平均采樣的起點,采用5路并行捕獲的方案,提高了碼相位的捕獲精度。在各模塊的拼接上,采用使能信號進行控制,即:前一個模塊的輸出有效信號作為后一個模塊的使能信號,各模塊內部采用狀態機進行控制。
參考文獻:
[1]Starzyk JA.Zhu Z.Averagjng corre1atjon for C/A code acqujsjtjon and trackjng jn frequency domajn[C]// Proceedjngs of the 44th IEEE 2001 Mjdwest Symposjum on Cjrcujts and Systems,2001:905-908.
[2]孫婉瑩.高動態GPS接收機C/A碼的接收及其FPGA實現研究[D].西安:西安電子科技大學,2007.
[3]趙麗,陳小惠,潘樹國. GPS頻域并行碼捕獲改進算法[J].電子測量與儀器學報,2011,25(11):985-990.
[4]李成軍,陸明泉,馮振明.基于采樣率變換與FFT的GPS系統C/A碼捕獲改進算法[J].系統工程與電子技術,2008,30(1):164-166.
[5]劉圣忠,宋茂忠,胡國光.一種基于FFT的GPS信號快捕算法[J].海軍航空工程學院學報,2008,23(2):153-156.
[6]Ledvjna B M,Powe11 S P,Kjntner P M,et a1.A 12-Channe1 Rea1-Tjme GPS L1 Software Recejver1[C]//Proceedjngs of the 2003 Natjona1 Technjca1 Meetjng of The Instjtute of Navjgatjon,Anahejm,CA,January 2003:767-782.
Parallel acqulsltlon algorlthm for GPS slgnals based on FPGA
LU Jje-yjng1,MA Lu2
(1.South China University of Technology,Guangzhou 510641,China;2.Center for Space Science and Applied Research,Beijing 100190,China)
Abstract:In order to rea1jze rapjd acqujsjtjon of GPS sjgna1s,a para11e1 acqujsjtjon a1gorjthm based on average samp1jng method js proposed and ana1yzed. Moreover,a 1ongest run-1ength resamp1jng method js emp1oyed to overcome energy 1oss due to averagjng across the bjt edge. Further,the system structure and jts jmp1ementatjon are gjven based on FPGA. Sjmu1atjon resu1ts va1jdate the feasjbj1jty and effjcjency of our desjgn.
Key words:average samp1jng;FFT;para11e1 acqujsjtjon;FPGA;FSM
中圖分類號:TN911.72
文獻標識碼:A
文章編號:1674-6236(2016)07-0079-04
收稿日期:2015-05-28稿件編號:201505246
作者簡介:盧潔瑩(1990—),女,湖南常德人,碩士研究生。研究方向:系統建模分析與評估。