FPGA实现IRIG-B(DC)码编码和解码的设计

2010-03-26 07:32吴炜周烨黄子强
电子设计工程 2010年12期
关键词:码元寄存器解码

吴炜,周烨,黄子强

(电子科技大学四川成都610054)

IRIG[1](Inter Range Instrumentation Group)起源于军队靶场的时间同步,靶场中的时间系统为卫星或航天器发射、常规武器试验、测控系统提供标准时间。IRIG-B时间码(简称B码)就是由IRIG所属的TCG(Telecommunication Group)制订的一种串行时间码,被广泛应用于时间信息传输系统中。在实际的应用中,根据距离B码发生器的远近及不同时间精度的要求,B码在实际传输中采用了两种码型AC码(交流码)和DC码(直流码)。当传输距离比较远时采用AC码,当传输距离近时则采用DC码。在本文中只涉及DC码。

FPGA为时码技术[2]、时统设备的研制与开发注入了新的生机,为整个系统内的从设备分配相干的工作时钟,从而确保从设备具有同源相干的时钟基准。系统时钟送出时间信号,FPGA对接收到的时间信号进行编制,并且生成与GPS输出信号1 pps精确同步的B码信号。而解码系统是FPGA对B码格式信号进行解调,产生出所需的绝对时间和各种控制信号,提供给测量设备。对时统设备进行高度集成,实现时统设备大规模、高速度、低成本、低开发费用、设计周期短、电路简单、易于调试和可靠性高的目标,是时统设备发展的必然趋势。

1 IRIG-B码格式与原理

IRIG-B码的时帧周期是1 s,包含100个码元,每个码元周期为10 ms,即B码的码元速率为100 pps。B码有3种码元,位置识别标志P,二进制“1”和“0”,脉宽分别为8 ms、5 ms和2 ms。位置识别标志P0的前沿在帧参考点前一个索引计数间隔处,以后每10个码元有一个位置识别标志,分别为P1、P2、……、P9、P0,PR为帧参考点。脉冲信号如图1所示。

图1 IRIG-B码元图Fig.1 Picture of IRIG-B code element

一个时间格式帧从帧参考标志开始,由相邻两个帧参考标志之间的码元组成,每个时帧的准时为该时帧参考标志的前沿。如果连续出现两个8 ms的位置识别标志,则该时帧的开始是位于第2个8 ms的位置识别标志前沿。

IRIG-B码中第1个字段(PR~P1)传送的是秒信息,第2个字段(P1~P2)传送的是分信息,第3个字段(P2~P3)传送的是时信息,第4、5个字段(P3~P5)传送的是天数信息,即从1月1日开始计算的年积日,所以在第5个字段结束后时间信号已经解析并保存在寄存器中。另外,在第8个字和第10个字中分别有3位表示上站和分站的特标控制码元。不仅包含丰富的时间信息,也包含必要的控制信息和监测信息,方便后端用户进行使用。

FPGA对B码的编码和解码时根据其格式和原理[3-5]使用计数器和状态机来实现,其中会涉及到多个时钟信号,这些时钟信号都是由FPGA外部晶振40 MHz的时钟分频而来。编码时钟为5 MHz;解码的时钟有10 kHz、10 MHz,同时会输出时间信号,即天、时、分、秒信号。

2 IRIG-B码编码

时间模块由CPU进行处理,提取系统的时间信号,即秒信号sec_bcd[7..0],分信号min_bcd[7..0],时信号hour_bcd[6..0],天信号day_bcd[10..0],为FPGA的输入信号,这些输入信号都是并行信号,并且是BCD码。GPS模块为编码系统提供1 pps信号上升沿,即秒同步信号,也作为FPGA的输入信号。IRIG-B码编码的寄存器传输级(RTL)视图如图2所示。

图2 IRIG-B码编码的寄存器传输级(RTL)视图Fig.2 View of encoding IRIG-B code's register transfer level

