GPS报文格式

$GPGGA,021442.000,2839.139693,N,11549.543854,E,1,6,1.76,-21.394,M,-5.454,M,,*52

数据详解:$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx

<0>$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);

<1>UTC 时间,格式为hhmmss.sss;

021442.000= 10:14:42

<2>纬度,格式为ddmm.mmmm(第一位是零也将传送);

<3>纬度半球,N 或S(北纬或南纬)

<4> 经度,格式为dddmm.mmmm(第一位零也将传送);

<5>经度半球,E 或W(东经或西经)

<6>定位质量指示,0=定位无效,1=定位有效;

<7>使用卫星数量,从00到12(第一个零也将传送)

<8>水平精确度,0.5到99.9

<9>天线离海平面的高度,-9999.9到9999.9米

M指单位米

M指单位米;

<10>大地水准面高度,-9999.9到9999.9米

M指单位米

M指单位米;

<11>差分GPS数据期限(RTCMSC-104),最后设立RTCM传送的秒数量

<12>差分参考基站标号,从0000到1023(首位0也将传送)。

*语句结束标志符;

xx从$开始到*之间的所有ASCII码的异或校验和;

回车

换行

 

解析内容:第9,10 个字段,海平面高度和大地水准面高度,单位是米

 

地理定位信息:

$GPGLL,2839.139693,N,11549.543854,E,021442.000,A,A*5C

例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D

字段0:$GPGLL,语句ID,表明该语句为GeographicPosition(GLL)地理定位信息

字段1:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

字段2:纬度N(北纬)或S(南纬)

字段3:经度dddmm.mmmm,度分格式(前导位数不足则补0)

字段4:经度E(东经)或W(西经)

字段5:UTC时间,hhmmss.sss格式

字段6:状态,A=定位,V=未定位

字段7:校验值

 

当前卫星信息:

$GPGSA,A,3,03,06,01,19,30,32,,,,,,,3.70,1.76,3.26*0F

例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A

字段0:$GPGSA,语句ID,表明该语句为GPSDOP andActive Satellites(GSA)当前卫星信息

字段1:定位模式,A=自动手动2D/3D,M=手动2D/3D

字段2:定位类型,1=未定位,2=2D定位,3=3D定位

字段3:PRN码(伪随机噪声码),第1信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段4:PRN码(伪随机噪声码),第2信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段5:PRN码(伪随机噪声码),第3信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段6:PRN码(伪随机噪声码),第4信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段7:PRN码(伪随机噪声码),第5信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段8:PRN码(伪随机噪声码),第6信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段9:PRN码(伪随机噪声码),第7信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段10:PRN码(伪随机噪声码),第8信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段11:PRN码(伪随机噪声码),第9信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段12:PRN码(伪随机噪声码),第10信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段13:PRN码(伪随机噪声码),第11信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段14:PRN码(伪随机噪声码),第12信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段15:PDOP综合位置精度因子(0.5 - 99.9)

字段16:HDOP水平精度因子(0.5 - 99.9)

字段17:VDOP垂直精度因子(0.5 - 99.9)

字段18:校验值

 

可见卫星信息:

$GPGSV,4,1,13,28,86,324,,03,46,082,22,17,46,326,19,06,31,244,37*7D

例:$GPGSV,2,1,08,06,33,240,45,10,36,074,47,16,21,078,44,17,36,313,42*78

 标准格式: $GPGSV,(1),(2),(3),(4),(5),(6),(7),…(4),(5),(6),(7)*hh(CR)(LF)

(1)总的GSV语句电文数;2;

(2)当前GSV语句号:1;

(3)可视卫星总数:08;

(4)PRN码(伪随机噪声码) 也可以认为是卫星编号

(5)仰角(00~90度):33度;

(6)方位角(000~359度):240度;

(7)信噪比(00~99dB):45dB(后面依次为第10,16,17号卫星的信息);*总和校验域; hh 总和校验数:78;(CR)(LF)回车,换行。

注:每条语句最多包括四颗卫星的信息,每颗卫星的信息有四个数据项,即:

(4)-卫星号,(5)-仰角,(6)-方位角,(7)-信噪比。

 例: $GPGSV,3,1,10,24,82,023,40,05,62,285,32,01,62,123,00,17,59,229,28*70

