一种基于FPGA的IRIG-B(DC)快速解码方法与流程

文档序号:14719615发布日期:2018-06-17 01:58阅读:256来源:国知局

本发明属于一种基于FPGA的IRIG-B(DC)快速解码方法技术领域



背景技术:

目前用分立元件开发和研制的IRIG-B码时间统一系统存在电路复杂、集成度低、调试困难、体积大、成本高、保密性低等缺点,而随着信息技术革命和计算机技术的飞速发展,可编程逻辑技术已发展成熟。为了达到IRIG-B码与时间信号的精确同步、性能稳定、集成体积小、制造成本低,提出了基于FPGA实现IRIG-B(DC)码快速解码的方法。该方法实现了IRIG-B(DC)码解调出1pps信号和时钟报文,且时钟报文通过串口进行分组发送。



技术实现要素:

本发明的目的正是为了克服上述现有技术存在的缺陷而提供一种精确同步、性能稳定、集成体积小、制造成本低的基于FPGA的IRIG-B(DC)快速解码方法。

本发明的目的是通过如下技术方案来实现的。

一种基于FPGA的IRIG-B(DC)快速解码方法,本发明特征在于:IRIG-B(DC)解码和解码报文的分组串口发送实现过程全部采用基于FPGA的硬件描述语言实现。

本发明IRIG-B(DC)100Hz时钟串行码中2ms、5ms、8ms脉宽信号的解调采用以10kHz时钟为基准对2ms、5ms、8ms脉宽信号进行计数,若计数得到的码元宽度为75~85,该码元为8ms脉宽;若计数得到的码元宽度为45~55,该码元为5ms脉宽;若计数得到的码元宽度为15~25,该码元为2ms脉宽。

本发明识别IRIG-B(DC)100Hz时钟串行码起始位是采用8ms脉宽信号计数器计数,由2ms、5ms脉宽信号相或后作为该计数器清零端方式。

本发明采用无限状态机对5ms脉宽信号高、低电平进行检测得到数据位1、0组成时钟报文。

本发明的有益效果

因IRIG-B(DC)码快速解码在一块FPGA芯片下即可全部完成,且所用功能全部采用硬件描述语言实现,所以使用FPGA实现IRIG-B(DC)码快速解码具有IRIG-B码与时间信号的精确同步、性能稳定、集成体积小、制造成本低等优点。。同时,利用现有的FPGA到ASIC硬件拷贝技术(如Altera公司的HardCopy技术),即可将所设计的功能转换为了专业的IRIG-B(DC)解码芯片,节约了硬件资源冗余问题。

附图说明

图1为IRIG-B(DC)码示意图;

图2IRIG-B(DC)码快速解码实现原理;

图3IRIG-B(DC)码数据解析时序图;

图4串口发送字节数据时序图。

具体实施方式

以下结合附图对本发明实施例做进一步详述,以下具体实施内容和图2IRIG-B(DC)码快速解码实现原理图将纳入本发明的保护范围。

