基于fpga的高精度dc码编码方法及系统的制作方法
【专利摘要】本发明涉及编码【技术领域】,公开了一种基于FPGA的高精度DC码编码方法及系统。该系统包括:授时模块、逻辑模块和处理模块;其中,授时模块用于输出第一脉冲信号至逻辑模块和处理模块;逻辑模块用于将接收到的第一脉冲信号进行杂波滤除,得到第二脉冲信号,并将第二脉冲信号作为DC码编码的时间基准信号和处理模块开始接收授时信息的中断信号;处理模块接收到中断信号后,通过串口开始接收授时信息,并将授时信息转换成并行授时信息发送给逻辑模块;逻辑模块以接收到的第二脉冲信号的上升沿作为起始标识,将接收到的并行授时信息转化为串行的DC码输出,其可以实现高精度的DC码编码,将编码精度精确在纳米级,提高对后端设备的授时精度。
【专利说明】基于FPGA的高精度DC码编码方法及系统
【技术领域】
[0001]本发明涉及编码【技术领域】,具体涉及基于FPGA的高精度DC码编码方法及系统。【背景技术】
[0002]IRIG-B码是专为时钟传输而制定的一种串行时钟码国际标准,同步源每秒钟输出一中贞含有秒、分、时、当前日期及年份的时钟信息,其对时较为精确,被广泛应用于时间信息传输系统中。IRIG-B码分为直流非调制码(DC码)和交流调制码(AC码),通常情况下当传输距离较远时采用AC码,距离较近时采用DC码。
[0003]图1为IRIG-B码的DC码的国际标准格式,如图1所示,每个码元宽度为10ms,一个时巾贞周期包括100个码元,PR为巾贞参考点,PO?P9为位置参考点,巾贞参考点和位置参考点的脉宽为8ms,二进制‘I’和‘0’的脉宽分别为5ms和2ms。DC码采用的是B⑶码;低位在前,高位在后;个位在前,十位在后。DC编码就是以秒脉冲(one-pulse-per-second,简称PPS)为基准,将系统输入的各种时间格式转换成图1所示的IRIG-B码的时间格式,以对其它有DC码输入接口的系统或设备进行授时。
[0004]现有技术中的DC码编码实现方法存在如下问题:在进行DC码编码的过程中,并未对输入的PPS脉冲进行杂波判决与过滤,且所采用的编码时钟频率较低,在较低频率的时钟基础上进行编码的DC码的精度就较低,从而降低了对后端设备的授时精度。
【发明内容】
[0005]针对现有技术中存在的上述缺陷,本发明所要解决的技术问题是如何实现高精度的DC码编码,将编码精度精确在纳米级,提高对后端设备的授时精度。
[0006]为解决上述技术问题,一方面,本发明提供一种基于FPGA的高精度的DC码编码系统,该系统包括:授时模块、逻辑模块和处理模块;其中,
[0007]所述授时模块用于输出第一脉冲信号至所述逻辑模块和所述处理模块;
[0008]所述逻辑模块用于将接收到的第一脉冲信号进行杂波滤除,得到第二脉冲信号,并将所述第二脉冲信号作为DC码编码的时间基准信号和处理模块开始接收授时信息的中断信号;
[0009]所述处理模块接收到所述中断信号后,通过串口开始接收授时信息,并将所述授时信息转换成并行授时信息发送给逻辑模块;
[0010]所述逻辑模块以接收到的所述第二脉冲信号的上升沿作为起始标识,将接收到的并行授时信息转化为串行的DC码输出。
[0011 ] 优选地,该系统还包括:
[0012]PPL锁相环,用于将外部输入的IOMHz时钟倍频得到IOOMHz时钟作为系统的时钟信号。
[0013]优选地,所述逻辑模块进一步包括:杂波滤除模块和DC编码模块;其中,
[0014]所述杂波滤除模块用于对所述第一脉冲信号进行杂波滤除,得到第二脉冲信号,并将所述第二脉冲信号作为DC编码的时间基准信号和处理模块接收所述授时信息的中断
信号;
[0015]所述DC编码模块用于将所述处理模块输入的并行授时信息转换成串行的DC码输出。
[0016]优选地,所述杂波滤除模块进一步包括:
[0017]第一提取单元,用于提取所述第一脉冲信号的上升沿;
[0018]长度保持单元,用于启动所述第一脉冲信号的长度计数器并保持上一个第一脉冲信号的长度;
[0019]判断单元,用于判断所述第一脉冲信号长度的有效性;
[0020]丢弃保留单元,用于丢弃或者保留所述第一脉冲信号。
[0021]优选地,所述处理模块进一步包括:
[0022]初始化模块,用于初始化系统;
[0023]检测单元,用于检测所述第一脉冲信号的上升沿;
[0024]接收单元,用于打开与授时模块间的串口开始接收所述授时信息;
[0025]第一转换单元,用于对所述授时信息进行串并转换及校正得到并行授时信息;
[0026]第一输出单元,用于输出所述并行授时信息至所述DC编码模块。
[0027]优选地,所述DC编码模块进一步包括:
[0028]第二转换单元,用于转换所述并行授时信息的格式;
[0029]第二提取单元,用于提取所述第一脉冲信号上升沿;
[0030]第三转换单元,用于启动码元宽度和码元个数计数器,根据DC编码规则将所述并行授时信息转换成DC编码输出;
[0031]第二输出单元,设置所述第一脉冲信号的占空比并延时一个时钟周期输出。
[0032]另一方面,本发明还同时提供一种基于FPGA的高精度的DC码编码方法,该方法基于上述系统,所述系统包括:授时模块、逻辑模块和处理模块,该方法包括:
[0033]所述授时模块输出第一脉冲信号至所述逻辑模块和所述处理模块;
[0034]所述逻辑模块将接收到的第一脉冲信号进行杂波滤除,得到第二脉冲信号,并将所述第二脉冲信号作为DC码编码的时间基准信号和处理模块开始接收授时信息的中断信号;
[0035]所述处理模块接收到所述中断信号后,通过串口开始接收授时信息,并将所述授时信息转换成并行授时信息发送给逻辑模块;
[0036]所述逻辑模块以接收到的所述第二脉冲信号的上升沿作为起始标识,将接收到的并行授时信息转化为串行的DC码输出。
[0037]优选地,所述方法还包括:
[0038]将外部输入的IOMHz时钟倍频得到IOOMHz时钟作为系统的时钟信号。
[0039]优选地,所述逻辑模块将接收到的第一脉冲信号进行杂波滤除具体包括:
[0040]提取所述第一脉冲信号的上升沿;
[0041]启动所述第一脉冲信号的长度计数器并保持上一个第一脉冲信号的长度;
[0042]判断所述第一脉冲信号长度的是否有效,若是,则保留所述第一脉冲信号,若否,则丢弃所述第一脉冲信号。[0043]优选地,所述处理模块接收到所述中断信号后,通过串口开始接收授时信息,并将所述授时信息转换成并行授时信息发送给逻辑模块具体包括:
[0044]初始化系统;
[0045]检测所述第一脉冲信号的上升沿;
[0046]打开与授时模块间的串口开始接收所述授时信息;
[0047]对所述授时信息进行串并转换及校正得到并行授时信息;
[0048]输出所述并行授时信息至所述逻辑模块。
[0049]本发明在硬件上没有使用CPU芯片,只采用了一片FPGA芯片,编码系统采用IOOMHz的高频时钟,使得数据处理可在较短的时间内完成,有利于提高结果数据的精度。通过在FPGA内部设计NIOS II软核模块和逻辑模块两大模块,将NIOS II软核作为CPU处理器,FPGA芯片接收前端卫星授时模块的PPS基准信号和授时信息,数据处理统一采用IOOMHz的系统时钟。逻辑模块首先对输入的PPS信号进行杂波滤除,使得时间基准信号更准确。将杂波滤除后的PPS信号作为DC编码的时间基准信号和NIOS II接收授时信息的中断信号;当NIOS II软核模块接收到该中断信号后,通过串口开始接收授时信息,并将其转换成并行授时信息发送给逻辑模块;逻辑模块以滤波后的PPS信号的上升沿为起始标志,将接收到的并行授时信息转化成图1中所示串行的DC码,最后将滤波后的PPS延时一个时钟周期与DC码对齐一起输出,经过光耦模块接到其它需要授时时间的系统或者设备上。本发明可以实现闻精度的DC码编码,将编码精度精确在纳米级,提闻对后端设备的授时精度。
【专利附图】
【附图说明】
[0050]图1为IRIG-B码的DC码的国际标准格式;
[0051]图2a为DC编码系统整体逻辑框图;
[0052]图2b为DC编码系统中杂波滤除模块的结构示意图;
[0053]图2c为DC编码系统中处理模块的结构示意图;
[0054]图2d为DC编码系统中DC编码模块的结构示意图;
[0055]图3为杂波滤除模块的逻辑状态流程图;
[0056]图4为NIOS II软核模块的逻辑状态流程图;
[0057]图5为DC编码模块的逻辑状态流程图。
【具体实施方式】
[0058]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例为实施本发明的较佳实施方式,所述描述是以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围应当以权利要求所界定者为准,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0059]现有技术中,在实现DC编码方法过程中,并未对输入的PPS时钟脉冲进行杂波判决和滤除,且所采用的编码时钟频率较低,导致在较低频率的时钟基础上进行编码获得的DC码精度降低。本发明基于FPGA芯片,通过设置包括杂波滤除模块、DC编码模块的逻辑模块对PPS时钟脉冲信号进行杂波滤除,以及通过NIOS II软核处理模块将对授时时间进行串并转换和校正,并对DC编码模块输出的PPS占空比进行设置,从而得到的DC码精度在纳秒级别,可以更精确地为具有DC码输入接口的系统或者设备进行授时。
[0060]需要说明的是,本发明中的授时模块采用的是UM220型号的BD2/GPS双系统导航/授时模块,其可输出PPS脉冲和串行的授时信息,PPS脉冲的精度优于100ns,UM220授时模块和FPGA芯片之间的授时信息通过UART串口传输。本发明的主要目的就是将UM220授时模块发出的时间信息转化成图1中的DC码标准格式,且要求DC码的精度在ns级别。
[0061]图2是实现高精度DC编码的整体逻辑框图,如图2所示,该高精度DC编码系统包括:授时模块201、逻辑模块202和处理模块203 ;其中,授时模块201用于输出第一脉冲信号至逻辑模块202和处理模块203 ;逻辑模块202用于将接收到的第一脉冲信号进行杂波滤除,得到第二脉冲信号,并将第二脉冲信号作为DC码编码的时间基准信号和处理模块203开始接收授时信息的中断信号;处理模块203接收到中断信号后,通过串口开始接收授时信息,并将授时信息转换成并行授时信息发送给逻辑模块202 ;逻辑模块202以接收到的第二脉冲信号的上升沿作为起始标识,将接收到的并行授时信息转化为串行的DC码输出。
[0062]优选地,逻辑模块202进一步包括:杂波滤除模块2021和DC编码模块2022。授时模块201优选为UM220授时模块;处理模块203优选为NIOS II软核模块。该系统还包括:PLL锁相环204,负责将外部输入的IOMHz时钟倍频得到IOOMHz时钟作为FPGA芯片的系统时钟信号。其中,杂波滤除模块2021,负责将UM220授时模块201输出的第一脉冲信号PPS脉冲进行杂波滤除,得到杂波滤除后的第二脉冲信号PPS_tmp,将滤除杂波后的第二脉冲信号PPS_tmp作为DC码的基准时间和NIOS II软核模块203开始接收UM220授时模块201的授时时间的中断信号;DC编码模块2022,负责将NIOS II软核模块203输入的并行授时时间转换成DC码格式输出;处理模块203主要实现授时时间的串并转换及校正,设置DC编码模块2022输出的PPS的占空比。
[0063]优选地,杂波滤除模块2021进一步包括:第一提取单元20211,用于提取所述第一脉冲信号的上升沿;长度保持单元20212,用于启动所述第一脉冲信号的长度计数器并保持上一个第一脉冲信号的长度;判断单元20213,用于判断所述第一脉冲信号长度的有效性;丢弃保留单元20214,用于丢弃或者保留所述第一脉冲信号;处理模块203进一步包括:初始化模块2031,用于初始化系统;检测单元2032,用于检测所述第一脉冲信号的上升沿;接收单元2033,用于打开与授时模块间的串口开始接收所述授时信息;第一转换单元2034,用于对所述授时信息进行串并转换及校正得到并行授时信息;第一输出单元2035,用于输出所述并行授时信息至所述DC编码模块;DC编码模块2022进一步包括:第二转换单元20221,用于转换所述并行授时信息的格式;第二提取单元20222,用于提取所述第一脉冲信号上升沿;第三转换单元20223,用于启动码元宽度和码元个数计数器,根据DC编码规则将所述并行授时信息转换成DC编码输出;第二输出单元20224,设置所述第一脉冲信号的占空比并延时一个时钟周期输出。
[0064]如图2所示,其中,a为对输入的PPS进行杂波滤除后的PPS ;b为PPS_out的占空比设置参数,如duty[7:0] = 8’d50,则PPS_out的占空比为50% ;c为并行授时时间,格式为:time [31:30] = 2’bO, time [29:20]=天,time [19:14]=时,time [13:7]=分,time[6:0]=秒;d为最终输出的PPS,其占空比可设;e为最终输出的IRIG_B(DC)码。由于采用的是FPGA芯片,以上各个模块间是并行关系;NIOS II软核模块相当于CPU,其内部是串行处理流程;其它三个模块均是由逻辑实现的,其内部的数据处理流程均是并行的。
[0065]本发明基于FPGA芯片,通过设置包括杂波滤除模块、DC编码模块的逻辑模块对PPS时钟脉冲信号进行杂波滤除,以及通过NIOS II软核处理模块将对授时时间进行串并转换和校正,并对DC编码模块输出的PPS占空比进行设置,从而得到的DC码精度在纳秒级别,可以更精确地为具有DC码输入接口的系统或者设备进行授时,提高为后端设备进行授时的精度。
[0066]下面结合附图3?附图5对各个子模块的【具体实施方式】进行详细说明。
[0067]图3是杂波滤除模块的逻辑状态流程图,由于上电刚开始的几秒UM220授时模块输出的PPS不正常,所以FPGA芯片在处理时要先将其滤除。主要包括以下状态:
[0068]S301:提取PPS上升沿。
[0069]具体地,由于UM220授时模块输出的PPS与FPGA的IOOMHz系统时钟并非完全同步,为避免毛刺,首先将输入的PPS时延一个时钟周期后再提取其上升沿;
[0070]S302:启动PPS长度计数器,并保存上一个PPS的长度。
[0071]具体地,当检测到PPS的上升沿后,启动PPS的长度计数器开始记录PPS的长度,同时保存上一个PPS的长度值。
[0072]S303:判断保存的PPS的长度值是否在正常范围内。
[0073]具体地,PPS周期为Is即108个IOOMHz时钟周期,由于PPS本身有最多IOOns的抖动和本地晶振时钟有最大IOOns的误差,所以FPGA检测到PPS长度在Is土200ns范围内,也即长度计数器值在108±20范围内,即为正常的PPS。
[0074]S304:当保存的PPS的长度值在108 ±20范围内时,就保留该PPS ;
[0075]S305:当保存的PPS的长度值不在108 ±20范围内时,就丢弃该PPS。
[0076]经过以上各状态处理,最后滤波后的PPS_tmp相对于输入的PPS延时了 2个时钟周期,即20ns。其中,状态S4和S5是并列关系。
[0077]图4是NIOS II软核模块的逻辑状态流程图,如图4所示,其中,系统最终输出的PPS_out的占空比设置参数duty值可在任一时刻设置或修改,所以未在该流程图中体现。其主要包括以下步骤:
[0078]S400:开始。
[0079]S401:N10S II软核模块完成开机复位、状态初始化等工作;
[0080]S402:检测 PPS_tmp 的上升沿;
[0081]S403:打开与UM220授时模块间的UART串口,开始接收授时时间。
[0082]具体地,当检测到杂波滤除模块输入的PPS_tmp的上升沿后,打开与UM220授时模块间的UART串口开始接收授时时间并进行串并转换,由于此刻的时间直到下一个PPS时刻才被转换成DC码输出,所以需将串并转换后的授时时间再加Is后输出至DC编码模块;
[0083]S404:将处理后的授时时间通过time参数输出至DC编码模块。
[0084]经过以上各步骤,NIOS II软核模块可正确地将UM220授时模块提供的串行授时时间转换成DC编码模块所需的并行授时时间。
[0085]图5是DC编码模块的逻辑状态流程图,如图5所示,该逻辑状态主要包括以下各状态:[0086]S501:将二进制time值转换成B⑶码。
[0087]具体地,首先将由NIOS II软核模块输入的并行授时时间值time转换成并行B⑶石马 time_bcd。
[0088]S502:提取 PPS_tmp 的上升沿;
[0089]S503:启动码元宽度计数器和码元个数计数器。
[0090]具体地,当检测到PPS_tmp的上升沿后,以IOOMHz时钟为标准,启动DC码的码元宽度计数器和码元个数计数器,DC码的码元宽度均为10ms,码元个数100个,所以码元宽度计数器在O?99999间循环计数,每当码元宽度计数器记到99999时,码元个数计数器就加I,这样一个PPS周期码元个数计数器的值刚好是O?99 ;
[0091]S504:按照DC码编码准则,将授时信息转换成DC码输出。
[0092]具体地,结合码元个数计数器和码元宽度计数器,以IOOMHz时钟为时间单元,根据DC码的编码准则,将NIOS II软核模块输出的并行授时时间的BCD码格式转换成DC码输出。
[0093]S505:使最终输出的PPS_out与DC码对齐。
[0094]具体地,因最终的DC码与PPS_tmp相比有IOns的延时,所以将PPS_tmp时延一个IOOMHz时钟周期,并根据输入的duty值控制占空比使得输出的PPS_out与DC码对齐。
[0095]经过以上各状态,最终输出的DC码与PPS_tmp有IOns的延时,而PPS_tmp与输入的PPS有20ns的延时,再加上PPS本身存在最大IOOns的抖动,所以最终得到的DC码的精度优于130ns,实现了纳米级的高精度DC编码。需要说明的是,其中状态S1、S2和S5是并列关系。
[0096]本发明基于FPGA芯片,通过设置包括杂波滤除模块、DC编码模块的逻辑模块对PPS时钟脉冲信号进行杂波滤除,以及通过NIOS II软核处理模块将对授时时间进行串并转换和校正,并对DC编码模块输出的PPS占空比进行设置,从而得到的DC码精度在纳秒级另O,可以更精确地为具有DC码输入接口的系统或者设备进行授时,提高为后端设备进行授时的精度。
[0097]可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
【权利要求】
1.一种基于FPGA的高精度DC码编码系统,其特征在于,包括:授时模块、逻辑模块和处理模块;其中, 所述授时模块用于输出第一脉冲信号至所述逻辑模块和所述处理模块; 所述逻辑模块用于将接收到的第一脉冲信号进行杂波滤除,得到第二脉冲信号,并将所述第二脉冲信号作为DC码编码的时间基准信号和处理模块开始接收授时信息的中断信号; 所述处理模块接收到所述中断信号后,通过串口开始接收授时信息,并将所述授时信息转换成并行授时信息发送给逻辑模块; 所述逻辑模块以接收到的所述第二脉冲信号的上升沿作为起始标识,将接收到的并行授时信息转化为串行的DC码输出。
2.如权利要求1所述的系统,其特征在于,还包括: PPL锁相环,用于将外部输入的IOMHz时钟倍频得到IOOMHz时钟作为系统的时钟信号。
3.如权利要求2所述的系统,其特征在于,所述逻辑模块进一步包括:杂波滤除模块和DC编码模块;其中, 所述杂波滤除模块用于对所述第一脉冲信号进行杂波滤除,得到第二脉冲信号,并将所述第二脉冲信号作为DC编码的时间基准信号和处理模块接收所述授时信息的中断信号; 所述DC编码模块用于将所述处理模块输入的并行授时信息转换成串行的DC码输出。
4.如权利要求3所述的系统,其特征在于,所述杂波滤除模块进一步包括: 第一提取单元,用于提取所述第一脉冲信号的上升沿; 长度保持单元,用于启动所述第一脉冲信号的长度计数器并保持上一个第一脉冲信号的长度; 判断单元,用于判断所述第一脉冲信号长度的有效性; 丢弃保留单元,用于丢弃或者保留所述第一脉冲信号。
5.如权利要求4所述的系统,其特征在于,所述处理模块进一步包括: 初始化模块,用于初始化系统; 检测单元,用于检测所述第一脉冲信号的上升沿; 接收单元,用于打开与授时模块间的串口开始接收所述授时信息; 第一转换单元,用于对所述授时信息进行串并转换及校正得到并行授时信息; 第一输出单元,用于输出所述并行授时信息至所述DC编码模块。
6.如权利要求5所述的系统,其特征在于,所述DC编码模块进一步包括: 第二转换单元,用于转换所述并行授时信息的格式; 第二提取单元,用于提取所述第一脉冲信号上升沿; 第三转换单元,用于启动码元宽度和码元个数计数器,根据DC编码规则将所述并行授时信息转换成DC编码输出; 第二输出单元,设置所述第一脉冲信号的占空比并延时一个时钟周期输出。
7.一种基于FPGA的高精度DC码编码方法,其特征在于,所述方法基于上述系统,所述系统包括:授时模块、逻辑模块和处理模块,该方法包括: 所述授时模块输出第一脉冲信号至所述逻辑模块和所述处理模块;所述逻辑模块将接收到的第一脉冲信号进行杂波滤除,得到第二脉冲信号,并将所述第二脉冲信号作为DC码编码的时间基准信号和处理模块开始接收授时信息的中断信号;所述处理模块接收到所述中断信号后,通过串口开始接收授时信息,并将所述授时信息转换成并行授时信息发送给逻辑模块; 所述逻辑模块以接收到的所述第二脉冲信号的上升沿作为起始标识,将接收到的并行授时信息转化为串行的DC码输出。
8.如权利要求7所述的方法,其特征在于,所述方法还包括: 将外部输入的IOMHz时钟倍频得到IOOMHz时钟作为系统的时钟信号。
9.如权利要求7所述的方法,其特征在于,所述逻辑模块将接收到的第一脉冲信号进行杂波滤除具体包括: 提取所述第一脉冲信号的上升沿; 启动所述第一脉冲信号的长度计数器并保持上一个第一脉冲信号的长度; 判断所述第一脉冲信号长度的是否有效,若是,则保留所述第一脉冲信号,若否,则丢弃所述第一脉冲信号。
10.如权利要求7所述的方法,其特征在于,所述处理模块接收到所述中断信号后,通过串口开始接收授时信息,并将所述授时信息转换成并行授时信息发送给逻辑模块具体包括: 初始化系统; 检测所述第一脉冲信号的上升沿; 打开与授时模块间的串口开始接收所述授时信息; 对所述授时信息进行串并转换及校正得到并行授时信息; 输出所述并行授时信息至所述逻辑模块。
【文档编号】H03K19/00GK103997331SQ201410257992
【公开日】2014年8月20日 申请日期:2014年6月11日 优先权日:2014年6月11日
【发明者】张小倩, 黄磊, 薛珊珊 申请人:四川九洲电器集团有限责任公司