本发明属于数据通信技术领域,尤其涉及一种对irig-b(dc)码的解码和编码系统及方法。
背景技术:
irig-b(dc)码是一种串行时间码,被广泛应用于时间信息传输系统中,对时统设备进行高度集成,实现时统设备大规模、高速度、低成本、低开发费用、设计周期短、电路简单、易于调试和可靠性高的目标,是时统设备发展的必然趋势。以往很多irig-b(dc)码的编码、解码设计都是基于单片机或者专用解码芯片实现,使用不够灵活,而且精度不高。
fpga为时码技术、时统设备的研制与开发注入了新的生机,fpga对接收到的时间信号进行编制,并生成与gps输出信号1pps精确同步的irig-b(dc)码信号。而解码系统是fpga对irig-b(dc)码格式信号进行解调,产生出所需的绝对时间和其他irig-b(dc)码携带的信息,提供给测量设备。使得设计更加灵活、精度更高而且更容易移植。
技术实现要素:
针对现有技术中的上述不足,本发明提供的一种对irig-b(dc)码的解码和编码系统及方法。解决了现有技术中基于单片机或专用解码芯片实现编码和解码不灵活以及精度不高的问题。
为了达到以上目的,本发明采用的技术方案为:
本方案提供一种对irig-b(dc)码的解码和编码系统,包括fpga寄存器,以及分别与所述fpga寄存器连接的gps、时统设备以及cpu;
所述fpga寄存器用于根据gps输入的准秒时刻脉冲lpps以及irig-b(dc)码串行数据实现对irig-b(dc)码的编码和解码操作;
所述cpu用于系统控制,实现对fpga的访问和管理;
所述gps用于向fpga寄存器发送准秒时刻脉冲lpps以及时间信息;
所述时统设备用于向fpga寄存器发送irig-b(dc)码,以及接收fpga寄存器发送的串行的irig-b(dc)码,利用发送和接收的irig-b(dc)码校准实时时间。
基于上述系统,本发明还提供了一种对irig-b(dc)码的解码和编码方法,包括解码过程和编码过程;
所述解码过程包括以下步骤:
a1、接受串行的irig-b(dc)码信号;
a2、根据所述irig-b(dc)码信号确定irig-b(dc)码的准秒位置,并根据所述准秒位置开始接收数据;
a3、根据irig-b(dc)码的占空比确定irig-b(dc)码的码元个数;
a4、根据所述irig-b(dc)码的码元个数,判断是否接受完所有串行的irig-b(dc)码信号,若是,则将接收到的时间信息数据保存至fpga内部的寄存器中,完成对irig-b(dc)码的解码操作,否则,返回步骤a1;
所述编码过程包括以下步骤:
b1、从fpga内部的寄存器中提取时间信息数据;
b2、接收gps输入的准秒时刻脉冲lpps,产生irig-b(dc)码准秒时沿,并开始编码操作;
b3、根据所述时间信息数据以及irig-b(dc)码准秒时沿,控制irig-b(dc)码的高低电平时间,完成对irig-b(dc)码的编码操作。
进一步地,所述步骤a2包括以下步骤:
c1、对所述irig-b(dc)码信号的码元周期进行计数;
c2、利用计数器对所述irig-b(dc)码上升沿进行清零处理,并在下降沿时根据计数的值,得到当前码元的值;
c3、根据所述当前码元的值检测是否存在两个连续的p码,若是,则确定irig-b(dc)码的准秒位置,并开始进行数据接收,同时利用计数器对接收到的码元个数进行计数,并进入步骤a3,否则,返回步骤c1。
再进一步地,所述步骤c3中进行数据接收其具体为:
采用fpga内部寄存器左移的方式进行数据接收。
再进一步地,所述步骤c3中开始进行数据接收包括以下步骤:
d1、针对在idle状态下,判断当前接收到的码元值是否为p码,若是,则跳转到p0状态,并进入步骤d2,否则,重复步骤d1,其中,idle表示初始状态或空闲状态,p0表示接收到第一个p码;
d2、针对在p0状态下,判断当前接收到的码元值是否为p码,若是,则跳转至pr状态,并进入步骤d3,否则,返回步骤d1,并重新等待接收p码,其中,pr表示接收到两个连续的p码;
d3、针对在pr状态下,判断当前接收到的码元值是否为p码,若是,则继续保持在pr状态,否则,进入步骤d4;
d4、针对在pr状态下,判断当前接收到的码元值是否为0或1,若是,则跳转至rdata状态,并进入步骤d5,否则,重复步骤d4;或
针对在pr状态下,判断当前接收到的码元值是否为无效码,若是,则返回步骤d1,并放弃当前数据,重新接收数据,否则,返回步骤d3,其中,rdata表示正在接受数据;
d5、针对在rdata状态下,判断当前接收到的码元值是否为两个连接的p码,若是,则返回步骤d3,重新接收数据,否则,开始进行数据接收,同时利用计数器对接收到的码元个数进行计数,并进入步骤a3。
再进一步地,所述步骤b3包括以下步骤:
e1、根据所述时间信息数据以及irig-b(dc)码准秒时沿,确定irig-b(dc)码的开始位置,开始接收数据,并进入步骤e2;
e2、将输入的时间信息数据存储至fpga内部的寄存器,并利用fpga内部的寄存器发送irig-b(dc)码,同时利用10ms计数器对发送的irig-b(dc)码的码元周期进行计数操作;
e3、根据irig-b(dc)码的赋值生成不同占空比的信号;
e4、根据不同占空比的信号以及码元周期的个数控制irig-b(dc)码的高低电平时间,完成对irig-b(dc)码的编码操作。
再进一步地,所述步骤e2中fpga内部的寄存器采用右移发送irig-b(dc)码。
本发明的有益效果:
(1)本发明通过fpga完成对irig-b(dc)码的编码、解码设计,能够实现与系统时钟信号的精确同步,当gps送入1pps信号时,fpga进行编码,输出的irig-b(dc)码暂时保存在fpga的寄存器中,当需要为外部设备提供精确的对时时钟时,fpga进行解码操作,输出irig-b(dc)码,从而去校准从设备的实时时间,使设备具有精度高的同步的时钟基准,获得精确且同步的控制效果,便于对从设备进行远程管理和监测,本发明通过以上设计,具有精度高,可移植性较好,以及设计实现比较方便的特点。
(2)本发明模拟irig-b(dc)码时序,实现对irig-b(dc)码的发送,根据输出码元的值,改变每个码元高电平与低电平的时间,从而输出不同的占空比脉冲;
(3)本发明根据gps送入的1pps信号,实现irig-b(dc)码的准秒时沿与1pps脉冲的准秒时沿对齐;
(4)本发明利用接收irig-b(dc)码串行数据,能够精确地解析出码元携带的时间信息;
(5)本发明根据接收irig-b(dc)码串行数据,能够准确地判断准秒标志并输出准秒脉冲信号。
附图说明
图1为本发明的系统结构。
图2为本发明的编码流程图。
图3为本发明中irig-b(dc)码码元值判断示意图。
图4为本发明中irig-b(dc)码解码状态示意图。
图5为本发明的解码流程图。
图6为本发明中irig-b(dc)码编码实现示意图。
图7为本发明中irig-b(dc)码生成流程图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
实施例
本发明提供了一种对irig-b(dc)码的解码和编码方法,很好的解决了irig-b(dc)码的编码、解码问题,如图1所示,包括fpga寄存器,以及分别与所述fpga寄存器连接的gps、时统设备以及cpu;
所述fpga寄存器用于根据gps输入的准秒时刻脉冲lpps以及irig-b(dc)码串行数据实现对irig-b(dc)码的编码和解码操作;
所述cpu用于系统控制,实现对fpga的访问和管理;
所述gps用于向fpga寄存器发送准秒时刻脉冲lpps以及时间信息;
所述时统设备用于向fpga寄存器发送irig-b(dc)码,以及接收fpga寄存器发送的串行的irig-b(dc)码,利用发送和接收的irig-b(dc)码校准实时时间。
本实施例中,fpga在整个系统中主要起到实现控制通路的作用,图1中,板卡上受控电源组的上下电控制,板卡上各芯片的复位控制,支持cpu的访问,接收gps卫星接收器输入时间信息和1pps秒脉冲信号,接收其他时统设备输入irig-b(dc)码,向其他时统设备发送irig-b(dc)码信号等等。
如图2所示,所述解码过程包括以下步骤:
a1、接受串行的irig-b(dc)码信号;
a2、根据所述irig-b(dc)码信号确定irig-b(dc)码的准秒位置,并根据所述准秒位置开始接收数据,其实现方法如下:
c1、对所述irig-b(dc)码信号的码元周期进行计数;
c2、利用计数器对所述irig-b(dc)码上升沿进行清零处理,并在下降沿时根据计数的值,得到当前码元的值;
c3、根据所述当前码元的值检测是否存在两个连续的p码,若是,则确定irig-b(dc)码的准秒位置,并开始进行数据接收,同时利用计数器对接收到的码元个数进行计数,并进入步骤a3,否则,返回步骤c1,其中,进行数据接收其具体为:采用fpga内部寄存器左移的方式进行数据接收;
所述步骤c3的实现方法如下:
d1、针对在idle状态下,判断当前接收到的码元值是否为p码,若是,则跳转到p0状态,并进入步骤d2,否则,返回步骤d1,其中,idle表示初始状态或空闲状态,p0表示接收到第一个p码;
d2、针对在p0状态下,判断当前接收到的码元值是否为p码,若是,则跳转至pr状态,并进入步骤d3,否则,重复步骤d1,并重新等待接收p码,其中,pr表示接收到两个连续的p码;
d3、针对在pr状态下,判断当前接收到的码元值是否为p码,若是,则继续保持在pr状态,否则,进入步骤d4;
d4、针对在pr状态下,判断当前接收到的码元值是否为0或1,若是,则跳转至rdata状态,并进入步骤d5,否则,重复步骤d4;或
针对在pr状态下,判断当前接收到的码元值是否为无效码,若是,则返回步骤d1,并放弃当前数据,重新接收数据,否则,返回步骤d3,其中,rdata表示正在接受数据;
d5、针对在rdata状态下,判断当前接收到的码元值是否为两个连接的p码,若是,则返回步骤d3,重新接收数据,否则,开始进行数据接收,同时利用计数器对接收到的码元个数进行计数,并进入步骤a3。
a3、根据irig-b(dc)码的占空比确定irig-b(dc)码的码元个数;
a4、根据所述irig-b(dc)码的码元个数,判断是否接受完所有串行的irig-b(dc)码信号,若是,则将接收到的时间信息数据保存至fpga内部的寄存器中,完成对irig-b(dc)码的解码操作,否则,返回步骤a1。
本实施例中,对输入的irig-b(dc)码的码元周期进行计数,计数器在irig-b(dc)码上升沿进行清零,在下降沿时根据计数器的值(高电平时间),得到当前码元的值。若检测到两个连续的p码,则开始进行数据接收(采用右移接收数据),同时计数器也开始计数接收到的码元个数,当接收数据完成后(计数器计数到98),输出数据。
本实施例中,如图3所示,对于irig-b(dc)码的判断,通过判断irig-b(dc)码码元的高电平时间,从而得到irig-b(dc)码的值。当检测到连续的两个p码时,开始进行bdc码数据的接收;采用寄存器右移的方式进行数据的接收,数据接收完成后,直接输出数据。数据接收状态跳转图如图4所示:
①:在idle状态下,若接收到的为p码,则跳转到p0状态;
②:在p0状态下,若接收到的不为p码,则跳转到idle状态,重新等待接收p码;
③:在p0状态下,若接收到的为p码,则跳转到pr状态;
④:在pr状态下,若接收到的为p码,则继续保持在pr状态;
⑤:在pr状态下,若接收到的为0或1码,则跳转到rdata状态,进行数据的接收;
⑥:在pr状态下,若接收到的为无效码,则跳转到idle状态,放弃当前数据,重新接收;
⑦:在rdata状态下,若接收到两个连续的p码,则跳转到pr状态,重新接收数据;
⑧:在rdata状态下,若接收到无效码,则跳转到idle状态,重新接收数据;若接收到98个数据(不加开始的连续2个p码),则跳转到idle状态,同时输出接收到的数据。
如图5所示,所述编码过程包括以下步骤:
b1、从fpga内部的寄存器中提取时间信息数据;
b1、从fpga内部的寄存器中提取时间信息数据;
b2、接收gps输入的准秒时刻脉冲lpps,产生irig-b(dc)码准秒时沿,并开始编码操作;
b3、根据所述时间信息数据以及irig-b(dc)码准秒时沿,控制irig-b(dc)码的高低电平时间,完成对irig-b(dc)码的编码操作,其实现方法如下:
e1、根据所述时间信息数据以及irig-b(dc)码准秒时沿,确定irig-b(dc)码的开始位置,开始接收数据,并进入步骤e2;
e2、将输入的时间信息数据存储至fpga内部的寄存器,并利用fpga内部的寄存器发送irig-b(dc)码,同时利用10ms计数器对发送的irig-b(dc)码的码元周期进行计数操作;
e3、根据irig-b(dc)码的赋值生成不同占空比的信号;
e4、根据不同占空比的信号以及码元周期的个数控制irig-b(dc)码的高低电平时间,完成对irig-b(dc)码的编码操作。
本实施例中,接收gps卫星接收器的1pps秒脉冲,和fpga寄存器存储的时间信息数据,模拟irig-b(dc)码时序,实现对irig-b(dc)码的发送。根据输出码元的值,改变每个码元拉低的时间,从而输出不同的占空比脉冲。
如图6所示,图6为编码模块实现方案,benc模块主要是实现对irig-b(dc)码的编码,根据1pps信号上升沿指示信号pps_emerge来确定irig-b(dc)码的开始位置。1pps信号上升沿指示信号pps_emerge有效后,将输入的irig-b(dc)数据赋值到内部的寄存器,寄存器采用右移发送,同时内部的10ms计数器开始计数。根据irig-b(dc)码的值,来生成不同占空比的信号。当发送完100bit信号后,等待1pps信号上升沿指示信号pps_emerge有效,进行下次发送。
本实施例中,irig-b(dc)码的生成如图7所示,发送过程中按照输入的irig-b(dc)码值来进行输出值的判断,但是irig-b(dc)码除了0、1码还有p码。由于p码的位置固定,因此,可以通过发送码的个数来进行判断当前发送的是否为p码。p码位置在100个irig-b(dc)码元的第1、10、20、30、40、50、60、70、80、90、100位。
本实施例中,对于每个码元,采用一个固定计数到10ms的计时器,来进行周期的计数,当10ms计数器为0时,拉高bdc_out,对于不同的码元值,通过改变bdc_out拉低的时间来改变占空比,实现对不同码元的传输。
1.一种对irig-b(dc)码的解码和编码系统,其特征在于,包括fpga寄存器,以及分别与所述fpga寄存器连接的gps、时统设备以及cpu;
所述fpga寄存器用于根据gps输入的准秒时刻脉冲lpps以及irig-b(dc)码串行数据实现对irig-b(dc)码的编码和解码操作;
所述cpu用于系统控制,实现对fpga的访问和管理;
所述gps用于向fpga寄存器发送准秒时刻脉冲lpps以及时间信息;
所述时统设备用于向fpga寄存器发送irig-b(dc)码,以及接收fpga寄存器发送的串行的irig-b(dc)码,利用发送和接收的irig-b(dc)码校准实时时间。
2.一种对irig-b(dc)码的解码和编码方法,其特征在于,包括解码过程和编码过程;
所述解码过程包括以下步骤:
a1、接受串行的irig-b(dc)码信号;
a2、根据所述irig-b(dc)码信号确定irig-b(dc)码的准秒位置,并根据所述准秒位置开始接收数据;
a3、根据irig-b(dc)码的占空比确定irig-b(dc)码的码元个数;
a4、根据所述irig-b(dc)码的码元个数,判断是否接受完所有串行的irig-b(dc)码信号,若是,则将接收到的时间信息数据保存至fpga内部的寄存器中,完成对irig-b(dc)码的解码操作,否则,返回步骤a1;
所述编码过程包括以下步骤:
b1、从fpga内部的寄存器中提取时间信息数据;
b2、接收gps输入的准秒时刻脉冲lpps,产生irig-b(dc)码准秒时沿,并开始编码操作;
b3、根据所述时间信息数据以及irig-b(dc)码准秒时沿,控制irig-b(dc)码的高低电平时间,完成对irig-b(dc)码的编码操作。
3.根据权利要求2所述的对irig-b(dc)码的解码和编码方法,其特征在于,所述步骤a2包括以下步骤:
c1、对所述irig-b(dc)码信号的码元周期进行计数;
c2、利用计数器对所述irig-b(dc)码上升沿进行清零处理,并在下降沿时根据计数的值,得到当前码元的值;
c3、根据所述当前码元的值检测是否存在两个连续的p码,若是,则确定irig-b(dc)码的准秒位置,并开始进行数据接收,同时利用计数器对接收到的码元个数进行计数,并进入步骤a3,否则,返回步骤c1。
4.根据权利要求3所述的对irig-b(dc)码的解码和编码方法,其特征在于,所述步骤c3中进行数据接收其具体为:
采用fpga内部寄存器左移的方式进行数据接收。
5.根据权利要求4所述的对irig-b(dc)码的解码和编码方法,其特征在于,所述步骤c3中开始进行数据接收包括以下步骤:
d1、针对在idle状态下,判断当前接收到的码元值是否为p码,若是,则跳转到p0状态,并进入步骤d2,否则,重复步骤d1,其中,idle表示初始状态或空闲状态,p0表示接收到第一个p码;
d2、针对在p0状态下,判断当前接收到的码元值是否为p码,若是,则跳转至pr状态,并进入步骤d3,否则,返回步骤d1,并重新等待接收p码,其中,pr表示接收到两个连续的p码;
d3、针对在pr状态下,判断当前接收到的码元值是否为p码,若是,则继续保持在pr状态,否则,进入步骤d4;
d4、针对在pr状态下,判断当前接收到的码元值是否为0或1,若是,则跳转至rdata状态,并进入步骤d5,否则,重复步骤d4;或
针对在pr状态下,判断当前接收到的码元值是否为无效码,若是,则返回步骤d1,并放弃当前数据,重新接收数据,否则,返回步骤d3,其中,rdata表示正在接受数据;
d5、针对在rdata状态下,判断当前接收到的码元值是否为两个连接的p码,若是,则返回步骤d3,重新接收数据,否则,开始进行数据接收,同时利用计数器对接收到的码元个数进行计数,并进入步骤a3。
6.根据权利要求2所述的对irig-b(dc)码的解码和编码方法,其特征在于,所述步骤b3包括以下步骤:
e1、根据所述时间信息数据以及irig-b(dc)码准秒时沿,确定irig-b(dc)码的开始位置,开始接收数据,并进入步骤e2;
e2、将输入的时间信息数据存储至fpga内部的寄存器,并利用fpga内部的寄存器发送irig-b(dc)码,同时利用10ms计数器对发送的irig-b(dc)码的码元周期进行计数操作;
e3、根据irig-b(dc)码的赋值生成不同占空比的信号;
e4、根据不同占空比的信号以及码元周期的个数控制irig-b(dc)码的高低电平时间,完成对irig-b(dc)码的编码操作。
7.根据权利要求6所述的对irig-b(dc)码的解码和编码方法,其特征在于,所述步骤e2中fpga内部的寄存器采用右移发送irig-b(dc)码。
技术总结