陈永胜
(中国电子科技集团公司第五十四研究所,河北石家庄050081)
随着通信系统功能的增强以及系统复杂度的提高,通信系统对各个单元工作的一致性提出了要求。此时,需要引进时统设备用以协调系统在工作过程中,系统时间的一致性。而IRIG-B码是在设计时统设备时,为了实现系统中各个工作单元的时间上的同步,所采用的标准码型[1]。
IRIG(Inter-Range Instrumentation Group)是美国RCC(靶场司令委员会)下属机构,它所指定的时间码格式共有2种,第一类是并行时间码格式,另外一类是串行时间码格式。IRIG串行时间码,又分为7种格式,即 IRIG -A、B、C、D、E、G 和 H,其中IRIG-B由于接口规范、使用灵活,被广泛应用于时间信息传输系统中[2]。在实际应用中,根据距离以及不同时间精度的要求,B码在实际传输中采用了2种码型,分别为:AC码(交流码)和DC码(直流码)[3],在本文只涉及 DC 码。
IRIG-B(DC)码作为一种串行时间码,每秒发出一个时间帧,而每帧由100个码元组成,对应的每个码元的码元周期为10 ms,其码元采用脉宽编码,其具体编码形式如图1所示。
图1 脉宽编码码型
图1中,分别表示了IRIG-B(DC)码的3种码型。其中:“P”用于时间帧中的位置标志,其编码脉宽为8 ms,即在10 ms的码元周期中,取8 ms为高电平,2 ms为低电平;“1”用于在时间帧中表示二进制数“1”,其编码脉宽为5 ms,即在10 ms的码元周期中,取5 ms为高电平,5 ms为低电平;“0”用于在时间帧中表示二进制数“0”,其编码脉宽为2 ms,相应的在10 ms的码元周期中,取2 ms为高电平,8 ms为低电平。
对于IRIG-B(DC)码的每一帧的100个码元,可以分别编号为0 -99。其中,第 0、9、19、29、……、99号为标志位“P”,第0位码元定义为“Pr”,用以表示时间帧开始的位置,第99位码元定义为“P0”,表示时间帧结束的位置;第9、19、……、89位码元分别定义为“P1”、“P2”、……、“P9”表示时间帧中间的各个标志位;其余码元为二进制数字信息。
在IRIG-B(DC)解码器电路设计中,以FPGA芯片作为核心处理单元,用VHDL语言通过编程自顶向下实现解码功能。功能实现过程可以分为倍频单元、解码时钟单元、解码单元和数据输出单元。
倍频单元,利用quartus软件自带的IP核ALTPLL对电路晶振输入的10 MHz频率源进行倍频,生成100 MHz的频率,以该频率作为系统的主工作时钟。
在解码时钟单元的作用是对100 MHz主工作时钟进行分频处理,从而得到解调单元所需的采样时钟。分频过程可以如下公式表示:
式中,fout为解码单元所需的工作时钟;fmain为倍频单元输入的100 MHz主工作时钟;N等于32;fcw是频率控制字,该控制字由2部分组成,第一部分为固定系数,第二部分为补偿系数。其中固定系数同过系统主工作时钟与解码单元采样时钟的比值计算确定;而补偿系数在解码单元生成,在解码单元计算输入的IRIG-B(DC)码的码速率与本地采样时钟的异步频差生成频率补偿系数,在解码时钟单元对这2个系数求和,将结果作为频率控制字,对主工作时钟进行分频,使输出的采样时钟fout稳定在解码单元所需的频率范围之内。
解码单元是解码器的核心部分,该单元接收输入的IRIG-B(DC)码,从中提取时间信息,及同步的秒脉冲(pps)信号,并输出到系统的下级单元。解码过程分为帧同步过程、码元同步过程、同步校验过程和输出数据过程。
帧同步过程,即为捕获IRIG-B(DC)码时间帧的起始位置的过程。参照IRIG-B(DC)码的帧结构,同时考虑到码序列输入的连续性,通常的做法是通过检测两帧的帧尾和帧头的衔接位置来判断搜帧的结果。该衔接位置形式,如图2所示。
图2 帧头波形
在图2中,“P0”为前一帧的第99位码元,即帧尾标志位,“PR”为本帧的的第0位码元,即帧头标志位,也就是说,在整个B(DC)码码流中,只有两帧的帧尾帧头衔接位置,才会出现连续2个P标志位,如果检测到了这2个标志位,表示捕获时间帧成功。根据前文提到的IRIG-B(DC)码,不同码元编码属性,由于P标志位为8 ms脉宽码,因此,捕获时间帧起始点时可以充分利用该特性。
在编程时,可以以10 ms为一个计数单元,在此时隙范围内,对高电平时长进行二次计数,以此作为判决码元脉宽的结果。其具体过程是:在初始状态下,对输入的IRIG-B(DC)码进行采样,当采到第一个高电平时,帧同步时间计数器开始计数,结合采样频率计入10 ms的时长,与此同时,帧同步判决计数器在同一个采样时钟下开始计录高电平的时长,当帧同步时间计数器计满10 ms后,观察帧同步判决计数器中的数值,如果计数时长为8 ms,则判决该码元为“P”标志位。如果能够检测到连续2个“P”标志位,则将帧同步寄存器置为高电平,表示时间帧捕获成功。可以进行下级提取时间数据单元。
当时间帧捕获成功之后,可以进行数据判决过程。与帧同步类判决似,当采到第一个高电平后,启动码元同步时间计数器,同样以10 ms为一个计数单元,在此时隙范围内,对高电平时长进行二次计数,以此作为判决码元脉宽的结果。当高电平时长在(2 ms,8 ms)范围内,则将码元同步寄存器置为高电平,表示码元同步判决成功。针对具体数值,当码元同步判决计数器计入的时长为8 ms时,表示当前码元为“P”标志位;当码元同步判决计数器计入的时长为5 ms时,表示当前码元为二进制数据“1”;当码元同步判决计数器计入的时长为2 ms时,表示当前码元为二进制数据“0”。
帧同步之后,在捕获时间帧数据的过程中,同时需要引入数值寄存器,和索引寄存器,数值寄存器在码元同步判决有效后,记录当前码元的数值,同时索引寄存器则记录当前码元的索引序号,即该码元在时间帧中的对应位置。需要说明的是,当索引寄存器记录的索引值为9、19、29和89时,需要判决与之对应的码元脉宽,如果该脉宽值不是8 ms,即不是标志位“P”,则将帧同步寄存器置为低电平,表示系统出现码元同步的误判,需要重新捕获时间帧。
除帧同步判决之外,解码单元还引入帧失步判决和采样频率判决。其中,帧同步判决是需要引入低电平计数器,该计数器在启动码元同步判决时间计数器之前,对低电平时长进行连续计数,如果低电平连续时长达到10 ms,则将帧同步寄存器置为低电平,表示系统出现帧同步的误判,需要重新捕获时间帧。而采样频率判决过程既是频率补偿系数的生成过程,其目的是校验本地采样时钟与输入IRIG-B码的码时钟之间的频差,依此生成频率补偿系数,去调整解码单元的采样时钟。
在同步判决正确得条件下,当索引寄存器记录完第98位数据,将秒脉冲使能寄存器置为高电平,在此高电平状态下,对第99位的码元脉宽进行判决,如果得到的脉宽值为8 ms,则开启秒脉冲捕获窗口,在此窗口中,将随后输入的IRIG-B码码流中的第一个电平上升沿作为触发电平,启动输出的秒脉冲(pps)。索引寄存器记录完第98位数据,同时也表示串行数据提取完成,此时,可以将数值寄存器中的串行数据转换为8 bit并行数据送到数据输出单元。
数据输出单元的功能是将解码单元输出的8 bit数据,按照协议的帧结构组成串行数据流,通过异步串口送到系统的下级单元。
设计方案用 Altera公司的 cycloneⅡEP2C35F484I8芯片实现。在电路中,FPGA芯片接收到输入的的IRIG-B(DC)码码流,在芯片内部通过解码,提取时间数据及秒脉冲信号(PPS)。其解码结果可以用quartus软件自带的SignalTapⅡLogic Analyzer模块通过JTAG总线,实时采样获得。其采样结果如图3所示。
在图3中,data01为输入的IRIG-B码信号,data02为解码器同步后输出的秒脉冲信号,data03为脉冲捕获窗口,该捕获窗口的宽度应该覆盖时间帧的第0位标志位码元,在data03为高电平,表示捕获秒脉冲使能有效的条件下,通过data01“PR”标志位的上升沿触发,将data02置为高电平,输出秒脉冲信号,其脉冲宽度由联试协议确定。Data04~data07为解码后的得到时间信息。其中,data04为秒信息,data05为分钟信息,data06为小时信息,data07为当前天数。根据data04数据可以看出解码过程中,每隔1 s时钟跳变输出一次,跳变发生在前一帧数据码元采样结束时刻。
图3 仿真结果
采用FPGA芯片进行IRIG-B(DC)时间码解码器的设计,在芯片内部通过编程实现所有逻辑功能,这样在解码过程中可以很方便地实现时间帧的捕获、同步跟踪以及数值判决等过程。因此可以较准确地提取间信息和秒脉冲。同时也可以通过计数计算,将本地工作时钟与系统时钟进行比较,将比较结果作为帧同步判决的时间基准。可以看出,采用FPGA芯片设计IRIG-B(DC)码解码器有利于简化电路,使功能操作灵活简单,并能够提供较精确的时间信息。经过实验表明,该解码器具有较高的可靠性、准确性和实用性。
[1] 卢韦明.基于 FPGA的B码设计[J].今日电子,2012(10):57-58.
[2] 周国平,屈少君,韩亮.IRIG-B时间格式码产生解调电路的设计[J].陕西科技大学学报,2012,30(2):87 -89.
[3] 吴炜,周烨,黄子强.FPGA实现IRIG-B(DC)编码和解码的设计[J].电子设计工程2010,18(12):162 -164.
[4] 郑海生,周富大,朱洪兴.IRIG-B码解码编码卡[J].电子测量技术,2005(6):88-89.
[5] 雒俊鹏.基于FPGA的IRIG-B(DC)码产生电路设计[J].电子设计工程,2010,18(5):146 -148.
[6] 吴旻,刘进进,王红光.高精度IRIG-B码对时解码模块的设计与实现[J].工业控制计算机,2012,25(1):88-91.
[7] 张斌,张东来,王超.基于FPGA的IRIG-B(DC)码同步解码设计[J].测控技术,2008,27(2):45 -47.
[8] 熊立智,唐普英.基于FPGA的IRIG-B解码电路设计与实现[J].通信技术,2010,43(8):231 -232.
[9] 张建春,任记达.基于FPGA的IRIG-B码调制解调实现[J].现代导航,2012(4):305-308.
[10]吴卫,陈建军,宋虎.基于FPGA的IR IG-B码解码器的实现[J].雷达与对抗,2009(3):37-40.
[11]杨保平,郭文峰,卜格鸿,唐斌.基于FPGA的IRIG2B码解码器设计[J].装备指挥技术学院学报,2005,16(6):79-82.