IRIG-B(DC)码(简称B码)是一种BCD串行时间码,每个码元宽度为10ms,为脉宽编码(如图1所示,脉宽2ms、5ms和8ms分别代表二进制\"0\"、\"1\"和时帧参考标志PR或位置识别标志P)。一个时帧周期包括100个码元,码元的\"准时\"参考点是其脉冲前沿,从时帧参考标志PR开始算起,每10个码元有一个位置识别标志P,它们脉宽均为8ms。因此,连续两个脉宽为8ms脉冲表示时帧周期的开始,如果从第二个8ms码元(即时帧参考标志PR)开始编码,则码元位置分别为P0、P1、P2、…、P99。如果把IRIG-B码的编码格式写为:

<sync>SS:MM:HH:DDD:YY:<control><binaryseconds>,其中各个字段的定义如下:

■<sync>:时间同步标志(码元位置P0);

■SS:秒(码元位置P1~P4为秒个位、P6~P8为秒十位,范围00~59,当闰秒出现时可能为60);

■MM:分(码元位置P10~P13为分个位、P15~P17为分十位,范围00~59);

■HH:时(码元位置P20~P23为时个位、P25~P26为时十位,范围00~23);

■DDD:日(码元位置P30~P33为日个位、P35~P38为日十位、P40~P41为日百位,范围00~366);

■YY:年(码元位置P50~P53为年个位、P55~P58为年十位,范围00~99);

■<control>:二进制控制位;

■<binaryseconds>:一天中的秒数(SBS—straightbinarysecond-of-day)。

基于FPGA的IRIG-B(DC)快速解码方法,包括IRIG-B(DC)的快速解码和解码报文的分组串口发送,其功能实现原理如图2所示。

在图2中,脉宽识别模块的作用是解调出IRIG-B(DC)串行时间码中的2ms、5ms、8ms脉宽信号。其原理是检测到B码(IRIG-B(DC)码简称)上升沿时,分别在2ms、5ms、8ms信号线上输出低电平,清零并启动以10KHz为时钟信号的计数器;在B码的下降沿时,停止计数器计数,再对计数器值进行判断,若计数器值为75~85,则在8ms信号线上输出高电平;若计数器值为45~55,则在5ms信号线上输出高电平;若计数器值为15~25,则在2ms信号线上输出高电平。这里计数器的值不选择以定值是因为B码经传输或干扰后可能发生波形畸变,所欲在判别码元宽度时考虑冗余设计。

IRIG-B(DC)100Hz时钟串行码起始位识别模块采用8ms脉宽信号计数器计数,由2ms、5ms脉宽信号相或后作为该计数器清零端方式。其原理是对8ms信号计数,用5ms或2ms信号清零,当检测到连续的2个8ms标志信号时,即找到了B码的帧头,输出清零信号。

0~99码元计数器的作用时对B码码元计数,解析1pps信号。在码元计数器中,当清零脉冲信号到来(即检测到PR)时将码元计数器清0,同时置1pps信号线为高电平;当计数器计数到49时,置1pps信号线为高电平。

数据解析模块由波特率定时模块和数据采集模块组成,其作用是解析B码中所携带的时间信息,并将其输出或储存。本设计采用一个偏移的100Hz时钟来检测5ms标志信号的方法来解析时间信息。其原理为:首先波特率定时模块将10kHz时钟信号分频为一个100Hz的时钟信号,这个100Hz的时钟信号上升沿较清零信号上升沿(即IRIG-B(DC)码的上升沿)退后约3/(4*bps)(其中1/bps为每个码元的周期),恰好在5ms脉宽标志信号高电平的中间,如图3。在100Hz时钟信号高电平期间检测5ms脉宽标志信号的值,若为1,则根据此时刻数据采集模块中码元计数的值,置相应的数据位为1;若为0,则根据此时刻数据采集模块中码元计数的值,置相应的数据位为0。由于B码时间信息储存于特定的码元间,所以,时间信息输出信号线只接与存储有时间信息的数据位。

图2中时间报文分组发送控制模块的作用是将时间信息中包含的年、天、时、分、秒信息分别拆分成5个字节,控制串口发送模块依次发送。

串口发送模块由波特率定时模块和字节发送控制模块组成,其作用是按照串口发送时序协议,发送一个字节数据。波特率定时模块产生定时发送信号给字节发送控制模块,该控制模块将会按照这个节拍将数据一位一位的发送出去。假设我配置的波特率为9600bps,那么每隔0.000104166666666667s,波特率定时模块就会产生一个高脉冲给字节发送控制模块,一帧数据有11位,那么波特率定时模块需要产生12次定时,如图4。

为了方便上位机数据解析,我们在时间报文分组发送起始位置加入0xFFFF,上位机在连续检测到两个0xFF,开始解析数据,同步上位机时钟。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1