基于FPGA的IRIG-B(DC)码解码

2020-02-23 10:45发布

随着电力自动化水平的提高,电力对时间的同步要求越来越迫切、时间同步的精度要求越来越高。采用GPS全球卫星定位系统的时间同步功能,是提高电力生产和管理自动化水平、确保运行质量的一条最佳途径。国家电力公司、各大电网和省电力公司,高度重视电力系统的时间同步系统的建设,明确要求电力的生产运行系统装置采用卫星时钟进行校时。由于目前GPS接收机采用IRIG-B(DC)时间码的格式输出标准时间信息,所以本文提出了一种基于FPGA来实现的IRIG-B(DC)时间码解码设计方案。IRIG-B码简介
IRIG-B(DC)时间码(简称B码)是由IRIG所属的TCG(Telecommunication Group)制订的一种串行时间码。B码是一种串行时间码,帧长为1 s,共包含100个码元。它采用脉宽调制方式编码,共有三种宽度的码元,分别表示“0”,“1”.“P”,其中“P”为标志位,如图1所示,码元的总宽度为10 ms,“0”的脉宽为2 ms;“1”的脉宽为5 ms;“P”的脉宽为8 ms。

B码的1帧从连续两个“P”开始,其中第一个标志位为P0,第二个标志位为PR,PR的上升沿是1 s的准秒时刻,即当前帧表示的秒时刻的起点。如果规定PR所在位置为第0个码元,那么每帧分别有编号为0,1,2,…,99的码元。标志位P1,P2,P3,…,P0的位置分别在9,19,29,…,99。B码包含了当前时刻的秒,分,时,天信息和每天按秒计时的秒数(TIME OF DAY,TOD),如图2所示。

秒信息从00~59,分为“秒”和“十秒”两部分,分别使用BCD码表示。“秒”使用1,2,3,4码元,“十秒”使用6,7,8码元。分信息也是从00~59,分为“分”和“十分”,“分”使用10,11,12,13码元,“十分”使用15,16,17码元。小时信息从00~23,分为“时”和“十时”,“时”使用20,21,22,23码元,“十时”使用25,26码元。天表示的是从1月1日到当前日期的总天数,如1月1日,天数为1。天数从1~365(闰年为366),分为“天”,“十天”和“百天”三部分,“天”使用30,31,32,33码元,“十天”使用35,36,37,38码元,“百天”使用40,41码元,TOD时间使用80,81,82,83,84,85,86,87,88,90,91,92,93,94,95,96,97共17个码元,采用直接二进制表示从每天的第一秒到当前时刻的总秒数。23点59分59秒对应的TOD时间为86 399 s的IRIG-B(DC)码如图2所示。注意,秒、分、时、天、TOD表示都是低位在前,高位在后;第5、14、24、34码元为索引标志码元。另外,标志位P5到P8之间的码元为控制码元,可以根据实际使用时的协议来制订使用方法。FPGA解码方案
FPGA是现场可编程门阵列(Field ProgrammableGate Array)的简称。FPGA器件及其开发系统是开发大规模数字集成电路的新技术。在电子产品设计中有较广泛的应用。在本设计中采用的是Xilinx公司Spartan3系列中的XC3S1500芯片。它具有29952个逻辑单元,150万个门。XC 3S1500具有333个管脚,采用FG456封装,支持在线可编程。
Xilinx公司提供了支持FPGA开发的软件ISE,通过它可以进行原理图编辑,VHDL文本语言编辑,并支持这两种编辑方式的混合设计。在本设计中采用的是ISE 10.1软件。完成了设计输入并成功地进行了编译,只能说明设计符合一定的语法规范,并不能保证设计可以获得所期望的功能,这时就需要通过仿真对设计进行验证。ModelSim是业界十分优秀的语言仿真器,它提供十分友好的调试环境,仿真速度快,精度高。在本设计中采用的是ModelSim SE 6.6e。在本工程设计中采用了VHDL语言,自顶向下的设计方法,实现了工程的层次化管理。为了使得产品稳定、可靠,采用全同步设计,使整个工程都在一个时钟上升沿时刻改变状态。这样可以避免冒险和其他不定态的出现。其软件设计模块基本框图如图3所示。

