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

2013-4-19 13:26 6848 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实现数字校准的原因,分析了数字校准的方法,推导了数字校准的过程。

文章评论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 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
coyoo 2024-11-10 13:04
ALTERA Cyclone 10器件的使用-7:FPGA片内RAM资源利用率思考
概述 项目使用的FPGA目标器件为Cyclone 10 GX系列规模最大一颗料,由于功能升级增加了功能模块更多,发现器件片内RAM不够使用了。为了探索片内RAM使用的利用率问题,从代码RTL级与编译软...
coyoo 2024-11-10 12:30
转知乎:幽灵般的人体成像技术-PET
幽灵般的人体成像技术——PET - 知乎...
coyoo 2024-11-09 10:26
AD9633默认情况下调试记录(二)
概述 所谓默认情况,即如器件手册中图2所标示那样。对应AD9633的调试,除了涉及到ADC自身,还需要兼顾前端驱动器,系统中AD9633驱动器使用了差分运算放大器,这里不在赘述,笔者已有相关文章论述。...
coyoo 2024-11-07 10:40
AD9633默认情况下调试记录(一)
AD9633在旁路SPI接口时如何在FPGA逻辑中确认字边界概述 AD9633与FPGA之间的LVDS接口初调试,ADC可以通过SPI接口对其内部寄存器进行各项配置。在SPI接口未调通之前,对LVDS...
我要评论
5
23
关闭 站长推荐上一条 /2 下一条