基于FPGA的TDC那些事之时间信息
王敏志
概述
设计TDC的目的就是要获得HIT或者说是脉冲的时间信息,在PET系统中需要对“事件”进行符合处理,也即电子准直,其基础就是要知道每个事件的精确时间信息。本文试图阐述TDC在PET系统中应用。
为什么需要时间参考?
我们知道宏观世界的时间都有参考,比如日期是公元制,总得有个元年,即时间起始。PET系统中微观时间也一样,理想情况是有一个时间0起点。这个0点起始就是时间参考,因为PET系统中测量时间的时候一定意义上说就是一个相对时间(其实这个世界上的绝对时间只存在于理想世界里)。所以在测量事件的时间信息的时候必须需要一个时间参考,这个参考要和事件本身的“HIT”具有相同的精准度。
PET事件时间信息的组成
实际应用中,每个事件的组成包含Coarse Time和Fine Time,用TC和TF来表示,所以某个事件的时间信息就是TC+TF。TF是通过TDC测量得到,精度很高,而TC是对时钟信号进行计数,产生时钟周期分辨率的“粗时间”。
假如我们要对两个事件(事件1和事件2)进行符合判断,假设符合窗口是8ns,那么就是判别(TC1+TF1)-(TC2+TF2)是否小于8ns。如果系统中所有TDC通道位于同一片FPGA内,那么上述判决是没有问题的,因为TC值具有唯一性。而实际系统很可能单板很多,TDC通道分布在各个单板中,而最终的符合判决又是要将整个系统里所有的事件进行判决,这时候TC值就很可能在不同的单板之间会有差异,我们称这种差异叫做Coarse Time Skew。这个差异必须去除,因为一个码的误差就是4ns(如果时钟频率为250MHz)。
Coarse Time Skew产生的原因很简单,最简单的情况是比如系统上电后各个FPGA里的Coarse Counter开始计数,由于所有FPGA的上电无法保证绝对一致,所以这个Skew就产生了。通过主机控制各个FPGA的Coarse Counter何时开始计数也无法解决这个问题,因为主机发送的“启动计数”命令很可能不是同时到达各个FPGA的。
所以系统需要一个时间参考信号,我称其为START信号,这个参考是系统利用高精度时钟分配器在物理上将一个脉冲一分多给提供给每个FPGA,这样每个FPGA就有了一个几乎同时的时间参考。这里之所以用“几乎同时”是因为物理布线以及时钟分配器本身会有Skew以及jitter,由于jitter很小,飞秒级,所以本文忽略,skew是我们考虑的重点。时钟分配器的通道之间的skew一般在几十到上百皮秒,所以必须通过PET自身的校准机制进行最终校准。
有了这个时间参考信号,那么上述事件的时间信息中的TC的skew基本可以排除了,所以最终事件的时间信息表述如下:
TE=TCSTOP-TCSTART+TFSTOP-TFSTART
我们可以有两种方式处理“事件”的时间信息,首先看第一种方式。所有FPGA里的TDC通道都从START TDC通道成功“捕获”START信号后开始启动Coarse Counter计数。那么上述公式中TCSTART理论上应该为0,可以从公式中抹去,由于所有FPGA的起始时间一致,所以TFSTART也可以从公式种抹去,但是为了更好的消除Start信号之间的skew影响,建议将TFSTART放在公式里头。
第二种方式就是要保留公式中的所有项,而且系统也可以通过主机简单的给各个子系统发送Coarse Counter起始命令。虽然各个子系统收到命令的时间不一致,但是这种不一致造成的TC的Skew可以在上述公式的第一个减法的时候被去除了,因为对于同一片FPGA内部Coarse Counter的启动时间只有一个,上述公式又只是或者一个相对时间,所以只要将Start的时间测准即可。所以有了时间参考以后,没有必要要求各个FPGA完全同时启动Coarse Counter了。
结论
简单描述了PET里电子准直概念,介绍了TDC在电子准直中的应用。详细描述了PET系统事件时间信息的构成,给出了获得时间准确时间信息的方案。
文章评论(0条评论)
登录后参与讨论