全局控制模块
全局控制模块产生全局控制信号count,对其他模块进行时序管理。首先,将输入的10 MHz频率倍频到50 MHz,使得整个工程以50 MHz的频率运行。其次,判断输入的B(DC)码码元的上升沿,在码元的上升沿时刻对全局控制信号count复位,接下来在50 MHz频率的控制下全局控制信号count开始计数。count的低17比特是2.2 ms的计数器,count的第17,18比特是对B(DC)码码元采样点的标记,范围是0~3。count的第19~25比特是对B(DC)码码元的统计,范围是0~99。最后,搜索帧头的功能。对B码采样模块输出的数据进行判断,当搜索到连续两个标志位P0,PR时,则认为搜索到帧头,开始BCH译码,否则认为没有搜索到帧头,控制信号count复位,重新搜索。
B码采样模块
B码采样模块在B(DC)码码元上升沿时刻开始以2.2 ms间隔对其采样,由于B码的码元宽度为10 ms所以每个B(DC)码码元采样到四个值。‘P’码元采样到的数据是“1110”,如图4所示。同理,‘0’码元采样到的数据是“0000”,‘1’码元采样到的数据是“1100”。将采样到的值反馈给全局控制模块以便进行帧头搜索并传递给BCH译码模块。

为了防止干扰造成的抖动对输入信号造成误判,采取的修正方法是在全局控制信号count的控制下,在B(DC)码码元的每个采样点处间隔两个主钟连续采样三次.然后将这三次的采样值两两按位与,再将相与的结果相或便得到该采样点处的真实值,有效地防止了干扰造成的信号误判。BCH译码模块
BCH译码模块在控制信号count的控制下对B(DC)码采样模块输出的数据进行判断,当为“1110”时,对应的码元信息为‘P’;当为“0000”时,对应的码元信启、为‘0’;当为“1100”时,对应的码元信息为‘1’,并按照秒、分、时、天、TOD在B(DC)码中所对应的码元位置进行相应的组合。
天、时、分、秒、TOD提取模块
天、时、分、秒、TOD提取模块是将BCH译码模块中输出的数据存入天、时、分、秒、TOD寄存器中。图5是在ModelSim SE 6.6下的仿真,TOD为86 399,365天23时59分59秒分别存入了TOD、天、时、分、秒寄存器。从图5观察TOD、天、时、分、秒输出正确。

1 PPS提取模块
1 PPS提取模块是产生1 PPS信号。上电复位后能够产生高电平宽度为5 ms,周期为1 s的游离1 PPS信号,当全局控制模块搜索到帧头位置后,通过全局控制信号count来修正1 PPS信号上升沿的位置。图6是在M0delSim SE 6.6下的仿真1 PPS信号输出。观察图6可知1 PPS信号输出正确。

串口模块
串口模块是将天、时、分、秒、TOD串行输出到B(DC)码解码上位机软件。在串口模块中按照规定的组帧协议将天、时、分、秒、TOD的BCD码组帧输出。利用本厂设计生产的B(DC)码发生器输出固定时间的B(DC)码,然后用本设计方案设计试制的B(DC)码解码器解码,最后通过串口连接到PC机上进行测试。图7是B(DC)码解码上位机软件的测试结果,显示正确。

结语
传统的IRIG-B码解码器采用微处理器设计,器件较多,结构较复杂,尤其是在受到外界干扰的情况下,会出现死机等故障。而采用FPGA设计的解码器集成度高、设计灵活方便,在很大程度上解决了上述问题。
随着我国电力自动化水平的不断发展,电力生产设备的可靠性和小型化是必然的趋势。FPGA在这方面能发挥较好的作用,其应用可使电力生产设备结构更加简单紧凑,性能更加可靠、稳定。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。