FPGA实现IRIG-B(DC)码编码和解码的设计
当检测到P5时,时间信号已经检测出来,这些时间信号都放在相应的寄存器(都是BCD码的并行信号)中,当有使能信号EN时,此时将已经检测出的时间信号加1 s,并在输出1 pps信号的同时输出时间信号,这样就保证了时间的准确性,也是用10 MHz的时钟同步,然后将时间信号在监测到2个脉宽为8 ms的位置标示信号时清零。FPGA对IRIG-B码的解码仿真如图6所示。
如上图,当第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和时间信号,从而去校准从设备的实时时间,使设备具有精度高的同步的时钟基准,获得精确且同步的控制效果,便于对从设备进行远程管理和监测。
评论