## [原创] 用GPS模块建立高精度ntp服务器
本文原创:**中国科学技术大学 张焕杰**
修改时间:2019.02.26
# 零、高精度时间的定义
简单的说,衡量时间主要有2个参数,分别是offset和jitter。offset可以理解为与标准时间的偏差,jitter可以理解为时间均匀度。
比如一个石英钟,每天对比与CCTV新闻联播时间一致,可以认为jitter为0,但offset并不一定为0,因为电视信号传播需要时间。
理想的ntp服务器,offset和jitter都为0。
对于现实的计算机,我们希望:
* 时间单向增加,也就是不会发生往回调表的情况。
* 时间均匀增加,也就是不会忽快忽慢,即上面描述的jitter尽量接近0。
* 与标准时间偏差尽量少,即上面描述的offset尽量接近0。
使用GPS模块授时的ntp服务器,据称offset可以到10µs(即0.01ms,大约相当于光或电波传播3km的时间)左右,jitter与服务器晶振和环境温度有关,一般可以到10µs以下(即0.01ms)。
# 一、GPS授时简单原理
GPS卫星有精密时钟源,GPS模块依靠接收到信号时间差来计算位置,同时可以通过以下两种方式对外输出时间信息:
一是通过串口输出NMEA语句,如下的北斗格式(GPS格式,前面是$GPRMC)输出:
```
$GNRMC,015022.00,A,3150.59184,N,11716.04078,E,0.242,,