一种基于FPGA的48通道高精度时间测量系统
2023-03-11周二瑞杨少华李斌康郭明安
周二瑞,李 刚,杨少华,李斌康,严 明,刘 璐,郭明安
(强脉冲辐射环境模拟与效应全国重点实验室;西北核技术研究所:西安710024)
高精度时间测量在高能物理实验和核医学成像等领域有着广泛应用[1-5]。高精度时间测量既可使用专用集成电路(application specific integrated circuit,ASIC)芯片实现,也可使用现场可编程逻辑门阵列(field programmable gate array,FPGA)实现。使用ASIC芯片可达到更高的时间测量精度、更高的能效及更优的面积效率,但开发周期长、开发成本高,不利于快速迭代与应用[6-9]。使用FPGA实现具有开发周期短、开发成本低、易移植及可大规模扩展的优点,随着FPGA工艺的发展,能达到的时间测量精度也越来越高[10-17]。
利用FPGA实现时间测量的主流方法有进位链法和时钟相移法。FPGA中具有丰富的进位链资源,可形成高精度时间测量所需的延迟线,使用进位链实现是研究的一个重要方向。Wang等[12]基于Kintex-7 FPGA,使用多边沿检测方法实现了均方根(root mean square,RMS)精度为3.0 ps,采样率为277 MHz的时间数字转换器。Song等[13]基于Kintex-7 FPGA,使用时间抽样结构实现了RMS精度为5.3 ps,采样率为350 MHz的时间数字转换器。Kuang等[14]使用环形振荡器多次测量结构基于Kintex-7 FPGA实现了RMS精度为5.76 ps的时间数字转换器。张孟翟等[15]基于Kintex-7 FPGA进位链设计了一款RMS精度为36.8 ps的8通道时间数字转换器。王巍等[16]基于Virtex-5 FPGA进行布局布线,优化实现了RMS精度为25 ps的时间数字转换器。
使用进位链进行时间测量虽可获得高时间精度,但易受温度等因素的影响,而使用时钟相移法进行时间测量则不易受这些因素的影响。Palani等[17]提出了一种面积高效的时间数字转换器,该方法使用寄存器时钟相移法和多种温度计码编码方法,时间精度为2.2 ns且受温度变化影响很小。Sano等[18]基于4相时钟采样在Kintex-7 FPGA上实现了时间分辨率为0.28 ns的时间数字转换器。王巍等[19]基于16相时钟采样在Virtex-5 FPGA上实现了RMS精度为64 ps的时间数字转换器,且资源使用率更高。
本文提出一种基于FPGA的48通道高精度时间测量系统。该测量系统在PC端对温度计码进行处理,设计了基于对数取整的温度计码时间转换方法。系统的每个输入通道都具有阈值可编程设置,一方面能实现不同阈值下脉冲时间的测量,另一方面可多通道对多脉冲同时测量实现多脉冲时间关联,还可多通道多阈值同时对一个脉冲测量实现对脉冲形状的绘制。系统使用粗粒度与细粒度结合的方式进行时间测量,使用4相800 MHz时钟进行细粒度时间测量,使用100 MHz时钟进行粗粒度时间测量。该系统还具有远程传输功能,因此该系统可用于远程多通道多阈值时间测量等应用中,如高能物理实验中的辐射探测等。
1 时间测量
本文的时间测量系统采用粗粒度与细粒度测量结合的方式进行时间测量,图1为时间测量示意图。图1中,Fine time为温度计码,表示细粒度时间;黑色虚线框为细粒度测量模块。粗粒度测量使用二进制计数器实现,可达到很大的时间量程。与文献中微秒或毫秒量级的时间量程相比,本文的时间测量系统在100 MHz时钟下量程可达到10 min,能满足大量程应用的需求。细粒度测量使用4相时钟(0°,90°,180°,270°)实现,时钟频率为800 MHz。由于粗粒度测量和细粒度测量的时钟频率差8倍,因此细粒度测量的传播链上有8级寄存器。4相时钟和8级寄存器将一个粗粒度时钟周期分为32份,则理论上细粒度测量的时间分辨率可达312.5 ps,若增加时钟的相位数则可获得更高的时间分辨率。在每个粗粒度时钟的上升沿分别对细粒度传播链的寄存器和粗粒度二进制计数器进行采样,若检测到输入则将采样值存入通道buffer中。
图1 时间测量示意图
1.1 温度计码产生
实现细粒度测量的关键是获取每相时钟下的温度计码。寄存器在细粒度时钟上升沿对输入进行采样并向下传播,当输入为低电平时,寄存器的采样值为0,当输入为高电平时,寄存器的采样值为1。在粗粒度时钟的上升沿对每条传播链上的8个寄存器进行采样,获得温度计码,图2为温度计码产生示意图。
图2 温度计码产生示意图
1.2 温度计码时间转换
获得温度计码后需将其转换成时间。大部分时间数字转换器直接在FPGA内实现温度计码到二进制数的转换,为此要设计相应的转换电路。由于温度计码在采样时易产生“气泡”问题,还需设计除“气泡”电路。当温度计码无须在FPGA内直接转换成二进制数时,则可在PC端采取更灵活的转换方式。本文的时间测量系统在PC端通过对数取整法实现对温度计码的时间转换。当温度计码中存在“气泡”时,正常的“00011111”可能会变成“00010111”等形式,但实现正确转换的关键是找到最高位的“1”。对数取整法可表示为
(1)
其中:Bn为温度计码中最高位“1”的位置;Mn为温度计码;n=1,2,3,4分别对应0°,90°,180°,270°的相移时钟。“气泡”也可能会影响最高位“1”,因此需对Bn进行修正。由图2可见,在不同相位细粒度时钟下,寄存器链最高位“1”的位置最多相差一位,因此对Bn的修正方法可表示为
(2)
其中:Bmax为Bn中的最大值。修正完后,将温度计码转换成输入信号上升沿的测量时间t1,表示为
(3)
其中:P为粗粒度计数器的值;T为粗粒度时钟周期。
为实现对输入信号下降沿时间的测量,将输入信号取反后接入与上升沿同样的测量电路。输入型号的脉冲宽度tw可表示为
tw=t2-t1
(4)
其中,t2分别为下降沿的测量时间。
2 多阈值比较
本文的时间测量系统能实现3种功能:(1)不同阈值下脉冲时间测量;(2)多通道对多脉冲同时测量,实现多脉冲时间关联;(3)多通道多阈值同时对一个脉冲测量,实现对脉冲形状的绘制。实现这些功能的基础是每个通道的阈值可编程。图3为多阈值测量示意图。由图3(a)可见,电压比较器的参考电压(即阈值)可编程,当输入的模拟信号电压高于阈值时,输出为高电平;当电压低于阈值时,输出为低电平。由图3(b)可见,实现不同阈值下脉冲时间测量,同一通道可设置不同的阈值,测量出输入信号在达到该阈值时的时间。由图3(c)可见,多通道多脉冲同时测量,实现多脉冲时间关联,将多个通道的阈值设置为相同值,测量出多脉冲之间的时间关系。由图3(d)可见,多通道多阈值同时对一个脉冲测量实现对脉冲形状的估计,将多个通道的阈值设置成阶梯分布,分别测量同一输入信号达到相应阈值的时间,再根据阈值和对应的时间完成对输入信号的估计。
(a)Threshold voltage setting
(b)Single-channel with multi-threshold-voltage
(c)Multi-channel with the same threshold voltage
(d)Multi-channel with multi-threshold-voltage
3 测量系统总体设计
测量系统框架如图4所示,包括获取端、传输端和PC端。获取端完成时间信息的获取;传输端完成时间信息及获取端指令的传输;PC端完成时间信息的转换与指令发送。
获取端共有48路输入,每路输入均通过电压比较器(CAP)与FPGA相连。FPGA对数字模拟转换器(DAC)进行控制并接收CAP输出的信号,实现时间信息的获取。主控模块与获取端的其他模块进行交互并控制其状态。电压控制模块通过输出SPI指令控制DAC的输出电压,DAC的输出电压作为CAP的参考电压,CAP的输出作为FPGA的输入信号。时钟模块提供100 MHz时钟作为粗粒度时钟,提供4相800 MHz时钟作为细粒度时钟。时间转换模块接收输入信号并获取对应的温度计码和二进制计数器值,该模块的内部结构对应图1。获取的温度计码和二进制计数器值经过FIFO初步缓存与时钟域转换后由传输模块进行远程传输。
传输端完成远程传输功能,与获取端通过光纤连接,进行时间信息的传输与相关指令的发送。传输端对接收的时间信息进行缓存,并通过USB接口与PC端进行交互。传输端具有远程传输功能,适用于需远程获取时间信息的应用。
PC端接收传输端发送的时间信息,将温度计码和二进制计数器值转换成时间,进行显示与下一步应用。同时PC端发送指令设置获取端的阈值电压及对时间获取模块进行初始化。
4 系统实现与测试结果
本文选用符合条件的FPGA及其他器件实现48通道高精度时间测量系统,图5为测量系统实物图。外部晶振给FPGA提供时钟,FPGA内部时钟管理模块对时钟进行分频,得到粗粒度计时和细粒度计时所需时钟。使用码密度法测试每个延时单元的延时时间,测试信号由FPGA内部LUT组成的环形振荡器给出。由于粗粒度计时的每个时钟周期被细粒度计时分为32份,因此共有32个延时单元。通道1每个延时单元的延时时间,即Bin宽分布如图6所示。由图6可见,每个延时单元的延时约为0.312 5 ns,与设计基本一致。
图4 测量系统框架
图5 测量系统实物图
图6 Bin宽分布
使用脉冲信号发生器产生两路脉冲信号分别提供给通道1和通道2,通过电缆延迟调整两路脉冲信号的时间间隔,得到RMS精度随时间间隔的变化关系,如图7所示。
图7 RMS精度随时间间隔的变化关系
由图7可见,RMS精度最大约为0.27 ns,最小约为0.18 ns且RMS精度随两个通道间的时间间隔有一定周期性的变化,周期为10 ns,与粗粒度计时的时钟周期相同。原因为延时单元的延时时间分布不均匀。
使用脉冲信号发生器产生脉冲信号给通道1和通道2~8,时间间隔通过电缆延迟设置为2 ns,得到不同通道的RMS精度,如图8所示。由图8可见,不同通道的RMS精度为0.12~0.27 ns之间,其他通道也基本在此范围内。
图8 不同通道的RMS精度
本系统的一个重要特色是可进行多阈值比较,从而测量一个或多个输入脉冲信号到达不同阈值时的时间。将测量系统不同通道阈值设置为不同值,对同一脉冲信号到达不同阈值电压的时间进行测量,得到多阈值测量结果,如图9所示。
图9 多阈值测量结果
由图9可见,输入的脉冲信号从0变化到3.3 V时间为2 ns,变化趋势为中间快,前后慢;当阈值电压较低时,测量的波形与实际输入的吻合度较差;当阈值电压较高时,测量的波形与实际输入吻合得较好,原因为阈值电压较低时受外部噪声影响大。阈值电压较低时,波形吻合度虽不是很好,但总体时间关系均正确,在不适合高频示波器的场景下可用于估计输入脉冲的形状。图9也可作为多脉冲时间关联的测试结果,此时不同通道的脉冲一致,但阈值不同,从而可测量出不同通道脉冲信号到达相应阈值先后关系。
表1为不同时间测量系统的对比。表1中,时间测量系统均基于时钟相移法,因此,影响测量精度的主要因素为细粒度时钟频率与相位数。
表1 不同时间测量系统的对比
由表1可知,当使用4相时钟进行细粒度测量时,本文时间测量系统的测量精度略高于文献[18],明显高于文献[17]。由于文献[19]采用了16相时钟,因此,在400 MHz时钟下获得了更高的性能。但本文时间测量系统具有多阈值测量和远程测量功能,能用于更多特殊场景。
5 结论
本文提出了一种48通道高精度时间测量系统,在FPGA上进行了实现和测试。提出了一种基于对数取整的温度计码转换方法,在PC端实现温度计码与时间的快速转换。测量系统设计了多阈值设置功能,从而能实现对脉冲达到不同电压的时间的测量。测试结果表明测量系统的时间分辨率约为0.31 ns,RMS精度优于0.27 ns,能实现多阈值脉冲时间测量。同时测量系统具有远程数据传输和阈值设置功能,适用于远程多通道多阈值时间测量等场景中。