SeruTek Plus 基于Kintex的4通道TDC–简介与测试
目录
简介
SeruTek TDC 是上海瑟如电子公司开发的一款基于Xilinx 7系列FPGA/SoC的TDC IP核。当前,SeruTek TDC 分为2种型号。基本型号适用于全系列Artix-7,对Zynq最高支持到Z7020。从Z7030开始,Zynq更高阶的器件的PL部分等效于Kintex系列。虽然Kintex与Artix同为28nm制程,但速度更快,门延迟更小,因此在Kintex上TDC的形态也与Artix上的不同。基于这个原因,将适用与Kintex系列的TDC IP 单列一个型号,称为SeruTek Plus TDC。SeruTek Plus 支持 Kintex全系列,以及Zynq A7000中7030及以上型号。(不包含Ultrascale型号,未经测试)。
在测量精度上,SeruTek Plus与基本型号大致相当。如果时钟信号和hit信号设计良好,SeruTek Plus的测量RMS精度能比基本型号小3-5ps,达到20ps。SeruTek Plus的主要优势在于更高的hit速率,从基本型的70MHz提升至90MHz,对应的单通道最小脉冲间隔从14ns提升至11ns。
此外,由于高阶器件资源更为丰富,便于多通道TDC与用户逻辑的集成,从而能够实现更为复杂的时间测量及数据处理逻辑。
以下对SeruTek TDC 基本型的介绍同样使用于SeruTek Plus。
SeruTek TDC采用多通道时间戳机制,对各个通道输入的脉冲记录其时间戳。时间戳分为两部分:粗计数和精计数。粗计数由FPGA内部实现的计数器得到,精密计数由FPGA内部的进位链组成的延时链得到。在采用类似的粗、精计数组合的技术方法中,最大的问题在于输入脉冲有可能非常靠近粗计数器时钟的上升沿,从而不满足其Flip-Flop
register的setup时序要求并导致非稳态。非稳态的产生使得粗计数的值极有可能发生单周期跳变,从而严重影响计数精度。SeruTek
TDC采用自研的独有技术完美解决了这一问题,从而大大提升了TDC的实用性。此外,SeruTek TDC还具有片上自动码宽度自动校准功能,并采取了多种技术手段减小了通道之间的时延差变化波动,
保证了在结温变化时,通道之间的时延差小于20ps。
高精度、大量程、高速率、低通道差、多通道等优异的特性使得SeruTek广泛适用于通用计数器领域以及需要用到脉冲飞行时间(ToF)的应用,如激光测距、激光雷达、PET、超声波等应用。SeruTek TDC可选择标准的AXI或AXIS接口输出时间戳数据,可与Zynq A9硬核以及Microblaze软核集成,实现数据高速传输与处理。
SeruTek Plus TDC的主要技术特性如下:
One-shot RMS 精度 | < 25ps | |
---|---|---|
最大量程 | 约70年 | |
单通道最小触发间隔(dead time) | 11 ns | |
最小可测时间间隔 | 单通道:11ns 将start、stop信号分布在不同通道上可以测量任意小的时间间隔 | |
通道间一致性 | < 20 ps(外部校准后,时延差变化范围) | |
突发触发速率(burst hit rate) | 90MHz 突发速率最大样本数受限于片上FIFO的容量。可根据使用芯片容量定制。 | |
连续触发速率 | 取决于采用的readout机制,当使用DMA时,单通道连续触发速率>30MSa/s。当配合riffa实现PCIE传输时,可在PCIE2.0 X8配置下实现多通道总和180Msa/s的连续采样速率。 |
测试设置
IP 设计
基于Kintex的4通道TDC IP如上图所示。下表是接口描述:
接口名称 | 输入/输出 | 功能 |
---|---|---|
CMD_AXI | 输入/输出 | 配置及控制TDC IP |
CLK_IND_200MHz_clk_p/n | 输入 | 200MHz差分参考时钟输入 |
arestn | 输入 | TDC IP 内部重置信号 |
cmd_axi_aclk | 输入 | CMD_AXI的时钟输入 |
Cmd_axi_arestn | 输入 | CMD_AXI的重置输入 |
Hitn(1…4) | 输入 | 4路hit 脉冲信号 |
DATA_MAXIS | 输出 | 输出timestamp的AXI-Stream Master 接口 |
CLK_OUT_100M | 输出 | 输出100MHz频率,供Microblaze及相关外设使用 |
LOCKED | 输出 | 内部MMCM锁定指示信号。可连接LED显示状态。可连接System processor reset的dcm_loced输入,实现reset时序。 |
示例程序
为了方便用户对4通道SeruTek Plus TDC IP进行快速测试与评估,我们开发了基于Xilinx官方开发板Avnet KC705的最小示例程序。
设计框图
示例的Vivado 设计框图如下图:
该最小系统例化了一个MicroBlaze核,用以控制及配置TDC;128KB的BRAM用以储存程序及作为运行内存;一个UART_lite IP,波特率115200,用以打印时间戳信息;一个SeruTek Plus 4通道TDC IP;此外还例化了一个AXIS- FIFO,用来读取TDC IP输出的时间戳数据。
TDC IP具有1个AXI-lite接口:CMD_AXI,其附属的时钟和重置信号都可以通过Vivado的自动连接功能进行快速连接。 Zynq PS或MicroBlaze可通过CMD_AXI对TDC IP进行配置和控制。
时间戳原始数据通过TDC IP 上的Data_MAXIS接口向外输出。其Data宽度为12 bytes,其时钟信号由cmd_axi_aclk提供。
与IP核一起发布的SDK函数库中提供了配置控制TDC IP以及读取时间戳并解码的函数,还提供了示例程序,用以采集时间戳数据后通过串口打印输出。
布局与资源利用
该示例的所使用资源在器件中的布局如下图:
4通道TDC占用了两个时钟域:X0Y0和X0Y1。一部分BRAM被用作Microblaze的运存,另一部分被用作了TDC的高速FIFO。每通道FIFO的大小决定了该通道能够以高hit速率(最大约90Msa/s)测量的点数。在示例中,每通道配有2048点FIFO。FIFO大小可定制。
下图是4通道TDC最小系统所消耗资源的统计。值得注意的是,如果继续增加通道数,每增加一个通道需要增加一个BUFG。如果用户BUFG资源紧张,也可从普通IO引入hit信号,但根据测试经验,通道差在温度变化时的变化范围会增加。
能耗预估
根据Vivado的Porject Summary预估的能耗,如下图:
软硬件环境
测试硬件组成:
-
KC705开发板,芯片型号为XC7K325T-ffg9002-2;
-
一块Si5338 开发板,作为TDC时钟源与hit信号源;
测试软件组成:
-
Vivado Suit 2019.1
-
SeruTek sdk library r2.0(SDK 软件库,用于TDC核配置、控制以及原始数据解析)
SeruTek 4通道TDC 测试设置时钟及hit信号连接
KC705开发板购入已近5年,板载晶振抖动偏大。因此从Si5338 EVB引入一路200MHz LVDS信号接入KC705上的USER CLK SMA作为TDC的参考时钟源。4路hit信号也由Si5338产生。KC705通过一个FMC LPC、一个FMC
HPC接口引出了大量IO,除此之外只有一路差分USER GPIO
SMA可供使用。因此测试时,通过一块FMC LPC breakout转接板将 FMC
LPC的IO引出。4路hit信号的连接方式如下表:
Hit1 | CCIO | LA00_P (FMC LPC breakout 2.54mm pin) |
---|---|---|
Hit2 | User IO | User GPIO SMA P(on KC705 board) |
Hit3 | CCIO | CLK0_M2C(FMC LPC breakout SMA) |
Hit4 | CCIO | LA17_P(FMC LPC breakout 2.54mm pin) |
其中除了Hit2用的是普通IO外,其它3路Hit信号都用的CCIO引脚。而4路信号中,hit3和hit2使用了SMA接口,接地性能较好,其它两路用的转接板上的2.54mm引脚,容易引起串扰。
连接方式参考下图:
需要指出的是FMC转接板上总共有4路差分SMA,但其中3路是GT信号,无法作为hit信号的输入。
测试内容
在之前发布的《SeruTek双通道TDC测试报告》已经对Serutek TDC的各项指标进行了详尽的测试,如需了解SeruTek TDC在不同hit速率下的表现,请参阅该报告。
本次测试第一个考察项目是在最高90MHz hit 速率下,SeruTek Plus TDC的性能。
第二个考察项目是测量TDC IP核各通道之间的时延差波动。Hit信号的走线长度很难保证精确一致,这是因为hit信号线的长度是FPGA地板走线、核心板走线以及FPGA内部走线长度之和。因此当产品定型后,需要通过外部校准手段,校准各通道间的时延差。但时延差本身的波动是无法通过外部校准进行补偿的。因此,通道间的时延差波动对最终测时的准确度有着非常重要的影响。
测试结果 – 90.54321MHz
被测信号为Si5338 EVB输出的4路LVCMOS25信号,都为同相信号,频率为90.54321MHz,以下截图是各项测试内容的计算结果:
为了减少篇幅,便于阅读,现将通道1的各项数据绘制如下,如需完整数据,请联系瑟如电子,可提供原始数据以及python数据分析程序。
原始数据截图
下图为串口输出的原始时间戳数据截图。第一列为通道号,第二列为时间戳,单位是ns(小数点前一位表示ns)。在IP核内部4路TDC的输出通过AXI
Stream Interconnection 连接在一起,通过一个AXI Stream
Master输出,因此读出的数据中混有各通道的时间戳。
为了减少篇幅,便于阅读,现将通道1的各项数据绘制如下,如需完整数据,和联系瑟如电子,提供原始数据以及分析的python程序。
时间戳轨迹
测量残差
将测量结果的时间序列做一阶拟合,然后将真值减去拟合值,得到残差,如下图。
残差Histogram
对残差序列统计各取值区域出现的频率,绘制直方图。
邻差序列
对测量结果序列前后做差,得到邻差序列,也就是相邻两个时间戳的差值序列。
理想情况下,90.54321MHz对应的时钟周期为11044.45ps。所有通道测得的时钟周期均值为11044.47 ps或11044.48 ps。由于hit速率高90.54321MHz,因此每通道采样点的数量上限为每通道FIFO的深度(本示例中每通道FIFO深度为2048点,再加上AXIS Interconnection中还有一部分FIFO。在最大hit速率下,每通道可采约2200点)。可见在2000多点平均后,测时精度能达到0.1ps。
通道间时延变化测试
多通道测量能力是SeruTek TDC极为重要的特性,不仅拓展了其使用场景,更大大简化了多通道TDC的部署与校准流程。对于SeruTek TDC
IP而言,由于每个通道hit信号、时钟信号的走线长度不同,各通道间存在时延差。这些时延差是否固定,它们随结温变化的波动幅度关系到多通道TDC测量值的可信程度。在SeruTek TDC内部,针对重要的信号如时钟信号等都采用了低时延斜率(skew)布线资源,以减小通道时延差,并控制走线长度、减小结温对时延的影响。
需要指出的是,通过FMC转接板将FMC LPC 的IO引出为2.54mm引脚这种形式,接地性能较差,在频率增大时容易发生串扰,所以hit频率不宜太高。
采取多次断电重启FPGA开发板的方式,验证每次重启后对相同hit时钟信号的时差测量值。下表列出了6次断电启动后,对2组(4路)180.54321KHz信号进行测量,所有信号都是同相信号。得到时间戳序列,并将通道n-通道1,得到通道间时差序列,每个通道2230个点,求平均值及标准差,录表于下:
Mean(Chan2-Chan1) (ps) | Mean(Chan3-Chan1) (ps) | Mean(Chan4-Chan1) (ps) | |
---|---|---|---|
1 | 2176.43 | -485.61 | 131.83 |
2 | 2178.93 | -482.32 | 140.20 |
3 | 2175.09 | -485.49 | 132.61 |
4 | 2183.39 | -480.67 | 132,44 |
5 | 2185.14 | -478.32 | 135.40 |
6 | 2184.68 | -479.31 | 132.46 |
可以看出chan2-chan1通道差较大,为2ns左右,而另外两组通道差都小于1ns。这是因为通道2用的是KC705 USER GPIO SMA,其对应的引脚不是CCIO,因此时延较大。通道间的时延差需要通过外部校准,校准以后的,对于使用CCIO的通道,校准后的时延差变化量<20ps。
从测试结果可以看出,在6次断电启动的过程中,各通道间时延差变化小于10ps,能够满足绝大部分应用的需求。
下表为通道时差测量值的方差。由于采用转接板的方式,对信号串扰抑制较差,所以结果仅供参考。虽然通道4-通道1的方差较小,但是很有可能是因为两者之间的串扰,使得连个本来相位接近的信号相位更加趋于一致。这两路hit信号都是通过转接板的2.54mm引脚引入的。
Std(Chan2-Chan1) (ps) | Std(Chan3-Chan1) (ps) | Std(Chan4-Chan1) (ps) | |
---|---|---|---|
1 | 24.09 | 21.89 | 16.26 |
2 | 24.10 | 22.39 | 16.13 |
3 | 23.41 | 21.90 | 15.37 |
4 | 24.55 | 22.38 | 15.95 |
5 | 23.73 | 21.89 | 16.32 |
6 | 23.75 | 21.58 | 16.13 |