基于IRIG-A码输出的超小型GPS时钟设计
引言
本文引用地址:https://www.eepw.com.cn/article/21594.htm近年来,gps(全球定位系统)得到了广泛的应用。gps不仅提供定位信息,同时也提供高精度的时间信号。在地震观测系统中,数据采集装置对时间有着极高的要求,目前普遍采用的是gps同步授时和本地时钟守时相结合的办法获取时间信息。每台装置都有自己的gps接收机用于同步授时。这意味着即使在一个几百米范围内的区域,由于每台装置所处的位置不同以及各接收机性能不可能完全一致,彼此之间的时间信息也仍然存在一定的误差。如果在小区域范围内,几台数据采集器同时采用一台gps接收机同步授时,则可消除上述误差,时间统一和可靠性能得到进一步提高。irig码是国际通用的一种标准时间传输码。它不仅包含秒符号信息,而且包含绝对时间信息,已经广泛应用于时统装置与用户接收装置之间的接口标准,提高了发收端时间的一致性、可靠性。
1 irig码格式规范
irig(inter range instrumentation group)码,称为“美国靶场仪器组码”,把接收的gps时间编码,传送给分布在不同地方的设备,以实现各设备之间的时钟同步。该码广泛应用于导弹、航天、遥测等时统设备中,实施精
度高,稳定性强。
irig码包含100个码元,每个码元又有3种码型:二进制0、1和位置标识符。分成3字段编码:第1字段为年时间(天、时、分、秒),第2字段为控制功能函数字段,第3字段为直接用二进制秒符号表示的天时间。每24小时循环1次。
irig串行码主要有a、b、d、e、g、h六种时间格式,主要差别是时间编码精度、码元速率和二进制时间信息的位数不同。实际常用的是a和b码。a码时帧周期为0.1 s,b码时帧周期为1 s。
在本设计中采用了iriga串行时间码编码。irig码分为直流(dc)码和交流(ac)码。dc码和ac码码元周期均为1 ms。dc码用脉宽来表示码元,脉宽0.2 ms表示二进制0,脉宽0.5 ms表示二进制1,脉宽0.8 ms表示位置标识符或参考码元。ac码用周期为0.1 ms的高幅和低幅正弦波的个数来表示码元,参考码元或位置标示符用8个高幅和2个低幅表示,二进制1用5个高幅和5个低幅表示,二进制0用2个高幅和8个低幅表示。
2 iriga编码设计
lpc2132 微控制器有1个8路10位a/d转换器和1个10位d/a转换器、2个32位定时器/计数器(带4路捕获和4路比较通道)、pwm单元(6路输出)和看门狗、9个边沿或电平触发的外部中断引脚。片内晶体振荡电路支持频率为1~30 mhz。通过片内pll可实现最高为60 mhz的微控制器操作频率。pll的稳定时间为100 μs。
在本设计中使用lpc2132和lea4h gps接收机组成一个时统设备的发送端。gps接收机通过uart口,每秒钟向微控制器发送1次数据,1pps脉冲信号接入微控制器的外部中断eint0。温度传感器tcn75采集周围的环境温度,并通过i2c总线把温度数据传送给微控制器。二阶低通滤波电路对d/a转换器输出的波形进行整形。微控制器维持一个本地时钟计数,产生毫秒、秒、分、时、天的时间,同时把时间信息按iriga码的格式编码。gps时钟电路框图如图1所示。


32位计数器t0一直连续计数。当1pps信号到来时,产生中断,捕获寄存器cr0装入t0当前的计数值ct1并保存下矗坏毕乱桓?pps信号到来时,cr0装入t0的计数值ct2,本地晶振频率为(ct2-ct1)或(ct1+232-ct2)。t0计数溢出时的情况。
2.2 时间信息生成
微控制器采用对本地时钟的计数来分别产生毫秒、秒、分、时、天的时间信息,并设置了毫秒、秒、分、时、天的软件计数器。匹配寄存器mr1根据晶振当前频率值设置毫秒时刻的匹配值。当匹配时,毫秒软件计数器值加1。毫秒计数器计0~1000
ms的时间,并在秒时刻清零;秒、分、时、天计数器主要完成秒、分、时、天的计时。由于gps接收机1 s发1次数据信息,所以对本地时钟的同步精度是1
s,由于秒以下可能会产生误差,所以微控制器还需进行钟差测量,把本地时钟计时信息和gps时间信息进行比较。两者之差大于1 s,直接修改本地时间信息。如果本地计时快,则把毫秒计数器计数节拍调慢一点,即mr1毫秒时刻的匹配值设置偏大;反之,则把节拍调快一点,直至误差最小化。
匹配寄存器mr0控制dc码波形的翻转。由于知道了32位计数器t0与1pps的关系,因此可根据输出码元的脉宽确定跳变沿时刻的计数值。实际上,只要所提取的时间信息转换成为iriga的格式,就可以按式(1)确定1帧码元脉宽的跳变沿的计数值。为了使输出的码元及时、准确,可以提前向匹配寄存器写入下一个跳变沿的计数值,即在ctx值匹配时预置cty值,如图3所示。tx时刻对应的计数值ctx:


ac码的每个正弦波采样16个点,各相邻点之间的采样时间间隔相等,其中第1个点和第17个点采样时间间隔为1 ms。ac码用高低幅正弦波个数表示(高幅和低幅正弦波采样时间相同,相应时刻幅值是前者为后者的3倍),并把正弦波采样点存表。表1存放高幅正弦波数据,表2存放低幅正弦波数据。在内部存储器中,表1和表2的入口地址不同,局部地址完全相同,寻址时只要跳到相应的入口地址,后面的查表方式就完全一致。查表时刻由匹配寄存器控制,查表时把数据送入d/a转换器,如图4所示。在d/a转换器输出端,接隔直电容和低通滤波器整形输出,同时匹配寄存器的匹配值还须根据所测的频率不断调整。

软件设计流程如图5和图6所示。


同时利用温度传感器采集当前工作温度t,可按0.5°的温度步差列一张[t;ct2ct1]温度频率表。只要gps同步,这张温度频率表就在不断更新,以确保该表是实时可用的;一旦gps失步,微控制器查表,就可查得当前的频率值f,按式(1)确定tx时刻对应的计数值ctx和确定ac码的查表时刻,以保证iriga码输出的连贯性和高准确性。
结语
本设计实现了iriga dc码和ac码的编码输出,两种码可根据实际需要选择使用。dc码和ac码主要由软件完成。在编程过程中,微控制器不断检测本地晶振的频率。gps同步时,用1pps信号去计算频率值,所得频率值是十分准确的,同时按温度地址存表;gps失步时,微控制器查温度频率表,同样也能得到具有一定准确度的频率值。根据本地晶振频率就可以准确控制irig码的输出。该设计的实际电路体积小、功耗低,在gps同步时有很高的输出精度,可达μs量级,而在gps失步时输出也有较高的精度;同时可以灵活选择使用dc码和ac码输出,具有较高的应用价值。
评论