- /******************************FILE HEAD**********************************
- * file_name : parseGGA_tb.v
- * function : 解析xxGGA报文,获取UTC时间、经纬度、海拔
- * author : 今朝无言
- * version & date : 2021/10/14 & v1.0
- *************************************************************************/
- `default_nettype none
- `timescale 1ns/1ps
- module parseGGA_tb;
- reg [0:75*8-1]data = {"$GNGGA,092725.00,4717.11399,N,00833.91590,E,1,08,1.01,499.6,M,48.0,M,,*5B",8'd13,8'd10}; //\r\n, \r=13,\n=10
- reg rx_done_toUart; //整个模块由rx_done_toUart驱动
- reg [7:0] rddat_toUart;
- wire rx_done; //接收指令结束,上升沿对齐'\n'字符出现时刻,下降沿对齐$xxGGA后面的','的出现时刻
- wire [4:0] hh; //UTC时间,整数,时 0~24
- wire [5:0] mm; //UTC时间,整数,分 0~59
- wire [5:0] ss; //UTC时间,整数,秒 0~59
- wire [6:0] ss2; //UTC时间,小数,秒 2位小数,0~99
- wire [6:0] lat; //纬度 整数部分,度 0~90
- wire [5:0] lat2; //纬度 整数部分,分 0~59
- wire [16:0] lat3; //纬度 小数部分,分 5位小数,0~99999
- wire NS; //区分南北纬,北纬标为1,南纬标为0
- wire [7:0] lon; //经度 整数部分,度 0~180
- wire [5:0] lon2; //经度 整数部分,分 0~59
- wire [16:0] lon3; //经度 小数部分,分 5位小数,0~99999
- wire EW; //区分东西经,东经标为1,西经标为0
- wire [13:0] alt; //海拔 整数部分,m
- wire [3:0] alt2; //海拔 小数部分,一位小数 0~9
- reg [9:0] i;
- initial begin
- rx_done_toUart <= 0;
- #50;
-
- for(i=0;i<=74*8;i=i+8)begin
- rddat_toUart <= {data[i],data[i+1],data[i+2],data[i+3],
- data[i+4],data[i+5],data[i+6],data[i+7]};
- #5;
- rx_done_toUart <= 1;
- #50;
- rx_done_toUart <=0;
- #50;
- end
-
- #200;
- $stop;
- end
- //解析xxGGA报文
- parseGGA parseGGA_inst(
- .rx_done_toUart (rx_done_toUart),
- .rddat_toUart (rddat_toUart),
- .rx_done (rx_done),
- .hh (hh),
- .mm (mm),
- .ss (ss),
- .ss2 (ss2),
- .lat (lat),
- .lat2 (lat2),
- .lat3 (lat3),
- .NS (NS),
- .lon (lon),
- .lon2 (lon2),
- .lon3 (lon3),
- .EW (EW),
- .alt (alt),
- .alt2 (alt2)
- );
- endmodule
- //END OF parseGGA_tb.v FILE***************************************************