Z7010 3通道 SeruTek TDC 测试报告

版本:1.0

Z7010 3通道 SeruTek TDC 测试报告

--基于微相Z7-Lite 7010开发板

目录

主要特性

介绍

通道TDC IP 接口说明

TDC 配置接口

时钟及脉冲输入接口

数据输出接口

软解码时间戳格式

硬解码时间戳格式

DMA传输模块

测试与评估

连续测量 5.17MHz输入脉冲

突发测量60.17MHz脉冲       


主要特性

  • 基于Zynq 7010 速度等级-1
  • 3个时间戳通道
  • PL硬解码
  • DMA传输
  • 5Msa/s X 3通道的连续测量速率
  • 60Msa/s X 3通道的突发测量速率(高速FIFO饱和前)
  • 高速FIFO深度:每通道128点

介绍

赛灵思的Zynq 7010是一款双核ARM Cortex-9 SoC。其片上集成了28K的逻辑单元(PL),相较于Z7020的85K逻辑单元要少了不少。然而它的ARM硬核频率只比z7020降低了100MHz左右。综合来看,Z7010仍然是一款运算功能强大,使用场景众多且价格低廉的SoC产品,广泛适用于智能设备的控制单元。

在很多激光雷达上也能找到Xilinx SoC/FPGA的身影。比如Z7010就作为主控芯片出现在法雷奥的车规级激光雷达Scala上。

大多数的Z7010芯片都是-1速度等级的,其最大时钟频率相比-2速度等级的更低,对TDC的实现来说需要做一些相应的调整。上海瑟如电子科技有限公司于近期针对-1等级的z7010进行了TDC IP的适配。由于受限于较小的PL资源,在Z7010上TDC IP必须要在通道数量、数据处理等功能上做一些取舍。

经过一段时间的开发适配工作,我们在z7010上实现了5通道TDC加DMA传输。5个通道采集的测量数据可以通道DMA高速传输到DDR内存中。但PL解码和PL端的时差计算功能由于资源所限,无法加入。因此需要ARM硬核对采集的测量原始数据进行软件解码,并通过软件来计算时差。

当在z7010上实现3通道TDC时,可加入PL解码模块,无需PS进行解码。在DDR中直接得到的就是时间戳。可以根据需要,通过PS对时间戳数据进行运算,得到通道间的时间差。

本文首先介绍一下Z7010的3通道TDC实现的接口和功能特性,然后会列出一部分连续测量和突发测量的测试结果。

通道TDC IP 接口说明

TDC 配置接口

 

 

AXI开头的2组slave AXI-Lite接口是TDC IP的配置接口。它们的时钟和复位信号分别是clkcmd_axi_clk和cmd_axi_aresetn。

其中SAXI_CLKCMD用来控制TDC IP各测量通道的使能。

AXI_PL_DECODER是用来控制PL 时间戳解码模块的寄存器。默认情况下,该模块处于pass through 模式,输出原始数据,不进行解码。当TDC处于自校准模式时,必须将解码模块设为pass through模式,输出原始测量数据。当解码模块激活时,TDC输出解码后的时间戳。

时钟及脉冲输入接口

时钟clkin1是TDC 的时钟输入接口,是TDC核心功能的频率基准。在本示例中,该时钟是由是开发板上的50MHz晶振产生的。

脉冲输入hit0、hit1、hit2是三路被测脉冲输入信号。

信号输入hit_enable[0:2]是TDC通道使能信号。TDC使能还能够通过AXI控制接口控制,但这组硬线信号提供了低延迟的使能方法,适用于一些需要高速触发的应用。

数据输出接口

TDC IP定义了1组Master AXI Stream数据输出接口 RAW32b,该接口在解码模块处于直通(pass through)模式下输出原始测量数据,当解码模块激活后,输出时间戳数据。该接口的时钟和复位信号分别为:clkcmd_axi_clk和cmd_axi_aresetn。

软解码时间戳格式

原始测量数据的格式并不对外开放,但是可以调用SDK的解码函数对其解码后得到时间戳。mTdc结构体定义了软解码得到的时间戳。

