精准时间,基于FPGA高精度守时(授时)方法研究
精准时间,基于FPGA高精度守时(授时)方法研究
精准时间,基于FPGA高精度守时(授时)方法研究
安徽京准电子官微——ahjzsz
1 引言
高精度授时系统被广泛用于卫星导航、电力同步采样系统中[1]。起初高精度授时系统在导航卫星失连下,由于恒温晶振实际值与标称值存在误差,所以1 h守时误差可达到几微秒。近些年,部分学者提出统计每分钟标准秒脉冲信号下授时晶振产生的总脉冲数的方法来修正导航卫星失连后授时系统的守时误差[2]。但此方法精确度取决于导航卫星失连前1 min的晶振计数模块记录的脉冲数值,因而灵活性低且并未从根本上消除累积误差带来的影响。针对现有技术的不足,本文提出一种以统计学为基础消除累积误差的高精度守时方法。
2 守时总体方案
守时方案设计了5个模块:导航卫星信号接收模块、时间解码模块、晶振计数模块、模拟秒脉冲产生模块、显示模块。守时方案框图如图1所示。由导航卫星信号接收模块接收卫星信号,输出标准秒脉冲和时间码至FPGA时间解码模块,FPGA解出时间信息并根据通讯协议发送给显示模块[3, 4, 5]。晶振输出脉冲至FPGA,晶振计数模块计录标准秒脉冲每个周期内晶振脉冲数[6]。当记录时间达到30 min,计算这组数据的均值和方差。导航卫星失连后,根据前30 min计算的均值和方差动态设置晶振计数模块的脉冲产生计数器阈值以产生高精度的模拟秒脉冲。
3 守时硬件设计
FPGA采用Altera公司Cyclone II系列中的EP2C8T144C8N,该芯片具有144个IO端口、36个RAM块、2个PLL锁相环、18个嵌入式乘法器、四种配置方式和AS、JTAG下载调试接口。EP2C8T144C8N拥有丰富的资源且编程灵活,使得该芯片作为系统主控芯片[7, 8, 9]。导航卫星信号接收模块采用MHKJ-1612为主芯片,其能提供精确的授时服务。通过使用量化误差信息去补偿时间脉冲中的颗粒误差,导航卫星信号接收模快能够配置输出时间脉冲频率,授时精度可高达15 ns。即使设备在有遮挡物的情况下保证有一颗卫星正常连接,芯片就能输出准确的时间信息。导航卫星信号接收模块与FPGA采用串口通信,有多种波特率可供选择。系统晶振采用恒温晶振,频率精度可以达到正负0.2 ppm。消耗电流一般300 mA~2 A,主要应用于卫星,通讯基站等。守时部分硬件连接图如图2所示。
4 守时软件设计
4.1 同步秒脉冲信号设计
授时系统导航卫星连接正常情况下,导航卫星信号接收模块接收到卫星信号产生标准秒脉冲和时间码,并发送给FPGA接收模块。FPGA利用PLL锁相环将50 MHz恒温晶振倍频到200 MHz,当晶振计数模块脉冲计数值达到阈值或检测到导航卫星信号接收模块输出的标准秒脉冲信号上升,FPGA产生100 ms高电平信号并将晶振计数器清0,随后产生低电平信号。同步标准秒脉冲产生流程图如图3所示。
4.2 平均脉冲数及方差设计
当存储时间达到30 min时,利用 为1 s内晶振的脉冲数值,n为时长)和s2= ( 为平均1 s内晶振的脉冲数,Xi为1 s内晶振的脉冲数值)公式求出1 s内晶振的平均脉冲数和方差。根据拉依达准则,剔除数据中数值中大于 ± s+3 s或者小于x--3 s的异常值,然后再一次利用公式求出剔除后数据的平均值和方差。平均1 s内晶振的脉冲数以及方差产生的流程图如图4所示。
4.3 导航卫星失连后的高精度秒脉冲产生设计
导航卫星失连后,FPGA根据每秒内晶振脉冲数的平均值和方差,求出 ± s+3 s和 ± s-3 s作为设定脉冲计数的两个阈值BV1、BV2。在一个周期T内,前 当晶振脉冲计数达到BV1的时候,产生一个滞后模拟秒脉冲(与标准秒脉冲秒头相比);后 当晶振脉冲计数达到BV2的时候,产生一个超前模拟秒脉冲。产生的模拟秒脉冲秒头在标准秒脉冲左右有规律的晃动从而消除累积误差。导航卫星失连后的高精度秒脉冲产生流程图如图5所示。
5 实验结果分析
为避免测试结果的偶然性,实验使用4套授时系统板,采用50 MHz标称值的恒温晶振,精度可达正负0.2 ppm。先将恒温晶振输出的50 MHz的脉冲信号倍频到200 MHz,然后统计标准秒脉冲信号每个周期下授时系统恒温晶振所产生的脉冲数值的均值和动态方差。测试结果如表1所示。
表 1 导航卫星未失连下每秒晶振脉冲数值的均值和方差Tab. 1 Crystal’s average pulses number per second and variance when navigation satellite works
时间 |
10 min |
30 min |
1 h |
2 h |
||||
分类 |
均值 |
方差 |
均值 |
方差 |
均值 |
方差 |
均值 |
方差 |
1号板 |
199 999 856.6 |
3.21 |
199 999 857.8 |
3.28 |
199 999 859.3 |
3.29 |
199 999 860.5 |
3.31 |
2号板 |
199 999 852.9 |
2.32 |
199 999 853.5 |
2.40 |
199 999 854.4 |
2.48 |
199 999 856.2 |
2.51 |
3号板 |
199 999 814.3 |
2.25 |
199 999 815.4 |
2.32 |
199 999 818.3 |
2.41 |
199 999 820.0 |
2.47 |
4号板 |
199 999 903.2 |
1.89 |
199 999 904.1 |
1.91 |
199 999 905.3 |
1.90 |
199 999 907.1 |
1.95 |
表1统计了不同时刻秒脉冲单位时间内晶振的脉冲数值的平均值和方差。图6图7横坐标为时间,纵坐标为均值和方差,折线图直观的反映了均值和方差随着时间的变化趋势。表2统计了在导航卫星失连下不同时刻模拟秒脉冲与标准秒脉冲的误差。图8横坐标为时间,纵坐标为误差大小,折线图直观的反映了误差随着时间的变化趋势。
图 6 均值随时间变化折线图
图 7 方差随时间变化折线图
图 8 守时误差随时间变化折线图
表 2 导航卫星失连下守时误差Tab. 2 Punctuality error when navigation satellite lost
分类 |
误差/ns |
|||
时间 |
10 min |
30 min |
45 min |
1 h |
1号板 |
45 |
78 |
127 |
183 |
2号板 |
44 |
84 |
138 |
197 |
3号板 |
45 |
69 |
132 |
211 |
4号板 |
42 |
76 |
141 |
204 |
6 结语
本文通过统计30 min内标准秒脉冲每秒晶振脉冲数值的均值和动态方差,动态设置晶振计数模块计数阈值以产生模拟秒脉冲,以达到高精度守时目的。从实验可知,秒脉冲在导航卫星失连1 h内,与标准秒脉冲相比秒头误差不超过250 ns,符合电力、靶场等系统守时要求。