文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.170792
中文引用格式: 陶夢,李金城. GPS中頻信號采集及分析系統(tǒng)設計[J].電子技術應用,2017,43(9):34-38.
英文引用格式: Tao Meng,Li Jincheng. Design of a system for sampling and analysis of GPS IF signal[J].Application of Electronic Technique,2017,43(9):34-38.
0 引言
隨著GPS全球衛(wèi)星定位系統(tǒng)在提供定位信息和高精度時間信息上的廣泛應用,國內外越來越多的企業(yè)和研究機構深入研究導航、授時芯片,而要實現(xiàn)這些功能,都離不開對GPS衛(wèi)星信號的分析。因此,自主研發(fā)小型化、便攜式GPS中頻信號數據采集設備對導航算法研究及芯片設計非常重要[1]。
USB接口數據傳輸速率高、傳輸模式靈活,支持低速(1.5 Mb/s)、全速(12 Mb/s)和高速(480 Mb/s)3種傳輸速度以及中斷傳輸、控制傳輸、同步傳輸和塊傳輸4種傳輸模式,目前在PC領域中USB接口已廣泛應用[2]。高集成度的GPS接收機射頻前端芯片NJ1006可采集2 bit格式的GPS衛(wèi)星信號,通過位拼接可將實時采樣率下降至4 MHz左右。USB2.0的傳輸速度完全可以滿足,而從成本和普及率方面綜合考慮,使用USB2.0是一個較好的選擇。
基于上述分析,本論文設計了一種GPS中頻信號采集及分析系統(tǒng)。系統(tǒng)使用FPGA對NJ1006的數字中頻信號進行字節(jié)拼接及緩存,通過USB接口芯片(FX2 68013)上傳到PC。在PC端設計了專用的VC++程序,用于PC端的數據接收、格式轉換及分析。
1 系統(tǒng)軟硬件總體架構
本論文的GPS中頻信號采集及分析系統(tǒng)的軟硬件總體架構如圖1所示,由硬件和軟件兩部分組成。其中硬件部分包括GPS射頻接收芯片NJ1006、FPGA(cyclone EP1C12Q240C8N,具有20 060個邏輯單元和52個M4K存儲器)和 USB2.0接口芯片(FX2-68013);軟件部分包括數據接收程序、格式轉換程序、數據分析程序和主控程序組成。
NJ1006是一個高集成度的GPS接收機射頻前端IC,其集成了LNA和本機振蕩器的諧振回路,減少了外部元器件數量和PCB的面積。NJ1006下變頻1 575.42 MHz GPS L1信號,通過2 bit A/D轉換器采樣后,輸出采樣率為16.368 MHz,中頻頻率為4.092 MHz的2 bits數字信號(符號位SGN和大小位MAG)到FPGA。
FX2-68013是由Cypress半導體公司所推出的USB2.0芯片,芯片將USB外圍接口所需要的各種功能包裝成一精簡的集成電路,其內部的8051微處理器方便對芯片的控制與配置[3]。通過對芯片內部8051編程,使USB2.0芯片配置在Slave FIFO模式下工作,異步方式傳輸數據,以支持圖1中的高速數據通道;由于該USB2.0芯片具有I2C接口,支持對外部I2C存儲器的讀寫,為了不影響高速數據傳輸,本論文用FPGA模擬了一個I2C存儲器,上位機通過對I2C存儲器的讀寫實現(xiàn)了對FPGA工作狀態(tài)的控制[4]。
FPGA接收NJ1006的數字中頻信號,進行位拼接和緩存,向USB2.0芯片發(fā)送數據,并通過USB2.0接口將采集的數據上傳到PC。在PC端接收數據,并進行格式轉換和數據分析。分析的主要任務是對GPS中頻信號進行C/A碼相位和多普勒頻率的二維相關值計算,并由Matlab進行三維立體顯示。
2 FPGA邏輯設計
2.1 數據拼接
GPS衛(wèi)星信號是在16.368 MHz時鐘下利用射頻前端NJ1006接收得到的,由于該信號的位寬為2 bits,而FPGA與USB之間的數據總線位寬為8 bits,因此需通過“串并轉換”,將串行數據轉換為并行數據。此時,寫入數據速度降低到原來的四分之一(4.092 MHz),將大大降低數據上傳所需的時序要求。
2.2 數據緩存
USB2.0協(xié)議擁有較快的數據傳輸速率,但本設計使用Windows系統(tǒng)PC作為上位機,屬于多任務系統(tǒng),運行時會分出多個時間片給各應用程序,即使只運行本設計中的軟件程序,也無法保證穩(wěn)定的傳輸速度,將影響數據的實時傳輸性。為解決該問題,可通過增加存儲器以緩存數據。但由于外部增加RAM的成本較大,且前文中提到的數據流采集速率約為穩(wěn)定不變的4 MHz,而Windows平均的傳輸數據速率高于此采集速率,為了保證數據流的連續(xù)性,可利用FPGA 內部52個M4K存儲器資源生成26 KB RAM作為緩沖器,把從位拼接得到的數據暫存在此RAM中,再通過USB2.0傳輸到上位機PC中進行存儲和分析。
本系統(tǒng)中把這26 KB緩存空間分成13個2 KB RAM,將從位拼接得到的數據依次寫進RAM中,同時將寫滿2 KB RAM的緩存數據依次讀出傳送至FX2,之后FX2一次性將2 KB數據通過USB2.0傳輸至上位機,由此對RAM0至RAM12這13個存儲器進行循環(huán)操作,完成數據的讀寫操作。該方法能夠最大限度地利用資源,保證了數據流的實時不間斷。
緩存數據寫入RAM的過程如圖2(a)所示。系統(tǒng)在接收到RAM的寫指令后,首先向RAM0寫入采集到的數據。當RAM0寫滿后,若RAM1處于忙狀態(tài)(即Rd_en[1]=1,系統(tǒng)從RAM1中讀出數據),則終止寫入,系統(tǒng)回歸初始狀態(tài),等待寫指令,否則無間斷地向RAM1中寫入數據。由此依次對RAM0至RAM12這13個存儲器進行循環(huán)操作,完成數據的寫入。該RAM寫操作機制能夠保證數據流的實時、不間斷,符合數據采集要求。而緩存數據的讀出過程如圖2(b)所示。系統(tǒng)在接收到RAM的讀指令后,首先從RAM0中讀出數據,將其傳送至FX2的Slave FIFO。完成RAM0的讀操作后,若RAM1處于空閑狀態(tài)(即Wr_en [1]=0,系統(tǒng)未向RAM1寫入數據),則無間斷地讀取RAM1中的緩存數據,否則等待RAM1完成寫操作之后再繼續(xù)進行讀操作。對RAM0至RAM12這13個存儲器進行循環(huán)讀操作,直到采集結束。
2.3 數據傳送
數據傳送即通過FX2 的Slave FIFO模式,將從RAM中讀出的數據上傳至上位機PC并保存,其高速數據傳送通道接口圖如圖3所示[5]。在開始傳送數據前,需通過Slave FIFO的切換地址fifoaddr配置Slave FIFO為2′b10,使其能夠向FX2的Slave FIFO寫入數據。接收到數據傳送指令后,主程序實時監(jiān)控Slave FIFO的空滿標志empty、full。當發(fā)現(xiàn)Slave FIFO未滿時,通過控制Slave FIFO的寫時鐘slwr,將從RAM讀出的數據傳送至Slave FIFO的雙向數據端口fd,構成了高速數據通道,完成數據上傳。
2.4 FPGA狀態(tài)轉換
FPGA主狀態(tài)機的狀態(tài)轉換圖如圖4所示,整個狀態(tài)機工作在72 MHz時鐘下,INIT狀態(tài)對FX2各接口數據進行初始化,之后進入WAIT_CMD狀態(tài),等待上位機發(fā)指令。當上位機發(fā)出采集指令后,由USB向FX2內部8051芯片下傳48 B數據發(fā)送指令,再由8051將此48 B數據寫入I2C的存儲器,并分析第一字節(jié)數據[6]。當第一字節(jié)為8′h0a時,狀態(tài)機進入CMD_PRO狀態(tài),進行指令處理,向RAM發(fā)出寫指令開始數據緩存,然后進入READ_RAM狀態(tài),在識別FX2中Slave FIFO的空滿標志等信號后,讀出RAM緩存數據。關于RAM讀寫調用在上文中有詳細介紹,這里不再贅述。當采集結束后,狀態(tài)機重新回到WAIT_CMD狀態(tài),等待下一次采集。
本設計中的采集結束機制分為兩種情況,一種是當要向單個RAM寫入數據時系統(tǒng)正在讀出該RAM中的數據,無法繼續(xù)進行寫操作,導致實時傳輸數據中斷。此時上位機長時間接收不到數據,將自動終止接收數據,這是由數據實時傳輸數據速率大于上位機接收數據速率導致的,此時軟件將通知用戶此次數據不可靠;另一種是上位機接收到的數據已經滿足采集數據的大小要求,此時上位機主動停止接收數據,F(xiàn)X2 slave FIFO一直處于滿狀態(tài),F(xiàn)PGA超過規(guī)定時間的等待還不能繼續(xù)上傳數據,狀態(tài)機回到WAIT_CMD狀態(tài),此次采集結束,等待下一次采集。
3 軟件操作
上位機程序使用C語言的MFC編寫,操作界面如圖5所示。USB Connection鍵可對FX2中的8051芯片進行配置,實現(xiàn)USB和FPGA數據通道連接。點擊圖中的Sample鍵,發(fā)出采集指令后,上位機開始調用FX2專用的批量端點上傳函數,反復循環(huán)128次來接收256 KB數據,等待接收數據,再通過USB傳輸指令,使FPGA與上位機協(xié)同工作,采集數據[7]。
數據采集結束后,可通過軟件操作界面的TXT Conversion窗口將數據格式轉換為ASCII碼或對應的0-1二進制序列,方便用戶使用。
通過圖5中的SV-Searching Paramenters窗口可設置參數,進行數據分析。源文件為當前數據采集轉換后的0-1二進制序列文件,通過設置衛(wèi)星號SV num(1至32號衛(wèi)星)、毫秒積分ms num(1 ms至10 ms)、量化位LO bits(1 bits至10 bits)和多普勒頻率范圍LO Frequency、CA碼相位C/A Phase以及相對應的頻率步長LO Step、C/A步長C/A Step等參數,點擊Analysis鍵,對其進行CA碼和多普勒頻率的二維搜索。通過時域串行捕獲算法計算得到三維數據,并利用Matlab的surf函數仿真出三維立體圖,從而分析信號的可靠性[8]。
時域串行捕獲算法如圖6所示,即本地載波生成器在預先設定的多普勒頻率范圍內選擇一個載波頻率,產生兩路相位差 90°的本地載波cos和sin。將輸入信號與這兩路本地載波混頻,得到同相分量I和正交分量Q。然后將I和Q兩路分量分別與本地產生的C/A碼序列進行相關運算,并通過絕對值求和Absolute或平方求和square運算得到相關值[9-10]。
4 GPS中頻信號采集及分析結果
本文通過圖形操作界面對衛(wèi)星信號進行采集、轉換和分析,實現(xiàn)了自主研發(fā)小型化、便攜式GPS中頻信號數據采集設備。GPS衛(wèi)星信號數據于2017年1月13日下午1點20分在北京交通大學第九教學樓采集,此時的18號星1 ms平方和運算對應相關值如圖7所示。從圖中可明顯觀察到,該衛(wèi)星的頻率在4.094 5 MHz附近,碼相位在16 000點附近出現(xiàn)明顯的相關峰。圖8則是18號星進行絕對值求和對應的相關圖,對比圖7和圖8可以看出,在信號明顯的情況下兩種運算都能找到相關峰,但絕對值求和得到的相關值基數更小,所需的硬件資源更少,相比之下,平方求和其相關峰則更加明顯。
在全搜索的基礎上,找到相關峰后還可對其進行更精確的搜索。在圖7 18號星全搜索的基礎上,將頻率搜索范圍縮小到4.092~4.097 MHz,并縮小頻率步長為250、CA碼步長為2,對其相關峰進行放大分析,其結果如圖9所示,該方法便于分析算法的可靠性以及信號正確性。
軟件還支持多毫秒疊加,設置多普勒搜索步長、頻率和CA碼采樣點數等。由于當前某顆衛(wèi)星的信號比較弱,1 ms相關值累加有可能不能準確地找出相關峰,此時可通過多毫秒累積的方法得到相關峰。圖10為27號星1 ms的相關值,從圖中不能明顯地觀察到相關峰,但通過圖11中的2 ms運算可以看到,在頻率為4.092 MHz、碼相位為8 000處有明顯的相關峰。
5 結論
本文針對GPS中頻信號的采樣、轉換、分析提出了相應的解決方案。實驗證明,基于USB2.0的數據傳輸方案達到了對GPS中頻信號高速準確的采集目標?;贕PS的捕獲算法,通過C語言實現(xiàn)時域串行捕獲算法檢測,驗證了數據的可靠性,為之后的GPS算法研究奠定了堅實的基礎。
參考文獻
[1] 曾慶喜,王慶,楊英杰,等.USB接口GPS中頻信號采樣器研究與實現(xiàn)[J].電子測量與儀器學報,2012(10):883-888.
[2] 唐磊.基于FPGA的USB、Flash控制器設計[D].北京:北京交通大學,2010.
[3] 吳瑤.USB2.0總線控制芯片F(xiàn)X2結構原理及應用研究[D].北京:北京交通大學,2010.
[4] 扈嘯,張玘,張連超.USB2.0控制器CY7C68013特點與應用[J].單片機與嵌入式系統(tǒng)應用,2002(10).
[5] 胡濱,王慶,嚴偉.基于USB和FPGA的GPS中頻信號采集平臺設計[J].艦船電子工程,2009,9:63-66.
[6] 儲甜,顏錦奎.基于單片機的USB文件讀寫[J].電子測量技術.2015(8).
[7] 方可燕.Visual C++ 6.0實戰(zhàn)與精通[M].清華大學出版社,2000.
[8] 王惠南.GPS導航原理與應用[M].北京:科學出版社,2003.
[9] 葉航.GPS接收機測試信號源的設計與實現(xiàn)[D].南京:南京航空航天大學,2012.
[10] 劉圣忠.基于GPS中頻數據的軟件接收機研究與實現(xiàn)[D].南京:南京航空航天大學,2007.
作者信息:
陶 夢,李金城
(北京交通大學 電子信息工程學院,北京100044)