在serutek.h中定义了mTdc结构体,用来存放PS解析后的时间戳。

结构体由3部分组成:通道号 id 粗时间计数和精时间计数(粗计数额单位为ns, 精计数的单位是ps)。时间戳克表示最长约70年的时间。

为了计算两个时间戳之间的时间间隔,提供了两个函数TdcSubstract和TdcSubstract64,返回值的数据类型分别为:s32,s64(64bit signed integer),单位为ps。使用时注意数据类型的范围,不要产生溢出。对于时间间隔特别长,会超出s64表示范围的情况,需要自定义函数,或咨询瑟如电子。

硬解码时间戳格式

当TDC IP内部的PL解码模块被激活时,RAW32b接口输出解码后的时间戳。

默认时间戳长度为12 字节,最高位的一个字节为通道标识,用来表示产生该时间戳的通道编号。在时差计算模式下,通道1为作为start信号,其余通道作为stop信号。

时间戳的低9个字节用来表示时间戳的值,数据类型为无符号整型。最小位LSB对应的单位是皮秒ps。

[95:88]

[87:72]

[71:0]

通道号

无定义

时间戳,无符号整型,LSB 单位: ps

DMA传输模块

模块功能:

将输入的32bit AXI Stream 时间戳数据通过AXI Master接口传输到PS DDR。

通过AXI Lite slave接口进行配置与状态读取。

该模块使用时有如下几个参数需要设置:

  1. 最大尝试读取次数,当超出该设定的读取次数仍未读到数据,则终止运行。
  2. 最大传输字数,当传输字(word,4bytes)数大于等于该设定值时,终止运行
  3. 传输目标地址,DMA的目标地址。

测试与评估

测试两个场景,分别考察3通道TDC IP 的连续测量能力与突发测量能力。

连续测量 5.17MHz脉冲

在本测试中,3通道同时输入5.17MHz时钟信号,测量数据通过DMA传输到DDR,每通道传输100000个测量值。测量结束后打印每通道最后1024个测量值,并评估其抖动等性能。

先看通道1的时间戳,前后做差,得到前后两个时间戳之间的差值。其差的平均值为193422.87ps,考虑到5.17MHz的时钟周期为193423.59ps,测量准确度小于1ps。这里影响准确度的除了TDC本身主要是TDC时钟与脉冲时钟源的频率偏差。

通道1时间戳前后差

 

 

通道2-通道1时间差:

通道2-通道1时间差

 

通道2-通道1时间差直方图:

通道2-通道1时间差直方图

 

 通道3-通道1时间差:

通道3-通道1时间差

 

 

通道3-通道1时间差直方图:

通道3-通道1直方图

 

突发测量60.17MHz脉冲       

在突发测量的测试中,3个通道都输入60.17MHz时钟信号,每个通道传输100000个测量值。打印前1024个测量值。

首先,看一下通道1时间戳的前128个测量值的前后差。为什么是128?因为每个通道配有128点的高速FIFO。在FIFO饱和前,TDC能够以最大60MHz的测量速率测量而不丢失脉冲。

可以看到通道1的时间戳前后差平均值为16619.78ps,而60.17MHz时钟的周期理论上为16619.57ps,可见偏差在0.3ps以内。在高频下,测量的抖动有所增加,主要是因为由于从2.54mm插针通过杜邦线引入信号。在频率增高时,信号质量下降,通道间的串扰也会更加明显。

通道1时间戳前后差,前128个数据

 

60.17M的脉冲输入,每个时间戳12byte。TDC产生测量数据的速度远超DMA读取的带宽,因此当高速FIFO饱和后,不可避免的会丢失数据。从下图可以很明显的看出,在200多个测量点后,FIFO开始饱和,开始出现丢失测量值得情况。

标题通道1时间戳前后差,前1024个数据

 

 

接着,还是来看前128点的通道间时间差数据

通道2-通道1时间差,前128个数据

通道2-通道1时间差的直方图:

通道2-通道1时间差直方图,前128个数据

通道3-通道1的时间差:

标通道3-通道1时间差,前128个数据

通道3-通道1时间差的直方图

道3-通道1直方图,前128个数据题标题

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值