原创 【博客大赛】基于FPGA的TDC那些事之数字自动校准

2013-4-19 13:26 7010 23 12 分类: FPGA/CPLD 文集: TDC

基于FPGATDC那些事之自动校准

王敏志

概述

         基于Delay LineTDC精度都会随着温度电压的变化而变化,我们知道ACAM公司的TDC有一种模拟校准的方法,而基于FPGATDC无法利用模拟的方式来进行校准,必须采用数字方式来进行校准。

 

TDCBIN

         FPGA逻辑实现的Delay Line延时单元的延时时间收敛性不是特别理想,图1是实际测量的结果,延时线上延时单元的延时时间变动范围从十几皮秒到一百七十几皮秒,故需要进行校准。

20130417141131407001.png

1

         1显示了延时线BIN具有很大DNL,并且如概述里描述的那样,上图中的BIN还会随着FPGA所处环境温度以及其供电电压的变化而变化,所以需要对BIN进行尽可能快速地校准,而且最好是实时在线地进行校准。

平均延时和BIN-by-BIN方式

    数字校准在FPGA中目前至少有两种实现方式,分别是平均延时和BIN-by-BIN方式。所谓的平均延时校准结构,简单点说就是获得图1中所有BINs的平均值,具体在FPGA中实现的方法展现在图2中。Delay Line总的延时时间长度被设计成大于一个时钟周期,所以某些HIT会被Delay Line“捕获”两次,那么两次“捕获”之间的时间间隔就正好等于一个时钟周期,而两次“捕获”之间延时单元的个数是可以知道的,即如图2中的N2-N1,那么N2-N1=Tck/τ,由此公式可以算出τ的数值,即延时单元的平均延时时间。

    实际情况下,这个N2-N1不是一个固定值,甚至有时候应该要用小数来表示,所以实际设计中τ也应当是经过多次测量得到,这样也就提供更高精度的校准。

20130417141136600002.png

2

    平均延时校准方式的优点是系统反应时间快,可以快速的对TDC系统进行校准。前面提到了,τ只表示Delay Line的延时单元的平均延时时间,所以这种方式无法提供BIN by BIN的校准,特别是每一个BIN的宽带都不一样的时候。对于我们基于FPGA的TDC强烈推荐使用基于BIN-by-BIN的校准方式,因为FPGA TDC的BIN在一个很大范围内变动。

 

TDCBINs校准到BIN的中间位置

    这其实是一个对齐的问题,所有的BIN经过校准以后,应该是以BIN的上限(某个BIN其实就是一个时间范围,所以这里有所谓的时间“上限”和“下限”的概念)对齐呢,还是以下限对齐呢,或者是以BIN的中间对齐呢?

 

我们假设所有BIN的宽度已经测量好,并且存在阵列ωk中。那么第nBIN正对其中间校准好的时间tn的公式如下所示

20130417141141500003.png                    1

需要强调的是,第一个BIN的半个BIN宽度值不能被忽略掉。上面公式右边的求和其实就是将BIN校准到BIN的边沿,加上半个BIN宽度正好校准到BIN的中间位置。校准到BIN的中间位置的好处是因为这样做的时候测量的RMS误差是最小的,只有当所有延时单元的延时时间都一样的时候,校准到边沿或者中间效果是一样的。

    实际逻辑校准就是合成LUT的过程,这个过程可以分为下面几个关键步骤

1.  第一个BIN的一半宽度成为其中间位置时间;

2.  第一个BIN的剩下的一半加上第二个BIN的一半组成了第二个BIN的中间位置时间;

3.  同样地方式获得剩下的BIN的中间位置时间。

下面给出了从DNL直方图数据中合成LUT的整个过程:

         假定直方图中地址0中的数据为Q0Q0’则为Integrate后更新到此地址的数据,也即Q0’为新LUT地址0的数据,依次类推。Dt0Integrate地址0时外部累加器产生的中间结果(其实就是在HCNT=7时累加器结果,当前写入LUT中的值是直方图的输出加上上一个地址IntegratingHCNT=7时累加器结果)以备地址1 Integrating时所需,以此类推。那么下面分解整个Integrating的过程:

Q0 + 0 = Q0’; Q0’ + Q0 = Dt0

Q1 + Dt0 = Q1’; Q1’ + Q1 = Dt1

Q2 + Dt1 = Q2’; Q2’ + Q2 = Dt2

…………………………………………

Qn-1 + Dtn-2 = Qn-1’; Qn-1’ + Qn-1 = Dtn-1

Qn + Dtn-1 = Qn’; Qn’ + Qn-1 = Dtn

那么,我们来看Qn’到底等于多少呢,也即LUT中某个地址中的数值

Qn’ = Qn + Dtn-1= Qn + Qn-1’ + Qn-1 = Qn + 2Qn-1 +Dtn-2

       = Qn + 2*Qn-1 + 2*Qn-2 + … + Q3 + Q3’

       = Qn + 2*Qn-1 + 2*Qn-2 + … + 2*Q3 + Q2 + Q2’

       = Qn + 2*Qn-1 + 2*Qn-2 + … + 2*Q3 + 2*Q2 + 2*Q1 + 2*Q0

所以

Qn’ = Qn + 2*20130417141146310004.pngQk。      2

    注意公式(2)和公式(1)其实没有分别。经过校准后的获得了很好的效果,如图3所示。

20130417141155204005.png

3

结论

    本文主要是阐述了在FPGA实现数字校准的原因,分析了数字校准的方法,推导了数字校准的过程。

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

lifengyu 2021-7-14 15:07

博主您好,我在做TDC相关的设计,您这块博文我都看了,很感谢,有很大帮助!有个问题没弄明白,BIN-by-BIN方式校准,应该是通过码密度方式测量一个bin的长度。假如我外部给FPGA TDC一个参考时钟,通过码密度方式,我怎么知道参考时钟一个周期对应多长的链呢,假如链长超过一个周期的话,一个信号会被采样两次或多次的,我怎么确定到某个bin正好是一个时钟周期呢??

coyoo 2014-12-25 08:31

第二种

用户1475633 2014-12-24 13:35

感谢你的回复! 平均延时的方法比较好理解 关键是BIN-by-BIN方式,《The 10-ps Wave Union TDC: Improving FPGA TDC Resolution beyond Its Cell Delay》文章提到两种方法:统计平均和wave union,不知楼主用的是什么方法?

coyoo 2014-12-24 09:00

1、图1的Bin图是实际测量得到; 2、具体如何测量还请查看本人其它博客。

用户1475633 2014-12-23 16:24

一些问题:1、图1 每个bin的延迟时间,这个图是怎么得到的? 2、假设BIN的宽度已经测量好,每个bin的宽度是怎么测量的?
相关推荐阅读
coyoo 2025-01-16 13:07
PET探测器
记录下PET探测器的知识点。所谓探测器,即探测出核医学里的核辐射。人体代谢等反应发生的湮没产生了伽马光子,该伽马光子的能量很强,当前很难直接探测(尽管还存在直接探测的探测器)。所以,更多的时候是间接探...
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
我要评论
5
23
关闭 站长推荐上一条 /3 下一条