基于FPGA的GPS數據采集器的設計與實(shí)現
全球定位系統(Clobal Position System,GPS)能夠提供實(shí)時(shí)、全天候、全球性和高精度的服務(wù),其廣泛應用于各行各業(yè)中。GPS接收機通過(guò)天線(xiàn)單元接收衛星信號,將信號進(jìn)行帶通濾波、下變頻混頻、AGC放大、A/D轉換等一系列處理,得到數字中頻信號,進(jìn)而對中頻信號進(jìn)行捕獲、跟蹤,解調出用戶(hù)的緯度、經(jīng)度、高度、速度、時(shí)間等導航信息,將這些信息按NMEA-0183協(xié)議封裝,通過(guò)串口輸出數據。用戶(hù)設備中的GPS接收器在收到GPS信息后,需要對相關(guān)信息予以解碼處理,從而得到用戶(hù)的位置、時(shí)間等信息,進(jìn)而實(shí)現用GPS導航和定位的目的。近幾年來(lái),現場(chǎng)可編程門(mén)陣列(FPGA)憑借其開(kāi)發(fā)過(guò)程投資少、設計周期短、靈活方便以及可反復編程等特點(diǎn),在現代電子設計中得到了廣泛應用。本設計選擇現場(chǎng)可編程門(mén)陣列(FPGA)來(lái)實(shí)現GPS信號的解析處理。
本文引用地址:http://dyxdggzs.com/article/201610/308358.htm1 NMEA-0183協(xié)議的數據格式
NMEA-0183是美國國家海洋電子協(xié)會(huì )(NMEA,The National Marine Electronics Association)為海用電子設備制定的標準格式,它現在已被廣泛地應用于多個(gè)領(lǐng)域的設備之間的數據傳輸。NMEA標準格式輸出采用ASCII碼,每個(gè)ASCII數據碼長(cháng)8位,串行通信的波特率為9600位/秒,數據位8位,開(kāi)始位1位,停止位1位,無(wú)奇偶校驗位。
NMEA-0183協(xié)議由語(yǔ)句組成,每條語(yǔ)句以字符“$”作為語(yǔ)句起始標志,數據之間以逗號相隔,字符“*”作為校驗和前綴,最后以校驗和數值和回車(chē)/換行字符結束。最常用的有6種語(yǔ)句格式:$GPGGA,$GPGLL,$GPGSA,$GPGSV,$GPRMC,$GPVTG。下面以推薦定位信息GPRMC語(yǔ)句為例介紹數據格式。語(yǔ)句的格式如下:
$GPRMC,1>,2>,3>,4>,5>,6>,7>,8>,9>,10>,11>,12>*13>
1>UTC時(shí)間,格式hhmmss.sss(時(shí)分秒);
2>定位狀態(tài),A=有效定位,V=無(wú)效定位;
3>緯度,ddmm.mmmm(度分)格式(前導位不足則補0);
4>緯度半球N(北半球)或S(南半球);
5>經(jīng)度,dddmm.mmmm(度分)格式(前導位不足則補0);
6>經(jīng)度半球E(東經(jīng))或W(西經(jīng));
7>地面速率(000.0~999.9節,前導位不足則補0);
8>地面航向(000.0~359.9度,以真北為參考基準,前導位不足則補0);
9>UTC日期,ddmmyy(日月年)格式;
10>磁偏角(000.0~180.0度,前導位不足則補0);
11>磁偏角方向,E(東)或W(西);
12>模式指示(僅NMEA-0183 3.00版本輸出,A=自主定位,D=差分,E=估算,N=數據無(wú)效);
13>校驗和;
2 NMEA-0183協(xié)議解析器設計
2.1 系統的總體設計
以深圳星際通公司生產(chǎn)的GP5MX1513F1導航芯片為例進(jìn)行說(shuō)明。該芯片為一個(gè)64并行通道單頻接收機,只接受L1波段的衛星信號,定位精度2 m(2D RMS)。該芯片依次輸出6種NMEA信息,分別是:$GPGGA,$GPGLL,$GPGSA,$GPGSV,$GPRMC,$GPVTG,串口默認設置:波特率9 600bps,起始位1位,數據位8位,無(wú)奇偶校驗位,停止位1位。NMEA-0183協(xié)議解析系統的總體設計框圖如圖1所示,GP5MX1513F1導航芯片通過(guò)天線(xiàn)單元接收衛星信號,將信號濾波、下變頻、放大和模數轉換等一系列處理,得到數字中頻信號,進(jìn)而對中頻信號進(jìn)行捕獲、跟蹤、位同步及幀同步,解調出導航數據,最后計算出用戶(hù)的緯度、經(jīng)度、高度、速度、時(shí)間等信息,以NMEA-0183協(xié)議格式打包成數據幀,再通過(guò)標準的串口輸出數據。NMEA-0183協(xié)議解析模塊生成的硬件電路內嵌在FPGA中,一方面通過(guò)串口模塊接收GP5MX1513F1芯片發(fā)出的串行數據,將接收的信號給解析模塊進(jìn)行處理,另一方面解析模塊根據NMEA-0183協(xié)議的數據格式提取出所需要的信息。