图2中,FPGA对IRIG-B码的编码主要由两个模块构成,一个为时钟分频模块,另一个为数据处理模块。系统的晶振时钟为40 MHz,通过分频,采用5 MHz的时钟,所以此处的误差最大为200 ns。当GPS产生1个pps_in信号后,时间信号同时进入FPGA。为了产生的IRIG-B码和GPS产生的pps_in信号精确同步,所以IRIG-B码的准时位置应对准GPS模块发出的1 pps信号上升沿。B码编码的状态机流程图如图3所示。

图3 FPGA编码的状态机流程图Fig.3 Flow chart of FPGA encoder's state machine

FPGA完成这个时刻的B码编码后,会立即不断地搜索下一个pps_in的上升沿,GPS模块每秒都会触发pps_in的上升沿,一旦发现pps_in上升沿,马上进入下一秒的编码。这样编程的好处是B码大致上可以与1 pps同步,延迟少且方便测试。FPGA对IRIG-B码秒信号的编码仿真波形如图4所示。

图4 FPGA对IRIG-B码秒信号的编码仿真波形Fig.4 Simulation waveform of encoding second signal of IRIG-B code by FPGA

如上图所示,第1行信号是40 MHz的晶振时钟;第2行信号是输入信号pps_in;第3行信号是复位信号,低电平有效;第4行信号是分频后的时钟信号5 MHz;第5行是输入秒信号,此时秒信号sec_bcd[7..0]为8位二进制数10001000;最后一行信号是B码的编码信号。当pps_in上升沿到来时,FPGA对B码在5 MHz时钟的上升沿处立即产生高电平,首先是B码输出位置识别标志Pr(高电平8 ms,低电平2 ms),接着8位二进制的秒信号从低位至高位输出,实现计数器计数编码,放大波形可以知道,此时B码与pps_in有100 ns的滞后,100 ns的延迟对时序同步影响很小,可以忽略不计。然后FPGA根据状态机的状态运行,直到下一个pps_in上升沿来临。

3 IRIG-B码解码

解码部分的设计采用两个时钟来处理,晶振的时钟为40 MHz,通过分频,可以得到一个是10 kHz的时钟,和一个10 MHz的时钟。先采用10 kHz的时钟,当连续监测到2个脉宽为8 ms的位置标示信号时,启动1个计时器,当计时器计时到990 ms时,产生1个使能信号EN,这个信号是传递给高频时钟的监测使能信号。接着计时器清零,等待下一次监测到连续2个脉宽为8 ms的信号出现时,计时器重新开始计时。

如果只采用高频时钟的话,要监测2个脉宽为8 ms的信号与计时将会非常浪费逻辑资源。所以在前一部分的监测与计时用低频时钟进行;在准时对应的上升沿来临前2 ms为高频时钟部分提供1个使能信号;高频时钟处理部分接收到此使能信号EN后再监测B码的PR的上升沿,当监测到PR为高电平后,发出1个脉冲1 pps。经过这样的出理,就能精确的提取出1 pps信号以及与1 pps精确同步的10 MHz脉冲信号[6-7]。1 pps对时信号的提取如图5所示。

图5 1pps对时信号的提取Fig.5 Extract of 1pps compared time signal

当检测到P5时,时间信号已经检测出来,这些时间信号都放在相应的寄存器(都是BCD码的并行信号)中,当有使能信号EN时,此时将已经检测出的时间信号加1 s,并在输出1 pps信号的同时输出时间信号,这样就保证了时间的准确性,也是用10 MHz的时钟同步,然后将时间信号在监测到2个脉宽为8 ms的位置标示信号时清零。FPGA对IRIG-B码的解码仿真如图6所示。

图6 FPGA对IRIG-B码的解码仿真Fig.6 Simulation of decoding IRIG-B code by FPGA

如上图,当第3行的信号使能信号EN触发1个上升电平时,时间信号会在此时加上1 s。原先解码出来的时间信号秒、分、时、天信号为sec_out[7..0]、min_out[7..0]、hour_out[6..0]、day_out[10..0],加1 s后的时间信号放在寄存器sec_final[7..0]、min_final[7..0]、hour_final[6..0]、day_final[10..0]中,已经将它们化为十进制数,根据B码的格式,它们的第4位均为无效信号,即sec_out[4]、min_out[4]、hour_out[4]、day_out[4]、sec_final[4]、min_final[4]、hour_final[4]、day_final[4]都是无效信号。