每条语句包含四部分内容,例如:第一部分是“24,82,023,40”

,第二部分是“05,62,285,32”

等等。

每部分的第一个词为PRC,第二个词为卫星高程,跟着为方位角和信号强度。

这个语句里最重要的指标应该算是“信号躁声比(signal-to-noiseratio)”(以下简称为SNR)。

这个数值标示卫星信号的接收率。我们知道,卫星是以相同的强度发射信号,但是传播过程中难免会遇到诸如树和墙之类的 障碍物,这样就影响了信号的识别。

典型的SNR值在0到50之间,其中50表示非常好的信号。(SNR可以达到99)。

 

可见卫星信息:

$GPGSV,4,2,13,01,29,041,28,19,27,072,27,30,23,206,33,32,19,050,18*76

 

可见卫星信息:

$GPGSV,4,3,13,09,14,041,,04,04,049,,07,04,180,17,08,01,095,*71

 

可见卫星信息:

$GPGSV,4,4,13,02,00,237,*4F

 

推荐最小定位信息:

$GPRMC,021442.000,A,2839.139693,N,11549.543854,E,0.000,159.9,101015,,,A*6B

数据详解:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh

<1>UTC 时间,hhmmss(时分秒)格式

北京时间领先UTC 8个小时,故021442.000即10点14分42秒

<2> 定位状态,A=有效定位,V=无效定位

<3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)

2839.139693=28度39分 8.38158秒

<4> 纬度半球N(北半球)或S(南半球)

<5>经度dddmm.mmmm(度分)格式(前面的0也将被传输)

<6> 经度半球E(东经)或W(西经)

<7>地面速率(000.0~999.9节,前面的0也将被传输)

<8>地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)

<9>UTC 日期,ddmmyy(日月年)格式

101015=10日10月15年

<10>磁偏角(000.0~180.0度,前面的0也将被传输)

<11> 磁偏角方向,E(东)或W(西)

<12>模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

 

地面速度信息:

$GPVTG,159.9,T,,M,0.000,N,0.000,K,A*09

$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh

<1> 以正北为参考基准的地面航向(000~359度,前面的0也将被传输)

<2> 以磁北为参考基准的地面航向(000~359度,前面的0也将被传输)

<3> 地面速率(000.0~999.9节,前面的0也将被传输)

<4> 地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)

<5> 模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效

 

UTC时间和日期:

$GPZDA,021442.000,10,10,2015,,*51

 

FPGA(现场可编程门阵列)是一种可编程逻辑器件,可以用于实现各种硬件功能。在GPS报文解析中,FPGA可以用来解析NMEA-0183协议格式的报文,从中提取出经纬度和时间等信息。 下面是一个使用FPGA进行GPS报文解析的示例代码: ```verilog module gps_parser ( input wire clk, input wire reset, input wire rx_data, output wire [31:0] latitude, output wire [31:0] longitude, output wire [31:0] time ); // 定义状态机的状态 typedef enum logic [2:0] { IDLE, HEADER, DATA } state_t; // 定义报文头 parameter [6:0] GGA_HEADER = 7'bxxGGA; // 定义报文解析相关的变量 reg [6:0] header; reg [31:0] lat; reg [31:0] lon; reg [31:0] t; reg [2:0] state; always @(posedge clk or posedge reset) begin if (reset) begin state <= IDLE; header <= 0; lat <= 0; lon <= 0; t <= 0; end else begin case (state) IDLE: if (rx_data == GGA_HEADER) begin state <= HEADER; header <= rx_data; end HEADER: begin state <= DATA; lat <= rx_data; end DATA: begin state <= IDLE; lon <= rx_data; t <= rx_data; end endcase end end assign latitude = lat; assign longitude = lon; assign time = t; endmodule ``` 上述代码是一个简化的Verilog代码示例,用于解析GPS报文。它使用了一个状态机来处理报文的解析过程。当接收到报文头时,状态机进入HEADER状态,接着进入DATA状态,最后回到IDLE状态。在DATA状态下,经纬度和时间信息被提取出来,并通过输出端口传递出去。 请注意,上述代码仅为示例,实际的GPS报文解析可能需要更复杂的逻辑和处理。具体的实现方式可能因FPGA型号和GPS报文格式的不同而有所差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值