Traitement en cours

Veuillez attendre...

Paramétrages

Paramétrages

Aller à Demande

1. CN109286463 - FPGA-based high-precision time measurement method

Note: Texte fondé sur des processus automatiques de reconnaissance optique de caractères. Seule la version PDF a une valeur juridique

[ ZH ]
一种基于FPGA的高精度时间测量方法


技术领域
本申请涉及时钟测量领域,具体涉及一种基于FPGA的高精度时间测量方法。
背景技术
在通信系统中,通信双方为了实现双方同步,采用同步信号传输方式,通信双方以同步信号为时间基准实现信号同步。具体而言,发送方依据同步信号周期发送信号光,接收方接收到信号光之后需要测量出信号光与同步光之间时间差,从而实现双方信号同步。
信号光之间的时间测量精度要求达到几十皮秒级测量精度。因此,现有常见的时间测量方式之一是利用FPGA内部进位链,再结合时钟计数,通过粗延时和细延时结合的方式实现时间测量。具体而言,粗延时利用时钟计数的方式就能够进行粗时间的测量,得出的时间为时钟个数n以及单个时钟周期T p 的乘积,即nT p ;细延时是将FPGA内部进位链引入到时间测量中来,主要用于解决时钟上升沿与输入信号上升沿之间的精细的时间间隔的测量,如图1所示,Start信号精细的时间间隔为T 1 ,Stop信号精细的时间间隔为T 2 ,因此测量出T 1 和T 2 再结合粗延时测量的时间,就能够完成精细的时间间隔的测量。
其中,T 1 和T 2 时间的测量原理如图2所示。具体而言,Start和Stop信号进入一串由进位链组成的延时单元中,每个进位链都有一个输出接头,接入到D触发器中,D触发器的时钟统一连接到系统工作时钟。测量的主要原理是利用进位链记录输入信号与系统时钟之间的时间差,即细延时大小,每次内部时钟上升沿到来之时,将所有的进位链的信号通过D触发器锁存起来,时钟到来之前Start信号所走过的进位链的个数,该进位链个数所代表的就是待测信号与时钟信号上升沿之间的时间差,相邻两个进位链的步进为τ。按此方法分别记录Start和Stop信号分别相对于系统内部时钟上升沿的相对时间,即图2所示的T 1 =6*τ和T 2 =9*τ,再记录Start和Stop信号之间的整周期个数,这样通过粗细结合的方式即可得到精细的时间测量结果。
但是,研究发现,当Start或Stop信号不稳定时,输出的进位链位置可能就会有偏差。以Start信号为例,如图3所示,Start信号在进位链中所到达的位置,该位置的识别有多种方式,最常规的方式是识别第一个输出值为0所对应的位置,例如当Start信号出现不稳定的情况,第一个0值出现在第七个进位链时,就会出现D触发器在第六个进位链的位置就进行了锁存,记录该位置为Start信号走过进位链的位置,输出T 1 =6*τ,而实际位置在Start信号第八个进位链上,实际应该输出T 1 =8*τ。因此,由于信号的传输过程中的不稳定因素,可能会出现1和0交替出现的情况,从而导致位置识别出错,导致测量的进位链位置与实际Start信号走过的进位链位置不符,致使测量的时间误差较大。
发明内容
本申请提供一种基于FPGA的高精度时间测量方法,以解决利用现有的时间测量方法测量的时间误差较大的问题。
一种基于FPGA的高精度时间测量方法,包括:
将Start信号的所有进位链的输出值进行求和运算,从而得到Start信号的走过进位链的个数S 1
根据S 1 ,计算时间T 1 = S 1 *τ;
将Stop信号的所有进位链的输出值进行求和运算,从而得到Stop信号的走过进位链的个数S 2
根据S 2 ,计算时间T 2 = S 2 *τ;
根据时间T 1 以及时间T 2 ,输出测量结果T=T 1 +nT p +(T p -T 2 )。
优选地,所述求和运算利用FPGA内部的加法器完成。
优选地,所述求和运算的方法利用加法树求和方法进行运算。
优选地,在进行求和运算之前,还包括信号预处理,步骤为,
将Start信号与Stop信号进行或操作,合并成一路合成信号;
利用标志信号指示合成信号的脉冲性质。
优选地,标志信号1标识合成信号中的Start信号,标志信号2标识合成信号中的Stop信号包括,
识别合成信号的上升沿;
根据上升沿以及标志信号识别出Start信号或Stop信号,其中标志信号1标识合成信号中的Start信号,标志信号2标识合成信号中的Stop信号。
优选地,当持续输入多个Stop信号时,测量每个Stop信号与Start信号之间的时间并输出测量结果。
优选地,测量每个Stop信号与Start信号之间的时间并输出测量结果包括,
当有第一个Stop信号输入时,测量出第一个Stop信号的时间T 2 ,记录Start信号与第一个Stop信号之间Tp的个数n 1 ,输出第一个时间测量结果;
当有第二个Stop信号输入时,测量出第二个Stop信号的时间T 2 ,记录Start信号与第二个Stop信号之间Tp的个数n 2 ,输出第二个时间测量结果;
以此,直至第N 个Stop信号输入时,输出测量第N个结果,其中N为正整数,记录的T p 的个数均不清零,输出每一个Stop信号与Start信号之间的时间测量结果。
由以上方案可知,本申请提供一种基于FPGA的高精度时间测量方法,包括:将Start信号的所有进位链的输出值进行求和运算,从而得到Start信号的走过进位链的个数S 1 ;根据S 1 ,计算时间T 1 = S 1 *τ;将Stop信号的所有进位链的输出值进行求和运算,从而得到Stop信号的走过进位链的个数S 2 ;根据S 2 ,计算时间T 2 = S 2 *τ;根据时间T 1 以及时间T 2 ,输出测量结果T= T 1 +nT p -T 2 。因此,通过将所有进位链的输出值进行求和运算,这样即使信号的传输过程中出现不稳定因素,出现1和0交替出现的情况,经过求和运算后,将其中出现1的进位链计算进去,从而使得计算的信号走过的进位链位置更加贴近实际走过的进位链位置,从而提高测量的时间精度。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有的时间测量的原理示意图;
图2为现有的精细的时间间隔测量的原理示意图;
图3为现有的精细的时间间隔测量误差原因的原理示意图;
图4为本申请的精细的时间间隔测量的原理示意图;
图5为本申请的信号预处理的原理示意图;
图6为本申请的一种测量流程示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请的实施例提供一种基于FPGA的高精度时间测量方法,其时间测量原理图请参阅图4所示的示意图,该方法包括:将Start信号的所有进位链的输出值进行求和运算,从而得到Start信号的走过进位链的个数S 1 ;根据S 1 ,计算时间T 1 = S 1 *τ;将Stop信号的所有进位链的输出值进行求和运算,从而得到Stop信号的走过进位链的个数S 2 ;根据S 2 ,计算时间T 2 = S 2 *τ;根据时间T 1 以及时间T 2 ,输出测量结果T= T 1 +nT p +(T p -T 2 )。
由背景技术中可知,现有的方法是直接记录信号走过进位链的个数,只有当信号稳定时,该方法才能够准确的测量时间,当信号的传输过程中出现不稳定因素时,进位链中就会出现1和0交替出现的情况,当第一个0出现时,就会认为信号的上升沿已到达,但这有可能与实际信号走过的进位链位置不符,那么实际情况信号的上升沿可能出现在不是第一个0到来之前的1的位置,从而导致测量的结果不准确。因此,本申请通过将所有进位链的输出值进行求和运算,这样即使信号的传输过程中出现不稳定因素,出现1和0交替出现的情况,经过求和运算后,将其中出现1的进位链计算进去,这样给出的信号走过的进位链位置更加靠近其实际走过的进位链位置,从而使得计算的信号走过的进位链位置更加贴近实际走过的进位链位置,也就是说时间T 1 以及时间T 2 更加与实际的时间吻合,因此提高了测量的时间精度。
此外,本申请的方法由于将所有进位链的输出值进行求和运算,在信号稳定时计算的信号走过进位链的个数与信号实际走过进位链的个数是相同的。因此,本申请的方法无论信号是稳定还是不稳定,均能够提供高精度的时间测量。
本申请方法的一种优选实施例,本申请的所述求和运算利用FPGA内部的加法器完成,因此本方法能够有效的利用内部资源,处理方式简单、高效,并且FPGA内部的加法器能够依据在400M以上的时钟情况下运行,为后续算法实现提供了基础。当然本申请方法也可以利用外部资源的加法器进行求和运算。
具体而言,所述求和运算的方法利用加法树求和方法进行运算。加法树运算原理如图4所示,所谓加法树即第一层输出的数值每两个相邻的数值相加,且一个数值只进行一次运算,完成运算后将求和过的数据依次传递到第二层;第二层输出的数值也是每两个相邻的数值相加,且一个数值只进行一次运算,完成运算后将求和过的数据依次传递到第三层;依次类推,直至只有两个数相加,输出一个求和数值为止。因此,采用加法树的方式进行运算,不仅求和运算简单、明了,而且根据第一层的运算结果,能够明确信号出现不稳定状态的位置。
本申请方法的一种优选实施例,如图5所示的示意图,在进行求和运算之前,还包括信号预处理,步骤为,将Start信号与Stop信号进行或操作,合并成一路合成信号;利用标志信号指示合成信号的脉冲性质。
对于Start信号以及Stop信号的处理,涉及到测量系统的结果,是系统设计过程中非常关键的一个步骤,处理不好就会导致信号所携带的时间信息丢失,从而直接降低测量精度甚至直接导致测量失败。最常规的思路是为Start信号以及Stop信号分别进行测量,各自得到时间T 1 以及时间T 2 ,然后再进行综合处理,这个办法的好处是处理思路很清晰,但是缺点也很明显,Start信号和Stop信号分别利用两路处理单元进行处理,这种处理方式会导致两路信号之间存在固定的系统误差,因FPGA内部的结构的差异性,走线延时也不一致,这样会导致系统的误差较大。
将两路信号在FPGA内部进行信号或的操作,变成一路合成信号,同时在Start信号和Stop信号到来是分别给出指示,标志信号1代表该脉冲为Start信号,标志信号2表示该脉冲为Stop信号,标志信号只是用来指示与它同时到达的合成信号的脉冲的性质,标志信号并不直接用于测量,只有合成信号直接用于后续测量。
在处理的时候,需要注意的是采用一个或门,将Start和Stop信号合并成一路或信号,这个或门需要在输入的Start和Stop信号的最接近的位置,由于Start和Stop信号均是由外部管脚输入的,所以这个或门的位置很重要,需要离管脚足够的近。Start和Stop信号需要分别给出一个分支接入到一个D触发器中,利用时钟对其进行采样操作,该Start、Stop信号是与时钟同步的信号,宽度是时钟的整数倍周期,在后续功能中起到的是一个判定作用,说明或信号中的脉冲对应的是由Start信号还是Stop信号。
所述Start信号或Stop信号的总延时时间大于单个时钟周期的时间T p 。换句话说,输入信号Start、Stop信号的高电平的宽度须大于一个采样周期的宽度,否则可能出现无法识别Start、Stop信号的情况,导致后续模块无法工作。
所述合成信号的脉冲与表示该脉冲性质的所述标志信号的脉冲同时到达。同时到达能够明确以及准确的表明该合成信号的脉冲是Start信号还是Stop信号。此外,输入信号Start、Stop不能存在时间上的交叠,否则无法区分输入信号,至少间隔一个周期以上。
综上所述的方案,本申请的方法采用的是同一条进位链资源,能够避免采用两条进位链分别完成Start和Stop信号测量所带来的差异性,提高时间测量的精度,避免温度变化等外界条件变化对测量精度和结果的影响。
本申请方法的一种优选实施例,所述进位链是连续的,且各进位链之间的延时是均匀的。进位链结构是整个时间测量模块的核心部件,进位链结构直接决定了时间测量精度,本申请中采用的芯片一个实例如下,该芯片的一个逻辑块内部连续进位链长度最长为50个,单个进位链时间延时约为53ps,总延时约为2650ps,故而在时钟信号选择时,需要考虑到时钟周期必须小于该延时值,故定义时钟频率为400M,对应时钟周期2500ps,这也是综合芯片性能得到的最终结果,经过实测,该芯片能够承受400M工作频率。当然位链长度以及单个进位链延时时间是由选择的芯片决定的,时钟信号选择时只要根据芯片的参数按照上述的说明选择合适的值即可。
在进位链后续紧接着是D触发器结构,当然触发器也可以选择其他器件,只要具有两个稳定状态,即"0"和"1",在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态即可。其功能是在时钟信号到达时将进位链的抽头信号进行锁存,得出其输出状态,输入信号相对于时钟信号提前到达,输入信号开始在进位链中进行传递,输入信号到达的位置则电平变为高,未到达的地方电平为低,当时钟信号到达时将50个D触发器信号锁存,计算出其中高电平的抽头的个数,即输入信号相对于该时钟上升沿的时间提前量,从而实现精细时间测量的功能,该测量的精度约为单个进位链的时间延迟量,约53ps。
位置约束是进位链结构中关键的一个环节,确保进位链的连续性,不能出现进位链分散分布的情况,确保各进位链之间的延时均匀是保证测量精度的关键点之一,另外需要确保后续D触发器与进位链的位置关系,D触发器最好紧邻进位链,处于同一个逻辑块内,避免D触发器离进位链距离不确定,从而导致延时太大,影响最终测量精度。
本申请方法的一种优选实施例,标志信号1标识合成信号中的Start信号,标志信号2标识合成信号中的Stop信号包括,识别合成信号的上升沿;根据上升沿以及标志信号识别出Start信号或Stop信号,其中标志信号1标识合成信号中的Start信号,标志信号2标识合成信号中的Stop信号。也就是说,当Start信号或Stop信号的上升沿到达时,触发器从一个稳定状态翻转到另一个稳定状态,即可识别信号上升沿,识别该上升沿之后配合标志信号即可识别出Start信号和Stop信号。
Start信号与Stop信号的识别是时间测量的关键过程之一,本方案中采用的是将Start和Stop信号合入到一路信号中,同时给出标志信号1和标志信号2,该标志信号仅用于区分Start与Stop信号,不参与后续时间测量功能。当Start信号来临时,时间标尺清零,在Stop信号来时给出其相对于Start信号的时间测量结果,如何在合信号中识别出Start信号以及Stop信号的上升沿是时间测量过程中的关键过程之一,在采取了所述的求和方法之后,由于加法器的流水线式操作,每个时钟均能给出一个求和结果,只要识别出求和结果从0到非0的跳变过程即可识别信号上升沿,识别该上升沿之后配合标志信号即可识别出Start信号和Stop信号。
本申请方法的一种优选实施例,当持续输入多个Stop信号时,测量每个Stop信号与Start信号之间的时间并输出测量结果。
连续测量是时间测量系统中的重要功能之一,在采用如上方式完成Start信号以及Stop信号的识别之后,可给出时间测量结果,为了实现连续时间测量过程,在单个Start信号识别之后,得出T 1 时间,在此期间持续记录时钟周期个数N,如果有Stop信号输入,则记录T 2 值并求出相对应的测量结果,但是时钟周期个数N不清零,以便下一个Stop值到来时再次输出测量结果值,采用此方式可实现连续测量功能。
具体而言,测量每个Stop信号与Start信号之间的时间并输出测量结果包括,当有第一个Stop信号输入时,测量出第一个Stop信号的时间T 2 ,记录Start信号与第一个Stop信号之间Tp的个数n 1 ,输出第一个时间测量结果;当有第二个Stop信号输入时,测量出第二个Stop信号的时间T 2 ,记录Start信号与第二个Stop信号之间Tp的个数n 2 ,输出第二个时间测量结果;以此,直至第N 个Stop信号输入时,输出测量第N个结果,其中N为正整数,记录的T p 的个数均不清零,输出每一个Stop信号与Start信号之间的时间测量结果。
综上所述,本申请的一种最优的实施方案的流程如图6所示,主要完成的功能是测量Start信号与Stop信号之间的时间差,精度达到几十皮秒量级,其主要采用的是FPGA内部的进位链,利用进位链之间的延时实现高精度的时间测量功能。测量过程主要涵盖了输入信号预处理、进位链测量、加法树处理、脉冲识别、数据处理、连续测量、测量结果输出等步骤。
其中测量结果输出,本申请以单个进位链时间延时约为53ps,时钟周期2500ps为例,在程序中设计计数单元,识别到Start信号之后,记录下当前的求和结果S 1 ,作为T 1 时间;在Stop信号到来之前对时钟周期进行计数,记为N,作为整周期时间T 0 ;当Stop信号识别之后,记录当前的求和结果S 2 ,作为T 2 时间;测量结果可依据如下公式计算得出:
T= T 1 +nT p +(T p -T 2 )=S 1 ×53ps+N×2500 ps +(2500 ps -S 2 ×53 ps);
其中53ps是单个进位链的平均时间标尺。
综上所述,本申请的基于FPGA的高精度时间测量方法,包括有信号预处理、进位链测量、加法树处理、脉冲识别等步骤,均能够提高测量时间的精度,因此解决了现有的时间测量方法测量的时间误差较大的问题。
以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。