CN104597748B - 一种基于fpga的时间数字变换器 - Google Patents
一种基于fpga的时间数字变换器 Download PDFInfo
- Publication number
- CN104597748B CN104597748B CN201510076290.2A CN201510076290A CN104597748B CN 104597748 B CN104597748 B CN 104597748B CN 201510076290 A CN201510076290 A CN 201510076290A CN 104597748 B CN104597748 B CN 104597748B
- Authority
- CN
- China
- Prior art keywords
- circuit
- hot
- fpga
- code
- rising edge
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000000630 rising effect Effects 0.000 claims abstract description 74
- 238000000034 method Methods 0.000 claims description 22
- 230000002123 temporal effect Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 10
- 230000009466 transformation Effects 0.000 claims description 8
- 230000008520 organization Effects 0.000 claims description 5
- 230000008707 rearrangement Effects 0.000 claims description 4
- 230000005611 electricity Effects 0.000 claims description 2
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 claims description 2
- 238000005259 measurement Methods 0.000 abstract description 41
- 230000008859 change Effects 0.000 abstract description 15
- 230000005587 bubbling Effects 0.000 abstract description 11
- 238000006243 chemical reaction Methods 0.000 abstract description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000002372 labelling Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009183 running Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004899 motility Effects 0.000 description 1
- 238000009206 nuclear medicine Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000005498 polishing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Tests Of Electronic Circuits (AREA)
Abstract
本发明公开了一种基于FPGA芯片的TDC,其包括脉冲信号发生器、多抽头的信号延迟链、触发器阵列、两个并行的信号变化沿寻找电路、并行的上升沿“one‑hot”编码电路和下降沿“one‑hot”编码电路、标定电路和变换结果输出电路。脉冲信号发生器产生一个负脉冲并馈入到信号延迟链,触发器阵列对各抽头状态进行锁存,所述抽头经重排序后,所述抽头状态被传递给两个信号变化沿寻找电路,以分别寻找该负脉冲的上升沿和下降沿,并生成对应的“one‑hot”码。本发明能够最大限度地去除延迟链上的0延迟单元,减少锁存状态温度计码中的“冒泡”现象,使测量精度、测量死时间和资源占用量这三个方面的性能指标达到合理平衡,从而能够实现高性能的TDC测量***。
Description
技术领域
本发明属于时间量的数字化测量领域,具体涉及一种基于FPGA的时间数字变换器。
背景技术
时间测量是指测量一个事件发生的时刻,或者是测量两个事件之间的时间间隔。时间测量技术在许多领域都具有重要应用,例如高能物理实验研究、核医学成像、军事和民用雷达,以及激光测距等领域都需要高精度的时间测量技术。时间数字变换器(TDC:Time-Digital-Convertor)就是一种将时间量转化为数字量以实现一个事件发生时刻的记录的功能器件。对于两个事件之间的时间间隔的测量,一般可以由两个TDC分别测量两个事件的发生时刻,两个发生时刻的差值就是该两个事件的时间间隔。目前,TDC的实现载体可分为基于ASIC(Application Specific Integrated Circuit)专用芯片和基于FPGA(FieldProgrammable Gate Array)可编程器件两种。随着FPGA技术的不断发展,单片FPGA能够提供的逻辑资源量越来越大,其可编程配置的灵活性也越来越强,FPGA已经成为数字***集成设计的平台。在此平台上,如果能够同时实现一些物理量的测量,例如时间量的测量,无疑对基于FPGA的用户特制的数据获取和处理***有重要意义。近年来,基于FPGA的TDC设计技术有很大发展,其中最重要的一种途径是利用FPGA基本逻辑资源中的进位链构成多抽头的信号传输延迟链(TDL:Tapped Delay Line),从而实现时间量的内插来提高TDC的测量精度。
基于FPGA的TDL型TDC有多种可能的具体实现方案,不同方案能够实现的TDC测量精度和测量死时间不同,单通道TDC所占用的FPGA逻辑资源量也不同。小的测量死时间可以提高TDC的测量吞吐量,少的逻辑资源占用量可以节省FPGA资源用于用户设计的数据获取和处理***的其他部分,或者可以实现单片FPGA上的多通道TDC***。然而,当前的TDC实现方案不能在提高测量精度、降低测量死时间和减少资源占用量这三个方面均得到好的指标。
为便于理解,先对利用FPGA芯片的进位链逻辑资源构成多抽头传输延迟链(TDL:Tapped Delay Line)实现时间内插,从而提高TDC测量精度的原理进行简单介绍。
事件发生时刻的数字化测量的最简单实现方法可以是用一个高速时钟计数器来实现。在被测信号到来时,记录下当时的计数器的状态,该状态就是事件发生时刻的时间测量值。该方法的TDC精度就是计数器时钟信号的周期。为了获得高测量精度,必须使用非常高的时钟频率。目前基于FPGA的最高时钟频率大约为710MHz,即最高测量精度约为1.408ns。为了提高TDC的测量精度,目前基于FPGA技术的一种常用方法是设法构造出一条由多个延迟单元联成的延迟链。该延迟链的总延迟时间要大于一个***时钟的周期,每个延迟单元的状态由抽头引出。将被测信号馈入该延迟链中传输,在每个***时钟的到来时刻同时记录下时钟计数器的状态和延迟链的状态。前者是被测信号的粗时间标记,后者是被测信号的细时间标记,将两者结合就是被测信号的精确测量结果。使用这种时间内插技术,TDC的测量精度主要取决于延迟链中延迟单元的大小和精度。目前,大多是利用FPGA算术逻辑运算资源中的进位链来构成延迟链,每一个延迟单元的长度就是对应进位链的传输延迟量。使用和进位链处于同一资源单位中的触发器可以把延迟量各抽头的状态引出,以用于后续电路对延迟量状态的编码输出。对于要求测量两个事件的时间间隔的情况,可以采用两个TDC通道,分别记录两个事件的发生时刻,二者之间的差值就是时间间隔。
发明内容
本发明旨在有效地提高TDC的测量精度的同时,减小其测量死时间和降低单个TDC通道所要占用的FPGA逻辑资源量。
为实现上述目的,本发明提出一种基于FPGA的时间数字变换器,包括粗时钟计数器、脉冲信号发生器、信号延迟链、触发器阵列、并行的信号上升沿寻找电路和下降沿寻找电路、并行的上升沿“one-hot”编码电路和下降沿“one-hot”编码电路、标定电路和变换结果输出电路,其中,所述粗时钟计数器由用于根据被测信号产生计数信号;所述脉冲信号发生器用于在被测信号的触发下产生一个负脉冲并馈入到所述信号延迟链中;所述信号延迟链用于对被测信号进行延时传输,由多个延迟单元组成,且在每个延迟单元的前端具有抽头;所述触发器阵列用于对信号延迟链的各抽头状态进行锁存,在被测信号到来的前提下,将锁存的抽头状态同时传递给所述并行的上升沿寻找电路和下降沿寻找电路;所述上升沿寻找电路和和下降沿寻找电路分别用于根据所述锁存的抽头状态寻找在信号延迟链中传输的负脉冲的上升沿和下降沿,分别生成用于表示上升沿和下降沿的位置的“one-hot”码;所述并行的上升沿“one-hot”编码电路和下降沿“one-hot”编码电路分别用于将所述表示上升沿和下降沿的位置的“one-hot”码转换为二进制码;所述标定电路用于将所述二进制码转换成时间内插值;所述变换结果输出电路用于根据所述时间内插值和所述粗时钟计数器输出的计数信号一起换算成被测信号的到来时间。
根据本发明的具体实施方式,所述触发器阵列将所述锁存的抽头状态传递给所述上升沿寻找电路和下降沿寻找电路的过程中,所述抽头经过一个重排序过程,该重排序是根据所述信号延迟链的各抽头之间的延迟量的分布结果进行的重排序。
根据本发明的具体实施方式,所述重排序的规则是:将0宽度延迟单元的抽头和下一个延迟单元的抽头位置互换。
根据本发明的具体实施方式,所述重排序过程重复多次进行,在一次调整顺序之后测量各延迟单元的延迟宽度,判断0宽度的延迟单元个数是否超过一个阈值,如果是,则再次调整顺序,直到0宽度延迟单元的个数不超过该阈值为止。
根据本发明的具体实施方式,在所述重排序的过程中采用码密度法测量各延迟单元的延迟宽度。
根据本发明的具体实施方式,所述信号上升沿寻找电路和/或下降沿寻找电路通过一个逐位移动的窗口将所述温度计码切分得到2N个窗口值,2N=n,n为延迟单元的个数,所述窗口的位宽为m,m为自然数且2≤m≤2N,并通过依序排列所述窗口值所对应的真值得到与所述温度计码对应的“one-hot”码。
根据本发明的具体实施方式,所有可能的窗口值与对应的真值之间转换的真值表存储在FPGA中的基本逻辑单元LUT中。
根据本发明的具体实施方式,当所述上升沿寻找电路用于寻找温度计码的上升沿时,在所述真值表中,只有第一位是0、其余位均为1的窗口值对应的真值为1,其余窗口值对应的真值均为0;或者,只有第一位是0、其余位均为1的窗口值对应的真值为0,其余窗口值对应的真值均为1;当所述下降沿寻找电路用于寻找温度计码的下降沿时,在所述真值表中,只有最后一位是0、其余位均为1的窗口值对应的真值为1,其余窗口值对应的真值均为0;或者,只有最后一位是0、其余位均为1的窗口值对应的真值为0,其余窗口值对应的真值均为1。
根据本发明的具体实施方式,所述上升沿“one-hot”编码电路和下降沿“one-hot”编码电路对于用“1”表示的“one-hot”码,通过计算2N-1个“one-hot”码字的逻辑“或”运算来得到二进制码的每一位的编码;对于用“0”表示的“one-hot”码,通过计算2N-1个“one-hot”码字的逻辑“与”运算来得到二进制码的每一位的编码。
根据本发明的具体实施方式,所述上升沿“one-hot”编码电路和下降沿“one-hot”编码电路利用流水线结构组合使用FPGA的LUT实现所述逻辑“或”运算或者逻辑“与”运算,流水线的每一级是一个或若干个并行的依靠LUT而实现的逻辑“或”运算或逻辑“与”运算。
根据本发明的具体实施方式,所述标定电路具有标定查找表,所述时间数字变换器还包括一个标定查找表更新电路,其用于对该标定查找表进行更新。
根据本发明的具体实施方式,所述上升沿“one-hot”编码电路和下降沿“one-hot”编码电路输出的编码相加后送给在线标定电路。
根据本发明的具体实施方式,所述标定表存储于FPGA内部的一块双端口存储器中。
根据本发明的具体实施方式,所述标定表为两个,该两个标定表乒乓工作。
本发明的TDC能够使测量精度、测量死时间和资源占用量这三个方面的性能指标达到合理平衡,从而能够实现高性能的TDC测量***,在时间测量的相关领域有重要应用价值。
附图说明
图1是本发明的TDC结构示意图;
图2为本发明的一个实施例提供的TDC***总体组成框图;
图3a为本发明所述实施例提供的延迟链抽头自然排列顺序下使用码密度法所测量得到的延迟单元宽度分布图;
图3b为本发明所述实施例提供的延迟链抽头状态重排序后使用码密度法所测量得到的延迟单元宽度分布图;
图4为本发明所述实施例提供的Kintex-7FPGA基本查找表结构示意图;
图5为本发明所述实施例提供的使用滑动窗结构寻找信号变化沿原理示意图;
图6为本发明所述实施例提供的使用流水线结构实现128位逻辑“或”运算结构示意图;
图7为本发明所述实施例提供的测量结果在线标定和标定表在线更新电路原理示意图;
图8为本发明所述实施例提供的最终双通道TDC测量时间间隔的RMS分辨率结果图。
具体实施方式
图1是本发明提供的基于FPGA的时间数字变换器的结构示意图。如图1所示,其包括粗时钟计数器、脉冲信号发生器、信号延迟链、触发器阵列、并行的信号上升沿寻找电路和下降沿寻找电路、并行的上升沿“one-hot”编码电路和下降沿“one-hot”编码电路、标定电路以及变换结果输出电路。粗时钟计数器由***时钟信号驱动,并用于根据被测信号产生计数信号。“one-hot”码就是除了其中的一个位、其他的位均相同的编码,例如…00001000…,或者…111110111…。前者也可称为由“1”表示的“one-hot”码,后者也可称为由“0”表示的“one-hot”码。
脉冲信号发生器是外触发的,其用于是在被测信号的触发下产生一个负脉冲并馈入到信号延迟链中进行传输。
信号延迟链用于对被测信号进行延时传输,其由多个延迟单元组成,且在每个延迟单元的前端具有抽头,因此信号延迟链是多抽头的信号延迟链。
触发器阵列用于在***时钟的控制下,对信号延迟链的各抽头状态进行锁存,在被测信号到来的前提下,将锁存的抽头状态同时传递给所述并行的上升沿寻找电路和下降沿寻找电路。
上升沿寻找电路和下降沿寻找电路分别用于根据所述锁存的抽头状态寻找在信号延迟链中传输的负脉冲的上升沿和下降沿,分别生成用于表示上升沿和下降沿的位置的“one-hot”码。
根据本发明,触发器阵列将所述锁存的抽头状态传递给所述上升沿寻找电路和下降沿寻找电路的过程中,所述抽头经过一个重排序(tap realignment)过程,该重排序是根据所述信号延迟链的各抽头之间的延迟量的分布结果进行的重排序,以最大限度地减小零延迟单元的数量。也就是说,利用FPGA芯片逻辑资源可编程重配置的特点,对所述触发器阵列所得到的锁存状态的原自然排列顺序进行重排序,所述上升沿和下降沿寻找电路接收该重排序的抽头状态,并在重排序的抽头状态的基础上寻找到所述负脉冲的上升沿和下降沿。
一种重排序的规则是:将0宽度延迟单元的抽头和下一个单元的抽头位置互换。该重排序过程可以重复多次进行,即:在一次调整顺序之后测量各延迟单元的延迟宽度,判断是否还存在0宽度的延迟单元,或者0宽度的延迟单元个数是否超过一个阈值,如果是,则再次调整顺序,直到0宽度延迟单元的个数满足条件为止。其中,可通过码密度法测量各延迟单元的延迟量。
为避免“冒泡”现象的干扰,本发明的上升沿寻找电路和下降沿寻找电路采用滑动窗法先将温度计码转换为一个“one-hot”码。获得与温度计码对应的“one-hot”码的过程其实就是寻找信号变化沿的过程。在此,我们设延迟单元的个数为n,n=2N,则温度计码具有2N位,所转换得到的二进制码为N位,N为自然数。
具体来说,本发明的滑动窗法首先通过一个逐位移动的窗口将所述温度计码切分得到2N个窗口值,所述窗口的位宽为m,m为自然数且2≤m≤2N,并通过依序排列所述窗口值所对应的真值得到与所述温度计码对应的“one-hot”码。
为了消除“冒泡”的影响,在此规定,当所述上升沿寻找电路用于寻找温度计码的上升沿时,只有第一位是0、其余位均为1的窗口值对应的真值为1,其余窗口值对应的真值均为0(对于由“1”表示的“one-hot”码);或者,只有第一位是0、其余位均为1的窗口值对应的真值为0,其余窗口值对应的真值均为1(对于由“0”表示的“one-hot”码);同样的道理,当所述下降沿寻找电路用于寻找温度计码的下降沿时,只有最后一位是0、其余位均为1的窗口值对应的真值为1,其余窗口值对应的真值均为0(对于由“1”表示的“one-hot”码);或者,只有最后一位是0、其余位均为1的窗口值对应的真值为0,其余窗口值对应的真值均为1(对于由“0”表示的“one-hot”码)。所有可能的窗口值与对应的真值之间的转换真值表存储在FPGA逻辑资源的LUT中。
并行的上升沿“one-hot”编码电路和下降沿“one-hot”编码电路分别用于将所述表示上升沿和下降沿的位置的“one-hot”码转换为二进制码。
所述上升沿或下降沿“one-hot”码到二进制码转换电路对于用“1”表示的“one-hot”码,通过计算2N-1个“one-hot”码字的逻辑“或”运算来得到二进制码的每一位的编码;对于用“0”表示的“one-hot”码,通过计算2N-1个“one-hot”码字的逻辑“与”运算来得到二进制码的每一位的编码。通过FPGA实现时,可利用流水线结构组合使用FPGA的LUT实现所述逻辑“或”运算或者逻辑“与”运算,流水线的每一级是一个或若干个并行的依靠LUT而实现的逻辑“或”运算或逻辑“与”运算。
标定电路用于对所述二进制码转换成时间内插值。标定电路通常具有一个标定查找表,本发明优选为还包括一个标定查找表更新电路用于对该标定查找表进行更新。
变换结果输出电路用于根据内插值和粗时钟计数器输出的计数信号一起换算成被测信号的到来时间。
可见,所述负脉冲的上升沿和下降沿在信号延迟链上的位置,是同一被测信号在一个***时钟周期内的两个时间内插标记,这两个时间标记在转换为二进制后,它们的和再经过所述标定电路的标定后成为被测信号的最终时间内插值,该内插值和所述粗时钟计数器的输出状态一起换算出被测信号的到来时间。
下面将结合说明书附图,通过对本发明的一个实施例的技术方案的描述来使本发明的特点和有益效果更加清楚、完整地。应当了解,在此所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2是本发明的一个实施例提供的TDC***总体组成框图。它包括一个负脉冲信号发生器、一条由进位链构成的TDL(Tapped Delay Line)、一个触发器阵列、两个并行运行的信号变化沿寻找电路(上升沿寻找电路和下降沿寻找电路)、两个“one-hot”码到二进制码的编码电路、在线标定电路以及标定查找表的在线更新电路,还有***时钟驱动的粗计数器和最后的变换结果输出电路。本实施例所使用的FPGA芯片是Kintex-7xc7k325t-2ffg900。
在本实施例中,FPGA的***时钟频率为710MHz,周期为1.408ns。由进位链构成的TDL的总延迟时间长度要大于一个***时钟的周期,其总抽头数小于200个,整个TDL可以完整地在利用一个时钟域内的逻辑资源来实现。这样做可以避免由于TDL跨时钟域,在两个时钟域的边界处出现较大的延迟单元。每次被测信号到来(图2中Hit信号),都会触发负脉冲发生器产生一个负脉冲,并沿着TDL传输,还控制着触发器阵列在下一个***时钟的上升沿锁存TDL的状态。该状态将送给接下来的两个并行运行的上升沿寻找电路和下降沿寻找电路,前者就是要找到负脉冲发生器产生的负脉冲在TDL状态序列中上升沿的位置,而后者就是要找出该负脉冲在TDL状态序列中下降沿的位置,二者的结果都是生成一个和状态序列相同长度的“one-hot”码,即在状态序列中信号变化沿的位置用“1”或“0”表示,而其余位置用“0”或“1”表示。
由于TDL中各延迟单元的延迟量一般是不相等的,再加上控制触发器阵列的时钟信号网络在各个触发器的时钟控制端存在Skew(即由于时钟网络传输路径长度不等等原因造成触发器锁存状态的时刻不严格同时),会造成测量得到的各个延迟单元的延迟时间宽度不等,甚至有些单元的有效宽度为0。
码密度法是常用于测量各延迟单元延迟量大小的方法,它是在外部产生一个和***时钟不相关的方波信号作为Hit信号,该信号的每个上升沿都会触发负脉冲发生器产生一个负脉冲,进行一次时间标记测量记录。由于Hit信号和***时钟信号不相关,Hit信号的到来时刻应该均匀地分布在***时钟的一个周期内。因而触发器阵列锁存下来的TDL状态,其上升沿或下降沿的位置应该等概率地分布在一个周期内。反过来,每个延迟单元测得的事例数应该和延迟单元宽度成正比,据此就可以测得各个延迟单元的延迟量宽度。
图3a是本发明所述实施例按照延迟链的原始自然顺序(即延迟连的连接顺序),利用码密度法测量得到的延迟单元宽度分布图,其横轴是抽头序号,纵轴是延迟宽度。图中看出有相当一大部分的延迟单元的有效延迟宽度为0,即这些单元从来不能独立地看到信号的变化沿。0宽度的延迟单元对获得高的时间内插分辨率不利,因为它将自己的延迟量叠加到了其它延迟单元上,造成部分单元延迟量较大,而且有效延迟单元个数减少,时间内插分辨率降低。另一方面,零宽度的延迟单元会在状态序列温度计码中产生“冒泡”。以下降沿为例,理想的状态序列应该为…11110000…,但由于零宽度的延迟单元存在,有可能会出现…11010000…的状态序列,其中第一个0就是“冒泡”,这种具有“冒泡”的状态码会造成下降沿的寻找难以实现,找到了也不准确。为了挽回这一部分造成的损失和降低变化沿寻找电路的设计难度,本发明提出在将状态序列送入变化沿寻找电路之前,将锁存状态重排序以最大限度地减少0宽度的延迟单元数。
一种重排序的规则是:根据码密度法测到的各单元延迟量分布图,将0宽度单元的抽头和下一个单元的抽头位置互换,调整顺序后再次用码密度法测量延迟单元宽度分布图(类似于图3a),如还有0宽度的延迟单元存在,就再次按上述规则调整,再次测量,再次调整,直到几乎没有或完全没有0宽度的延迟单元出现为止。至此,重排序完成,然后将触发器阵列的锁存状态按照新的顺序送给接下来的信号变化沿寻找电路。重排序之所以能够实现,是利用FPGA资源可编程和重新配置的特点完成的。
图3b是本发明实施例按上述方法重排序后测量得到的延迟单元宽度分布图,可见所有的宽度都不为0。
图3b是根据下降沿进行测试和排序调整所得到的下降沿的延迟单元宽度分布图。同样使用上升沿也可以得到几乎没有0宽度的上升沿延迟单元宽度分布图。原则上,上升沿和下降沿可以独立重排序,排序的结果分别送给对应的上升沿和下降沿寻找电路。但本实施例的实现中,没有对上升沿单独排序,而是用下降沿的排序结果直接地施加于上升沿寻找电路,这样上升沿的延迟单元宽度分布中仍然会出现一些0宽度,但其数量要比重排序以前少很多(由此导致TDC的RMS分辨率的差别已不大)。这样做的目的是后续的变化沿寻找电路设计可以更紧凑,以节省FPGA的资源耗用量。
本发明的实施例,由于被测信号触发一个负脉冲发生器,负脉冲的上升沿和下降沿同时标志着被测信号在TDL上的传输,在一条TDL上同时实现两次测量,两次测量结果的和作为最后的测量结果。这样做的好处是相对于单次测量可以得到高的测量时间分辨率。假如仅使用一次信号沿传输测量,则TDL每次被锁存的状态在理想情况下应该是一个理想的温度计码,例如如果用下降沿标志被测信号的到来,则每次锁存的状态码应该是…11110000…,即连续若干个“1”然后是连续若干个“0”,同样,如果单独用上升沿标志被测信号的到来,则TDL被锁存的状态码的形式应该为…00001111…,即若干个连续的“0”然后连续若干个“1”,这两种情况的状态码都是理想的温度计码。
本实施例采用一个负脉冲来标志被测信号的到来,TDL上被锁存的状态码具有…1111001111…,或类似的形式,其中包括一个下降沿和一个上升沿。现在这样的码字分别送给上升沿寻找电路和下降沿寻找电路,由它们分别找出上升沿和下降沿的位置,并生成一个标志其位置的“one-hot”码,然后再由“one-hot”码编码为二进制码输出。这个过程实质上等同为两个并行的由温度计码到二进制码的转换编码的基本问题,因为上升沿寻找电路只对码字中的上升沿敏感,加上下面的“one-hot”码到二进制码的转换,其作用等同于一个是由上升沿表示的温度计码到二进制码的编码转换,同样,下降沿寻找电路只对码字中的下降沿敏感,连同下面的“one-hot”码到二进制码的转换,其作用等同于一个是由下降沿表示的温度计码到二进制码的编码。由于这两套电路完全并行运行,本实施例的对其实现过程的解释完全可以理解为温度计码到二进制码的转换实现方案。
信号变化沿寻找电路和“one-hot”码到二进制码的转换电路所使用的FPGA逻辑资源都是FPGA芯片内最小逻辑资源单位中的基本查找表。目前两大主流FPGA(Xilinx和Altera)内的基本查找表资源的具体结构形式不完全相同,主要区别在基本查找表的输入最大位宽和输出信号数不同,例如本实施例所使用的Kintex-7FPGA的基本查找表结构如图4所示。它有6个输入端,2个输出端。该查找表可以被用作一个6输入查找表(6-LUT),也可以被用作2个5输入查找表(5-LUT),此时I5要被赋值为1。其它系列或其它公司的FPGA的查找表和此类似。本实施例将图4的查找表用作2个5-LUT,其中一个用于上升沿的寻找电路,另一个用作下降沿寻找电路。变化沿的寻找原理如图5所示。利用滑动窗结构并行寻找窗内是否有感兴趣的变化沿,每个滑动窗的宽度为5,它是基本查找表的输入位宽。最后一个窗的输入若不足5位,则用“1”补齐。如果一个窗内发现到了感兴趣的变化沿,该窗的输出为1,否则为0。这样所有窗的输出就将经过重排序了的TDL状态码变换为“one-hot”码。图5中用Ci表示上升沿的“one-hot”码,用Di表示下降沿的“one-hot”码,i为0或正整数。
表1.变化沿寻找电路的真值表
表1为本发明实施例提供的具有“冒泡”纠错能力的用于变化沿寻找的基本查找表的真值表,其中Ci只有在01111情况下输出才为1,其它情况均为0,Di只有在11110情况下才为1,其它情况均为0。
上述真值表的安排,使得变化沿寻找具有一定的“冒泡”容错能力,例如对于上升沿,如果出现…001001111…的码字,则第一个1不会被认为是上升沿。这就是说通过查找表的真值表赋值,变化沿寻找具有“冒泡”纠错能力。对于本实施例,最大能够纠错的情况是出现连续3个“冒泡”。这对于经过TDL状态重排序的状态码字已是足够了,因为在我们实践中,没有发现有连续两个“冒泡”情况的发生。
在本实施例的“one-hot”码中只有一个1,其余都为0,其中1的位置标明变化沿的位置(当然,也可以是只有一个0,其余都为1,其中0的位置就是变化沿的位置)。本实施例要把该“one-hot”码转化为8位的二进制码(B7,B6,B5,B4,B3,B2,B1,B0)。所采用编码算法的思路是在“one-hot”码中那些码字为1会造成二进制码中的某一个码字为1。
以B6的编码算法为例,表2为本发明实施例提供的“one-hot”码到二进制码的编码运算算法说明表。
表2.使编码输出B6=1的所有Ci情况
表2列出了能够是B6=1的所有Ci,共有128个Ci等于1的时候会使B6=1。因此B6的编码算法应该就是该128位的逻辑“或”。该128位的位置可以简单地表示为x1xxxxxx,其中x分别取值为0和1。同样,二进制码中的其他所有位都是对应128位Ci的逻辑“或”,这些128位的位置有同样的表达式,例如使B3=1的所有位在xxxx1xxx位置上。
上述编码算法的实现电路原理如图6所示。这里仍然使用基本查找表,不过这里把它用作6-LUT。利用三级流水线结构实现本实施例的编码“或”运算。其中第一级由22个6-LUT组成,共可接收132个输入,第二级有4个6-LUT,第三级只有一个6-LUT,每级之间用D触发器阵列缓冲数据。所有6-LUT的真值表都是“或”运算。最后输出的Bi表示二进制码中的一位。对于本实施例上升沿的8位二进制码,共需要上述流水线运算电路8套,它们并行运算,同样对于下降沿的8位二进制编码,也需要上述并行的流水线运算电路共8套。流水线结构使得编码运算的速度可以达到***时钟频率。
两套二进制编码电路分别输出8位内插时间标记,将它们相加后(变为9位数据)送给在线标定电路,该电路连同标定表的在线更新电路原理如图7所示。在线标定实质上是利用事先建立好的标定表进行查表得到标定值。标定表放在FPGA内部的一块双端口的存储器中。由于本实施例的***时钟为710MHz,存储器的存取速度最高为500MHz左右,我们采用两块标定表乒乓工作,每一块只需工作在355MHz的频率上(即途中的CLKx1时钟)。由于环境温度的变化会影响标定表的准确性,在一些情况下标定表还需要经常更新。图7中还示出了标定表的在线更新电路原理,对于那些被测事例到来时间和***时钟不相关的应用场合,每一个被测事例的内插时间标记都会被记录统计,即图中DNL(微分非线性)记录框图的功能,等到足够多的事例统计后,可以换算出一张新的标定表,这时将新的标定表分别写入两块双端口存储器中,作为后面到来事例的标定表。标定后的结果连同图2中所示的粗计数器,就可计算出被测事例到来的时间。
本实施例使用上述方法实现了一种高精度的TDC,使用两个相同的TDC通道可以多次测量同一个时间间隔,由测量到的结果可以计算出测量结果的RMS偏差。图8是本实施例的测量结果图,横轴是被测时间间隔,纵轴是RMS误差。RMS误差随着被测时间间隔的变化有一定范围内的波动,但最大值小于10ps。
正是由于本发明的创新实现方案,本实施例不仅具有很高的测量时间分辨率,而且TDC的测量吞吐量为***时钟频率,即每秒可平均进行710M次测量,TDC测量的死时间仅为1.408ns,更为优越的是TDC所占用的逻辑资源很少,本实施例在所用FPGA单芯片上可以实现128通道的集成度。本实施例在高性能指标要求的场合有重要应用价值。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种基于FPGA的时间数字变换器,包括粗时钟计数器、脉冲信号发生器、信号延迟链、触发器阵列、并行的信号上升沿寻找电路和下降沿寻找电路、并行的上升沿“one-hot”编码电路和下降沿“one-hot”编码电路、标定电路和变换结果输出电路,其中,
所述粗时钟计数器由用于根据被测信号产生计数信号;
所述脉冲信号发生器用于在被测信号的触发下产生一个负脉冲并馈入到所述信号延迟链中;
所述信号延迟链用于对被测信号进行延时传输,由多个延迟单元组成,且在每个延迟单元的前端具有抽头;
所述触发器阵列用于对信号延迟链的各抽头状态进行锁存,在被测信号到来的前提下,将锁存的抽头状态同时传递给所述并行的上升沿寻找电路和下降沿寻找电路;
所述上升沿寻找电路和下降沿寻找电路分别用于根据所述锁存的抽头状态寻找在信号延迟链中传输的负脉冲的上升沿和下降沿,分别生成用于表示上升沿和下降沿的位置的“one-hot”码;
所述并行的上升沿“one-hot”编码电路和下降沿“one-hot”编码电路分别用于将所述表示上升沿和下降沿的位置的“one-hot”码转换为二进制码;
所述标定电路用于将所述二进制码转换成时间内插值;
所述变换结果输出电路用于根据所述时间内插值和所述粗时钟计数器输出的计数信号一起换算成被测信号的到来时间。
2.如权利要求1所述的基于FPGA的时间数字变换器,其特征在于,所述触发器阵列将所述锁存的抽头状态传递给所述上升沿寻找电路和下降沿寻找电路的过程中,所述抽头经过一个重排序过程,该重排序是根据所述信号延迟链的各抽头之间的延迟量的分布结果进行的重排序。
3.如权利要求2所述的基于FPGA的时间数字变换器,其特征在于,所述重排序的规则是:将0宽度延迟单元的抽头和下一个延迟单元的抽头位置互换。
4.如权利要求3所述的基于FPGA的时间数字变换器,其特征在于,所述重排序重复多次进行,在一次调整顺序之后测量各延迟单元的延迟宽度,判断0宽度的延迟单元个数是否超过一个阈值,如果是,则再次调整顺序,直到0宽度延迟单元的个数不超过该阈值为止。
5.如权利要求4所述的基于FPGA的时间数字变换器,其特征在于,在所述重排序的过程中采用码密度法测量各延迟单元的延迟宽度。
6.如权利要求1所述的基于FPGA的时间数字变换器,其特征在于,所述信号上升沿寻找电路和/或下降沿寻找电路通过一个逐位移动的窗口将温度计码切分得到2N个窗口值,N为自然数,2N=n,n为延迟单元的个数,所述窗口的位宽为m,m为自然数且2≤m≤2N,并通过依序排列所述窗口值所对应的真值得到与所述温度计码对应的“one-hot”码。
7.如权利要求6所述的基于FPGA的时间数字变换器,其特征在于,所有可能的窗口值与对应的真值之间转换的真值表存储在FPGA中的基本逻辑单元LUT中。
8.如权利要求7所述的基于FPGA的时间数字变换器,其特征在于,当所述上升沿寻找电路用于寻找温度计码的上升沿时,在所述真值表中,只有第一位是0、其余位均为1的窗口值对应的真值为1,其余窗口值对应的真值均为0;或者,只有第一位是0、其余位均为1的窗口值对应的真值为0,其余窗口值对应的真值均为1;
当所述下降沿寻找电路用于寻找温度计码的下降沿时,在所述真值表中,只有最后一位是0、其余位均为1的窗口值对应的真值为1,其余窗口值对应的真值均为0;或者,只有最后一位是0、其余位均为1的窗口值对应的真值为0,其余窗口值对应的真值均为1。
9.如权利要求1所述的基于FPGA的时间数字变换器,其特征在于,所述上升沿“one-hot”编码电路和下降沿“one-hot”编码电路对于用“1”表示的“one-hot”码,通过计算2N-1个“one-hot”码字的逻辑“或”运算来得到二进制码的每一位的编码;对于用“0”表示的“one-hot”码,通过计算2N-1个“one-hot”码字的逻辑“与”运算来得到二进制码的每一位的编码。
10.如权利要求9所述的基于FPGA的时间数字变换器,其特征在于,所述上升沿“one-hot”编码电路和下降沿“one-hot”编码电路利用流水线结构组合使用FPGA的LUT实现所述逻辑“或”运算或者逻辑“与”运算,流水线的每一级是一个或若干个并行的依靠LUT而实现的逻辑“或”运算或逻辑“与”运算。
11.如权利要求1所述的基于FPGA的时间数字变换器,其特征在于,所述标定电路具有标定查找表,所述时间数字变换器还包括一个标定查找表更新电路,其用于对该标定查找表进行更新。
12.如权利要求11所述的基于FPGA的时间数字变换器,其特征在于,所述上升沿“one-hot”编码电路和下降沿“one-hot”编码电路输出的编码相加后送给标定电路。
13.如权利要求12所述的基于FPGA的时间数字变换器,其特征在于,所述标定查找表存储于FPGA内部的一块双端口存储器中。
14.如权利要求13所述的基于FPGA的时间数字变换器,其特征在于,所述标定查找表为两个,该两个标定查找表乒乓工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510076290.2A CN104597748B (zh) | 2015-02-12 | 2015-02-12 | 一种基于fpga的时间数字变换器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510076290.2A CN104597748B (zh) | 2015-02-12 | 2015-02-12 | 一种基于fpga的时间数字变换器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104597748A CN104597748A (zh) | 2015-05-06 |
CN104597748B true CN104597748B (zh) | 2017-05-03 |
Family
ID=53123614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510076290.2A Expired - Fee Related CN104597748B (zh) | 2015-02-12 | 2015-02-12 | 一种基于fpga的时间数字变换器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104597748B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111123687A (zh) * | 2020-01-16 | 2020-05-08 | 中国科学技术大学 | 一种时间测量方法及*** |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068405B (zh) * | 2015-08-28 | 2017-10-03 | 中国科学技术大学 | Fpga实现的单通道信号脉宽高精度测量方法和装置 |
CN105204319B (zh) * | 2015-10-12 | 2018-08-21 | 沈阳东软医疗***有限公司 | 一种pet单事件发生时间的测量方法和装置 |
WO2017108193A1 (en) * | 2015-12-23 | 2017-06-29 | MAX-PLANCK-Gesellschaft zur Förderung der Wissenschaften e.V. | Efficient and dependable clock synchronization in hardware |
EP3407145B1 (en) * | 2016-01-18 | 2024-05-01 | University of Science and Technology of China | Fpga-based square-wave generator and square-wave generation method |
CN107908097B (zh) * | 2017-11-13 | 2019-12-03 | 中国电子科技集团公司第四十一研究所 | 采用混合内插级联结构的时间间隔测量***及测量方法 |
CN108061848B (zh) * | 2017-12-06 | 2019-12-10 | 武汉万集信息技术有限公司 | 基于fpga的加法进位链延时的测量方法及*** |
CN109101075B (zh) * | 2018-09-26 | 2020-04-21 | 上海星秒光电科技有限公司 | 时间标签生成装置及方法 |
CN110034761B (zh) * | 2019-03-29 | 2020-10-27 | 西安交通大学 | 压控振荡器型模数转换器数字输出转二进制码的编码电路 |
CN110262209B (zh) * | 2019-06-03 | 2020-06-26 | 中国科学技术大学 | 基于fpga的时间数字变换器 |
CN112578661A (zh) * | 2020-12-11 | 2021-03-30 | 天津大学 | 一种用于fpga型时间数字转换器的延迟线校准电路 |
CN112284429B (zh) * | 2020-12-31 | 2021-03-26 | 深圳煜炜光学科技有限公司 | 一种激光雷达码盘均匀度校正的方法和装置 |
CN113176451B (zh) * | 2021-04-22 | 2023-08-15 | 浙江威星智能仪表股份有限公司 | 一种基于查表法的脉冲信号检测方法 |
CN113376513B (zh) * | 2021-08-13 | 2021-10-26 | 绅克半导体科技(苏州)有限公司 | 延时测量电路、同步信号补偿装置及ic测量装置 |
CN114326358B (zh) * | 2021-12-20 | 2024-05-17 | 中国科学院上海光学精密机械研究所 | 一种多链并行分割高精度fpga时间数字转换方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1719353A (zh) * | 2005-06-21 | 2006-01-11 | 中国科学技术大学 | 基于fpga的时间数字转换器及其转换方法 |
US20090128322A1 (en) * | 2007-03-26 | 2009-05-21 | Infineon Technologies Ag | Time delay circuit and time to digital converter |
CN101976036A (zh) * | 2010-07-30 | 2011-02-16 | 西安电子科技大学 | 基于专用可编程输入输出延迟单元的短时间间隔测量方法 |
CN102638264A (zh) * | 2012-04-26 | 2012-08-15 | 中国科学院微电子研究所 | 一种实现数据加权平均算法的*** |
CN102736511A (zh) * | 2011-04-06 | 2012-10-17 | 中国科学院高能物理研究所 | 时间测量***及时间测量方法 |
US20130207824A1 (en) * | 2011-08-19 | 2013-08-15 | Richard Waters | Time domain switched analog-to-digital converter apparatus and methods |
-
2015
- 2015-02-12 CN CN201510076290.2A patent/CN104597748B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1719353A (zh) * | 2005-06-21 | 2006-01-11 | 中国科学技术大学 | 基于fpga的时间数字转换器及其转换方法 |
US20090128322A1 (en) * | 2007-03-26 | 2009-05-21 | Infineon Technologies Ag | Time delay circuit and time to digital converter |
CN101976036A (zh) * | 2010-07-30 | 2011-02-16 | 西安电子科技大学 | 基于专用可编程输入输出延迟单元的短时间间隔测量方法 |
CN102736511A (zh) * | 2011-04-06 | 2012-10-17 | 中国科学院高能物理研究所 | 时间测量***及时间测量方法 |
US20130207824A1 (en) * | 2011-08-19 | 2013-08-15 | Richard Waters | Time domain switched analog-to-digital converter apparatus and methods |
CN102638264A (zh) * | 2012-04-26 | 2012-08-15 | 中国科学院微电子研究所 | 一种实现数据加权平均算法的*** |
Non-Patent Citations (2)
Title |
---|
一种基于TDC的时间间隔测量方法的研究;罗尊旺;《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》》;20090731(第07(2009)期);全文 * |
一种多量程高速A/D转换器的设计;李琪林;《中国优秀硕士论文全文数据库 信息科技辑》;20130731(第7(2013)期);全文 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111123687A (zh) * | 2020-01-16 | 2020-05-08 | 中国科学技术大学 | 一种时间测量方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN104597748A (zh) | 2015-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104597748B (zh) | 一种基于fpga的时间数字变换器 | |
CN104614976B (zh) | 一种基于fpga的时间数字变换器 | |
CN106019923B (zh) | 一种基于fpga的时间数字变换器 | |
CN100468234C (zh) | 基于fpga的时间数字转换器及其转换方法 | |
WO2016127357A1 (zh) | 一种基于fpga的时间数字变换器 | |
CN205080373U (zh) | 一种基于延迟线内插法的精密时间间隔测量电路 | |
CN104333365B (zh) | 一种三段式时间数字转换电路 | |
CN107037721A (zh) | 一种自修正型时间数字转换器 | |
CN103516367B (zh) | 一种时间数字转换器 | |
CN103092059B (zh) | 基于反熔丝fpga的时间数字转换器及其温度漂移修正方法 | |
CN110262209A (zh) | 基于fpga的时间数字变换器 | |
CN103208994A (zh) | 一种两段式时间数字转换电路 | |
CN202362380U (zh) | 一种多功能高精度数字频率计 | |
CN105718404A (zh) | 一种基于fpga的方波发生器及方法 | |
CN103063917A (zh) | 高精度相位和频率测量*** | |
CN105763196A (zh) | 一种延迟内插型时间数字转换器 | |
CN110069009A (zh) | 多通道时间数字转换器和光电探测装置 | |
CN106444345A (zh) | 时间测量电路、方法和测量设备 | |
CN106066599B (zh) | 用于三维激光扫描仪的精密时间测量*** | |
CN104579352B (zh) | 基于fpga的温度计码到二进制码的编码转换装置和方法 | |
CN111142357B (zh) | 时间数字转换器延迟链内插的多沿变位置编码方法 | |
CN102916691B (zh) | 基于可逆逻辑的bcd码十进制计数器 | |
Yu et al. | Approximate divider design based on counting-based stochastic computing division | |
Matsenko et al. | Noise immunity of the fibonacci counter with the fractal decoder device for telecommunication systems | |
CN109725196A (zh) | 一种频率计及测量占空比和频率的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170503 |