2.2 串口模塊
串口模塊主要負責接收由GP5MX1513芯片輸出的導航定位信息,串口模塊通過(guò)波特率發(fā)生器將系統時(shí)鐘進(jìn)行分頻,產(chǎn)生16倍數據波特率的時(shí)鐘。系統復位后,接收端以16倍波特率的速率讀取線(xiàn)路狀態(tài),檢測信號GPS_TX出現下降沿,在GPS_TX信號下降沿后第8個(gè)采樣點(diǎn)確認是否為低電平,如果檢測得到的是高電平,則認為起始位無(wú)效,返回到空閑狀態(tài),重新等待起始信號的到來(lái)。起始位找到后,開(kāi)始接收數據,當數據計數器data_bit_cnt計到7時(shí),8位數據都已經(jīng)輸入完成。最后,檢測停止位,如果正確檢測到高電平,則
說(shuō)明本幀的各位數據正確接收,將數據存入到8位數據寄存器中,否則出錯。

串口模塊接收端的狀態(tài)轉移圖如圖2所示,接收機由4個(gè)工作狀態(tài)組成,分別是空閑狀態(tài)、起始位、數據位和停止位。當系統復位后,電路處于空閑狀態(tài),等待信號的觸發(fā),連續8個(gè)時(shí)鐘檢測出數據發(fā)生負跳變,sof信號為高,進(jìn)入起始狀態(tài),當sample為1時(shí),進(jìn)入數據位,接著(zhù)的數據位將每隔16個(gè)采樣周期被采樣一次。即取每一位的第8次的波特率時(shí)鐘采樣值來(lái)確保采樣正確。連續采樣8次后,采樣計數器data_bit_cnt==7,進(jìn)入停止位,當sample為1時(shí),進(jìn)入空閑狀態(tài),開(kāi)始接收下一個(gè)數據。
在狀態(tài)機模型的基礎上,使用verilog HDL語(yǔ)言來(lái)描述其功能,其主要代碼如下:

2.3 解析模塊
串口模塊輸出的8位數據送到解析模塊,解析模塊采用6MUX1選擇器來(lái)選擇提取哪種語(yǔ)句,通過(guò)外部輸入信號對寄存器config_Reg進(jìn)行配置來(lái)實(shí)現,當config_Reg=000時(shí),提取GGA語(yǔ)句,當config_Reg=001時(shí),提取GLL語(yǔ)句,當config_Reg=010時(shí),提取GSA語(yǔ)句,當config_Reg=001時(shí),提取GSV語(yǔ)句,當config_Reg=011時(shí),提取RMC語(yǔ)句,當config_Reg =100時(shí),提取VTG語(yǔ)句。下面以RMC語(yǔ)句為例,來(lái)說(shuō)明解析過(guò)程,解析模塊將串口模塊接收端接收的數據進(jìn)行循環(huán)檢測,判斷報文頭、定位狀態(tài)、校驗位、結束位信息,提取時(shí)間信息。首先,對config_Reg進(jìn)行配置,設置config_Reg=011;其次,檢測報文頭$GPRMC,如果是,則進(jìn)行下一步,否則,繼續檢測;最后,用逗號計數器的值來(lái)決定提取$GPBMC語(yǔ)句的哪段信息,當逗號計數器為1時(shí),提取時(shí)分秒信息,存儲在data_hh_mm_ss寄存器中;當逗號計數器為2時(shí),提取定位狀態(tài)信息,當VALID信號為高,則有效定位;當VALID信號為低,則無(wú)效定位;當逗號計數器為3時(shí),提取緯度信息,存儲在lat_data寄存器中;當逗號計數器為5時(shí),提取經(jīng)度信息,存儲在lon_data寄存器中;當逗號計數器為9時(shí),提取日月年信息,存儲在data_dd_mm_yy寄存器中。程序設計的流程圖如圖3所示。

其主要代碼如下:


3 仿真測試及硬件實(shí)現
根據編寫(xiě)的測試模塊在ModelSim 6.2軟件下進(jìn)行了功能仿真,其仿真結果如圖4所示,GPS_TX為輸入的串行數據,rcv_data為接收的8位數據,hh_mm_ss為提取出時(shí)分秒信息:15:49:41,dd_mm_yy為提取出日月年信息:13.06.09,lat_data為提取的緯度信息:3409.3297,lon_data為提取的經(jīng)度信息:10853.6986,從仿真波形上看,仿真的結果與測試激、勵中的數據一致。

完成了仿真后,在Quartus II 9.0下進(jìn)行了邏輯綜合,將程序下載到Altera公司生產(chǎn)的CycloneII系列EP2C5T144C8型號的FPGA中,用Quartus II 9.0軟件自帶的嵌入式邏輯分析儀SignalTapII,對FPGA內部的信號進(jìn)行觀(guān)測,FPGA內部實(shí)際工作波形如圖5所示,從硬件調試結果觀(guān)測,實(shí)際測出的結果:年月日2013.08.19,時(shí)分秒00:07:42,緯度為3412.0714,經(jīng)度為10856.6625。由于所測得時(shí)間信息為世界協(xié)調時(shí)間,北京時(shí)間與世界協(xié)調時(shí)相差8個(gè)時(shí)差,北京時(shí)間應修正為:08:40:09,所測得結果與本地的時(shí)間一致。

結果分析:從圖4和圖5波形上可以看到我們測試的結果,實(shí)際測試中,我們讓整個(gè)解析過(guò)程連續工作12 h,沒(méi)有發(fā)現解析錯誤、丟包等不正?,F象。因此,大量測試結果表明,該模塊能夠正確的接收和處理導航信息。
4 結論
根據NMEA—0183協(xié)議格式,提出使用FPGA實(shí)現NMEA-0183信息解析的一種方法,仿真及實(shí)際測試結果表明,該電路能夠正確地提取出所需要的信息,如時(shí)間、位置等信息,最終實(shí)現了GPS數據采集及處理等工作,為搜查救援、事故定位等工作提供了技術(shù)依據。
評論