当使能信号EN有效时,即在FPGA处理时间信号加1 s的过程中,当原先的秒信号sec_out寄存器为59 s时,加1 s后,输出的sec_final寄存器使其秒清零,并且在分信号寄存器加一。同理适用于分、时、天信号,它们都有一个上限,分信号的上限同样是59时信号的上限是23,而天信号的上限是365或366,需要进行判断后得出,一旦超过了各自信号的上限,输出寄存器就会自动清零,同时进位加一。

由图6可以知道,寄存器sec_out的值为十六进制数45,使能信号EN有效后,即加上1 s后,sec_final的值为十六进制数46,因为其第4位无效,所以秒时间为26,最后解码出来的时间是145天11时41分26秒。这些时间信号存在FPGA的寄存器中,当1 pps输出时,它们会随10 MHz的时钟频率同步输出到外部总线上,外部总线接受到时间信号实现时间同步,去校准从设备的实时时间,实现了FPGA对IRIG-B的解码。

4 结论

随着通信技术和通信媒体的发展,如何解决时统信号在不同媒体中的传输,对靶场时间统一系统提出了更高的要求。

本设计中用到Cyclone的EP1C6Q240C8芯片,并且使用modelsim实现功能和时序仿真。实践证明,通过FPGA完成了对IRIG-B码的编、解码设计,能够实现与系统时钟信号的精确同步,当GPS送入pps_in信号时,FPGA进行编码,输出的IRIG-B码暂时保存在FPGA的存储器中,当需要为外部设备提供精确的对时时钟时,FPGA进行解码操作,输出同步脉冲信号1pps和时间信号,从而去校准从设备的实时时间,使设备具有精度高的同步的时钟基准,获得精确且同步的控制效果,便于对从设备进行远程管理和监测。

[1]周国平,邢灿华.IRIG-B格式时间编码电路的设计[J].电气技术与自动化,2005,34(2):88-90.

ZHOU Guo-ping,XING Can-hua.The design of IRIG-B serial time code format circuit[J].China Academic Journal Electronic Publishing House,2005,34(2):88-90.

[2]马建华,王欣奎.IRIG-B码时统终端设计[J].北华大学学报报:自然科学版,2005,6(5):463-465.

MA Jian-hua,WANG Xin-kui.Design of IRIG-B code time terminal system[J].Journal of Beihua University:Natural Science,2005,6(5):463-465.

[3]史玉琴.基于EPLD的IRIG-B编/解码器的分析与设计[J].现代电子技术,2007(14):79-81.

SHI Yu-qin.Analysis&design of IRIG-B encoder/decoder based on EPLD[J].Modern Electronics Technique,2007(14):79-81.

[4]江涛,孙昕.GPS与IRIG-B在电网授时系统中的应用[J].继电器,2007(35):333-335.

JIANG Tao,SUN Xin.The GPS and IRIG-B at the charged barbed wire net teach the application in the system[J].RELAY,2007(35):333-335.

[5]CILETTI M D.Advanced digital design with the Verilog HDL[M].Publishing House of Electronics Industry,2005.

[6]范一强,曹剑中,聂浩之,等.基于嵌入式技术的B码信号中同步脉冲提取方法的研究[J].航空计算技术,2005,35(3):113-116.

FAN Yi-qiang,CAO Jian-zhong,NIE Hao-zhi,et al.Drawing of synchronous pulse in IRIG-B code based on embedded technology[J].Aeronautical Computer Technique,2005,35(3):113-116.

[7]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2003.

猜你喜欢
码元寄存器解码
《解码万吨站》
STM32和51单片机寄存器映射原理异同分析
LFM-BPSK复合调制参数快速估计及码元恢复
Lite寄存器模型的设计与实现
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于极大似然准则的短猝发信号盲解调
基于FPGA的IRIG-B码解码器设计
基于Haar小波变换的码元速率估计