发明内容
有鉴于此,本申请提供一种PET单事件发生时间的测量方法和装置,以较低的成本提高时间采样精度。
具体地,本申请是通过如下技术方案实现的:
第一方面,提供一种PET单事件发生时间的测量方法,所述方法由现场可编程门阵列FPGA执行,所述FPGA用于产生多个时间基本单元,所述时间基本单元包括多个时间单位,每个时间单位用多个级联的逻辑单元构成的进位链表示;所述方法包括:
在单事件发生时产生的触发信号到达时,获取所述触发信号所在的时间基本单元中由起始时间点开始的时间单位计数结果,并根据所述计数结果得到第一时间间隔,所述第一时间间隔用于表示所述触发信号所在的时间基本单元中由起始时间点至触发信号所在的时间单位的起始时间点之间的时间长度;
获取所述触发信号所在的时间单位的进位链锁存级数,并根据所述进位链锁存级数计算第二时间间隔,所述第二时间间隔用于表示所述触发信号所在的时间单位由起始时间点至触发脉冲到达时间点之间的时间长度;
将所述第一时间间隔和第二时间间隔求和,确定为所述触发信号对应的测量时间,所述测量时间为所述触发信号所在的时间基本单元的起始时间点至触发信号到达时间点之间的时间间隔。
第二方面,提供一种PET单事件发生时间的测量装置,包括:
时钟产生模块,用于产生多个时间基本单元,所述时间基本单元包括多个时间单位,每个时间单位用多个级联的逻辑单元构成的进位链表示;
锁存结果获取模块,用于在单事件发生时产生的触发信号到达时,获取所述触发信号所在的时间基本单元中由起始时间点开始的时间单位计数结果,并获取所述触发信号所在的时间单位的进位链锁存级数;
时间计算模块,用于根据所述计数结果得到第一时间间隔,所述第一时间间隔用于表示所述触发信号所在的时间基本单元中由起始时间点至触发信号所在的时间单位的起始时间点之间的时间长度;根据所述进位链锁存级数计算第二时间间隔,所述第二时间间隔用于表示所述触发信号所在的时间单位由起始时间点至触发脉冲到达时间点之间的时间长度;将所述第一时间间隔和第二时间间隔求和,确定为所述触发信号对应的测量时间,所述测量时间为触发信号所在的时间基本单元的起始时间点至触发信号到达时间点之间的时间间隔。
本申请提供的PET单事件发生时间的测量方法和装置,通过使用进位链设计FPGA中的时间单位,并通过锁存触发信号到达时的时间单位的计数以及触发信号在时间单位中经过的进位链级数,可以通过两个时间间隔相加即得到时间标定的触发信号时间,这种方式实现的成本较低,且能够提高FPGA的时间采样精度。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在PET-CT产品的使用中,需要将含正电子核素的示踪剂注射到患者体内,示踪剂进入患者体内后会随着血液扩散到各个组织中并参与人体的代谢活动。并且,示踪剂中的正电子核素会释放出正电子e+,释放出的正电子e+在患者体内运动一段距离后,会与周围环境中的负电子e-发生湮灭,产生一对能量相等(511KeV)、传播方向相反(约180度)的γ光子,称为正电子湮灭事件。可以通过PET-CT设备的探测装置,探测γ光子对,进而分析正电子的存在,获得示踪剂在患者体内的浓度分布,进而判断病灶。
在上述过程中,涉及到光子对的探测,参见图1的示意图,简单示意了光子对探测的原理。图1示例了一个探测器环11(实际探测装置可以包括多个探测器环),该探测器环11可以包括多个探测器模块(BLOCK)12,探测器模块12中可以包括闪烁晶体和光电倍增管。如图1所示,在进行患者扫描时,患者的身体部位将位于探测器环11的环内,假设发生了一次正电子湮灭事件13,该事件产生的向相反方向运动的两个光子,分别被两个探测器模块12的晶体探测到,经过光电倍增管的处理生成脉冲信号,本实施例称为触发信号。两个触发信号可以被传输至符合处理器14进行符合判定,例如,判断两个光子打到探测器模块的时间是否在预设符合时间窗内。根据判定得到的符合光子对可以用于后续的图像重建。
在本公开实施例中,探测器环中的探测器模块Block探测到一个光子入射到一个闪烁晶体的事件,可以称为“单事件”,单事件的发生时间,也就是光子被探测到的时间。如上所述的,光子被探测到之后可以产生触发信号,通常可以测量触发信号的时间作为该单事件的发生时间,而触发信号的时间测量可以由图1中的符合处理器来执行。一个可能的实现方式中,如图1所示,符合处理器14可以包括现场可编程门阵列FPGA(Field-Programmable Gate Array),FPGA可以用于测量单事件的发生时间。本公开实施例着重提供了一种单事件发生时间的测量方法,而对于测量发生时间之后的符合判定(例如,根据两个光子对应的时间,判断是否是符合光子对),本实施例不再详述。
在光子对探测中,可能会使用到多个FPGA。结合图1所示,一个探测器环可以包括多个探测器模块BLOCK,而PET-CT设备可以有多个探测器环,因此,BLOCK的数量甚至可以达到几十个。如图2所示,示意性的,各个BLOCK21与FPGA22之间设置有传输通道23,用于BLOCK探测光子产生的触发信号24通过该通道23到达FPGA22。一个FPGA可以与几个BLOCK之间建立通道,即这几个BLOCK探测到的单事件的时间被该FPGA测量,上述几十个BLOCK可能需要使用到多个FPGA。
请继续参见图3,为了在触发信号到达FPGA时能够测量时间,FPGA可以产生多个时间基本单元,该多个时间基本单元是用于FPGA对时间进行识别,划分多个时间基本单元是将连续的时间转换成硬件识别时间的一种分段处理方法。示例性的,一个时间基本单元的长度可以为100ns。如图3示例,其中的A表示一个时间基本单元的起始时间点,图3只示例了两个时间基本单元的起始时间点A。本公开实施例中,可以利用锁相环技术将一个时间基本单元进行N等分,每一等分对应一个时间单位(如图3所示的A-A’,也是一个时钟周期),而图2中所述的BLOCK产生的触发信号到达FPGA时,实际上是到达其中一个时间基本单元的某个时间单位。
而FPGA产生的多个时间基本单元可以分别具有不同的标识,比如,一个时间基本单元用00标识,另一个时间基本单元用01标识。当触发信号到达某个时间基本单元时,要测量的该触发信号的时间,即为图3所示的时间间隔AC(C表示触发信号到达的时间点),即触发信号所在的时间基本单元的起始时间点至触发信号到达时间点之间的时间间隔。假设另一个BLOCK生成的触发信号C’也到达该时间基本单元00,该触发信号C’对应的测量时间为AC’,在进行符合判定中的时间符合条件判断时,在确定这两个触发信号所在的时间基本单元相同的基础上,可以将这两个触发信号对应的测量时间做差(t1-t2)并求绝对值,当差值绝对值在符合时间窗时,确定这两个触发信号对应的光子满足时间符合条件。
本公开实施例的单事件发生时间的测量方法,将说明如何测定触发信号所在的时间基本单元的起始时间点至触发信号到达时间点之间的时间间隔,例如,图3所示的时间间隔AC,并且时间间隔的测定具有较高的精度,能够到达几十皮秒。时间测定精度的提高,将有助于提高后续符合判定的准确性,进而提高图像重建的质量,使得PET-CT产品的性能提升。
为了实现高精度的时间测量,本公开将图3中的每个时间单位都设计为进位链的结构。图4示例了进位链的结构示意图,进位链是由多个逻辑单元41级联构成,该逻辑单元41可以是FPGA中的最小逻辑单元,例如,其延迟可以小于100皮秒,比如可以是50皮秒;或者也可以是200皮秒以内,等,用户可以根据实际需要选择不同精度等级的FPGA器件,以尽可能提高PFGA的精度。触发信号在到达时间单位时,可以是到达该进位链中的某个逻辑单元,如图4所示,触发信号是外部激励,随机产生,可能从进位链的某一个逻辑单元进入,并开始在进位链传输。假设触发信号由其中一个逻辑单元到达。该触发信号即进位链结构的开始信号,触发信号将从到达的逻辑单元开始,沿着图4中的箭头42所示的方向依次传递,直至停止信号到达时终止传输,在上述的过程中,触发信号到来时,进位链开始计数并依次传递,传递经过的逻辑单元的数量由停止信号决定,当停止信号到来时输出进位链锁存级数,即信号在进位链中传递了多少级逻辑单元。本公开通过计数器锁存触发信号在进位链中传递时经过的级数,级数即经过的逻辑单元的数量,可以称为进位链锁存级数。例如,假设进位链由10个逻辑单元级联,触发信号由第三个逻辑单元开始传递,那么最终的进位链锁存级数为八,通常停止信号会在下一个时间单位的上升沿到来。
但是,进位链的锁存结果有时是不准确的,比如,FPGA的处理过程都是以其内部时钟的边沿触发(直观看,即为方波的上升沿和下降沿)进行操作的,但是时钟的上升沿与下降沿是有其内部的建立时钟和保持时钟的。如果触发信号到来的时候正好是时钟的保持阶段,那么进位链锁存结果是正确的,如果触发信号正好是时钟的建立阶段,则出现亚稳态。也就是说,时钟本身没有建立完成,FPGA得到的进位链锁存结果是不正确的,经常以高阻的形式出现。为了保证正确获取到触发信号的进位链锁存结果,本实施例可以在检测到触发信号所在的时间单位的进位链锁存结果包括高阻信息时,识别高阻信息所在的进位链级位;将进位链级位的高阻信息更改为正常输出信息,并根据更改后的进位链锁存结果计算进位链锁存级数。
例如,仍然以十个逻辑单元级联的进位链为例,如果将每个逻辑单元对应一个级位,那么锁存结果包括十个级位,例如为0000000000;而当触发信号在某个逻辑单元进入并依次传递时,传递经过的级位将输出高位1,以触发信号由第三个逻辑单元进入进位链为例,正常情况下当下一个时钟周期的上升沿时,产生停止信号,进位链输出锁存结果为0011111111,那么根据高位的级数即为进位链锁存级数,即触发信号的传递经过的逻辑单元的数目。而如果触发信号到达第三个逻辑单元时时钟尚未建立,则该逻辑单元对应的级位结果输出高阻Z,最终的锁存结果可能为00Z1111111,那么是无法识别进位链锁存级数的。
本实施例识别到高阻所在的级位,将Z更改为正常输出信息(触发信号由该级位进入,应输出高位1),并根据更改后的进位链锁存结果得到正确的进位链锁存级数为八。而高阻所在级位的识别可以采用多种方式,例如可以通过级位输出结果轮询匹配方式。对于上述处理后得到的进位链锁存级数,可以在处理后的下一个时钟沿到来的时候进行锁存。例如,假设触发信号到达的是在某个时间单位,那就在下一个时间单位的上升沿锁存。
上述描述了每个时间单位的进位链结构的设计以及锁存结果,再次结合图3所示,一个时间基本单元中包括多个时间单位,对于某个时间单位来说,如果没有触发信号到达,那么进位链是不工作的,只有当触发信号到达时,进位链才将每级的逻辑单元的进位信号置高,依次传递触发信号,并锁存触发信号经过的逻辑单元的级数。因此,为了测量图3中示例的AC之间的时间间隔,本公开还通过另一计数器锁存触发信号到达时所在的时间基本单元中由起始时间点开始的时间单位计数结果。
结合图5的示例,以测量触发信号C对应的测量时间t1为例,该时间间隔AC可以分成两部分:AC=AB+BC,其中,AB为触发信号到达时所在的时间基本单元的起始时间点A与触发信号所在的时间单位的起始时间点B之间的时间间隔,可以称为第一时间间隔;BC是触发信号所在的时间单位的起始时间点B与触发信号到达时间点之间的时间间隔,可以称为第二时间间隔,将这两个时间间隔求和,即为本实施例要测量的AC。
其中,AB的计算方式可以为:通过一计数器获取AB之间的时间单位的计数结果,该计数结果是时间单位的数目,参见图5,AB之间的时间单位计数结果为3。假设每个时间单位的时间长度为τ(频率可以为f),那么AB之间的时间间隔为3*τ。
BC的计算方式可以为:如上所述的,触发信号到达进位链后,将开始在进位链传递,并输出一个进位链锁存级数,图5中的D表示触发信号传递的停止信号,停止信号的位置可以是检测到触发信号后的下一个时钟上升沿,得到的进位链锁存级数是触发信号在该时间单位的进位链中传递的逻辑单元的数量。而假设一个时间单位的进位链总级数是σ,进位链锁存级数是φ,并且每个逻辑单元的延迟是50ps(可以称为进位链的单位级时间长度),那么BC则计算为50*(σ-φ)。
在上述的AC=AB+BC的计算方式中,通过标定时间单位的数目,得到AB的时间间隔,而对于BC的标定采用进位链级数的锁存。这种测量方式由于只需要搭建FPGA内部时间单位长度(例如5ns)的进位链即可,可以为FPGA器件的选型提供更大的选择空间。此外,利用FPGA这种可编程的逻辑控制,在逻辑功能的实现上与固有芯片相比,开发更加灵活,而且相比高精度时间芯片,也能降低成本。
在以上的例子中,第一时间间隔和第二时间间隔,均是在计算具体的时间信息,比如,100ps;在实际实施中,时间间隔也可以用其他方式表示,例如可以用进位链的级数表示。
比如,假设一个时间基本单元的长度为100ns,每个时间单位的时间长度是5ns,每级进位链100ps,那么一个时间单位由50级进位链构成。并且假设符合判定的符合时间窗为3ns,3ns对应30级进位链级数。假定触发信号C点对应第4个时间单位的第25级进位链的位置,那么AC的长度就应该是AB+BC=3*50+25。按照这个计算方式可以得到两个触发信号分别对应的测量时间AC和AC’,都是进位链级数来表示。如果|AC-AC’|的绝对值小于30,那么这两个触发信号对应的光子对就是一对符合对,否则数据丢弃。上述的比较过程,是以进位链的级数进行比较的;当然也可以如前面提到的方法中,将进位链的级数差值再乘以进位链单位级时间长度100ps也可以。
由上述过程可以看到,本公开提供的PET单事件发生时间的测量方法,如图6所示,并不限制各步骤的执行顺序。该方法可以包括:
在步骤601中,在单事件发生时产生的触发信号到达时,获取所述触发信号所在的时间基本单元中由起始时间点开始的时间单位计数结果,并根据所述计数结果得到第一时间间隔,所述第一时间间隔用于表示所述触发信号所在的时间基本单元中由起始时间点至触发信号所在的时间单位的起始时间点之间的时间长度。
在步骤602中,获取所述触发信号所在的时间单位的进位链锁存级数,并根据所述进位链锁存级数计算第二时间间隔,所述第二时间间隔用于表示所述触发信号所在的时间单位由起始时间点至触发脉冲到达时间点之间的时间长度。
在步骤603中,将所述第一时间间隔和第二时间间隔求和,确定为所述触发信号对应的测量时间,所述测量时间为所述触发信号所在的时间基本单元的起始时间点至触发信号到达时间点之间的时间间隔。
本实施例的PET单事件发生时间的测量方法和装置,通过基于FPGA进行测量时间的确定,并且可以通过将时间单位设计为延迟小于100皮秒的逻辑单元构成的进位链结构,使得时间采样精度也能提高到100皮秒以内,比如可以达到几十皮秒,并且FPGA设计方式相对于购买市场上的高精度芯片,将大大的降低设备成本,从而实现了以较低的成本提高时间采样精度。
此外,为了使得单事件发生时间测量更加准确,本公开还考虑了FPGA对应各个BLOCK的各通道之间的锁存偏差,并对该偏差进行校正。具体的,将相同时间的测试触发信号输入各个通道对应的时间单位,此时时间单位的计数结果对于各个通道来说虽然是相同的,但是对于进位链锁存级数各通道不同,存在一定的偏差,由此,本公开在FPGA正常工作以前,对FPGA上电初始化,在同一个时间基本单元内,分别为对应各个BLOCK的时间单位加入触发信号,并分别得到各时间单位的进位链锁存级数。
正常情况下,由于向各通道实际输入触发信号的时间相同,各通道的进位链锁存级数应该是相同的,但是由于FPGA的布线不同,各时间单元的位置不同,有可能导致BLOCK产生的触发信号到达时间单元的走线长度不同,而使得进位链锁存级数不同。本实施例求出各通道的进位链锁存级数中的最大值,并将该最大值分别与各进位链锁存级数做差,得到分别对应各时间单位的偏差校正值。
本实施例可以将上述的分别对应各时间单位的偏差校正值锁存,完成对FPGA的初始化。当后续FPGA工作中得到对应各通道的进位链锁存级数后,可以通过该偏差校正值对实际采集的进位链锁存级数的实际锁存值进行补偿,确定为最终得到的进位链锁存级数。
上述的对FPGA的偏差校正,可以适用于一个FPGA内部的各个通道之间的偏差校正,也可以适用于各个FPGA之间的各通道偏差校正,原理相同。此外,本公开实施例还可以在FPGA内部指定部分区域,分布给进位链,使其在该区域内部进行布局布线,并对FPGA这部分指定的区域进行锁定。锁定的目的是使每次FPGA程序编译时,进位链都在这部分被指定的区域内进行布局布线。这样可以使得进位链在FPGA内部的位置相对固定,这样外部触发信号到达进位链的走线时间也趋于固定,再通过上面提到的通道之间的偏差校正,就能够使这部分延时误差消除掉。
为了实现上述的PET单事件发生时间的测量方法,本公开还提供了一种PET单事件发生时间的测量装置,该装置可以为FPGA。如图7所示,该装置可以包括:时钟产生模块71、锁存结果获取模块72和时间计算模块73。
时钟产生模块71,用于产生多个时间基本单元,所述时间基本单元包括多个时间单位,每个时间单位用多个级联的延迟小于100皮秒的逻辑单元构成的进位链表示;
锁存结果获取模块72,用于在单事件发生时产生的触发信号到达时,获取所述触发信号所在的时间基本单元中由起始时间点开始的时间单位计数结果,并获取所述触发信号所在的时间单位的进位链锁存级数;
时间计算模块73,用于根据所述计数结果得到第一时间间隔,所述第一时间间隔用于表示所述触发信号所在的时间基本单元中由起始时间点至触发信号所在的时间单位的起始时间点之间的时间长度;根据所述进位链锁存级数计算第二时间间隔,所述第二时间间隔用于表示所述触发信号所在的时间单位由起始时间点至触发脉冲到达时间点之间的时间长度;将所述第一时间间隔和第二时间间隔求和,确定为触发信号对应的测量时间,所述测量时间为触发信号所在的时间基本单元的起始时间点至触发信号到达时间点之间的时间间隔。
进一步的,时间计算模块73,在计算第二时间间隔时,用于将所述触发信号所在的时间单位的进位链总级数,与所述进位链锁存级数做差,得到所述第二时间间隔。
进一步的,锁存结果获取模块72,在获取所述触发信号所在的时间单位的进位链锁存级数时,用于:在检测到所述触发信号所在的时间单位的进位链锁存结果包括高阻信息时,识别所述高阻信息所在的进位链级位;将所述进位链级位的高阻信息更改为正常输出信息,并根据更改后的所述进位链锁存结果计算所述进位链锁存级数。
如图8所示,在图7所示结构的基础上,该装置还可以包括:偏差校正模块74,用于在所述触发信号到达之前,对所述各个时间单位的进位链锁存级数进行偏差校正,得到分别对应各个时间单位的偏差校正值。
锁存结果获取模块72,在获取所述触发信号所在的时间单位的进位链锁存级数时,用于:通过所述偏差校正值对所述时间单位的进位链锁存级数的实际锁存值进行补偿,确定为最终得到的所述进位链锁存级数。
进一步的,偏差校正模块74,用于在一个时间基本单元内,分别为对应探测到单事件的各个探测器模块对应的时间单位加入触发信号,并分别得到各时间单位的进位链锁存级数;根据各进位链锁存级数中的最大值与各进位链锁存级数做差,得到分别对应各时间单位的所述偏差校正值。
上述的PET单事件发生时间的测量装置中的各个模块,可以在FPGA实现,可以通过硬件或软件实现,本公开不限制其实现方式。示例性的,例如,FPGA内部可以包括很多逻辑资源(例如,逻辑单元),可以通过这些逻辑资源的排列组合实现设计者所需要的逻辑功能,比如通过内部的逻辑门电路来实现设计者的实际应用。而逻辑门电路的设定可以通过FPGA内部封装好的固有IP核,来实现加法器,乘法器(如,在方法中描述过的AB时间间隔的计算中,AB=3*τ可以使用乘法器实现)等,或者也可以自己编写所需要的组合逻辑,可以使用VHDL或Verilog语言编写FPGA的逻辑程序。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。