FPGA控制TDC-GPX2时间间隔测量(一)

距离上一次使用FPGA控制TDC芯片测量时间间隔已经过去一年多了,当时采用的TDC芯片是TI的一款芯片TDC7200,最后测量结果所能达到的精度为百皮秒级别,最近使用入手了AMS生产的TDC-GPX2这款芯片,单通道测量的精度达到有20ps,高精度模式理论测量精度达到10ps,本文于此介绍以下。以下附上之前写的TDC7200博客:FPGA控制TDC7200时间间隔测量。希望对大家能有所帮助。好了,话不多说,下面直接进入正题。

芯片介绍

老规矩,在介绍使用之前我们先来扣一扣数据手册。

  1. 芯片整体框图
    在这里插入图片描述

如上所示,TDC-GPX2芯片有四路STOP脉冲输入信号,各持所司的几路电源(TVDD、CVDD等等),信号交互引脚还有各项使能、失能引脚。

  1. 重要引脚信息
    在这里插入图片描述
    在这里插入图片描述
    以上是第一部分所介绍的一些重要的数据线的说明,本次设计采用SPI通信,所以对于LVDS引脚一律不使用。下面挑几个重要的引脚进行讲解:

    1. STOP引脚,也就是脉冲输入引脚,我们所测量的就是STOP通道上的脉冲的时间间隔,主要的模式包括:单通道测量、双通道组合测量以及四通道组合测量。本设计采用独立测通道测量。
    2. REFCLKP引脚,参考时钟引脚。
    3. RSTIDXP引脚,内部计数复位,高电平有效。
    4. DISABLEP引脚,通道失能,高电平有效。
    5. INTERRUPT引脚,测试完成会拉低,通知用户采集数据。
    6. SCK、MOSI、MISO、SSN为SPI通信的引脚,唯一的区别就是SSN不是类似于CS的拉低选中芯片,而是通过SSN引脚给TDC芯片一个脉冲,提醒TDC芯片接收数据,具体可以看下面的写和读的时序图。其他三个引脚核SPI引脚功能一致。
  2. 写时序
    在这里插入图片描述

  3. 读时序
    在这里插入图片描述

  4. 配置寄存器一览
    Fixed不允许更改
    在这里插入图片描述
    上图中的Fixed value,表示固定值,在写入的时候需要按照上面的值写入。

6. 重要寄存器介绍(重要!重要!重要)
1. 引脚使能
在这里插入图片描述
该寄存器用来使能对应的引脚,包括脉冲输入引脚、时钟输入引脚、LVDS引脚、通道失能引脚还有数据复位引脚。
2. 功能选择
在这里插入图片描述
这个寄存器用来选择是否开启通道、组合模式以及是否开启高分辨率功能。本次设计选择开启通道1,单独测试模式,不开启高分辨率模式。
3. 位宽以及FIFO模式设置
在这里插入图片描述
这个寄存器对于使用SPI控制而言作用不大,当需要使用FIFO块模式的情况下使用,其他情况下不用。本设计全部给0。
4. LSB设置寄存器
在这里插入图片描述
这个寄存器可以理解为设置精度,我的时钟主频是5M,周期为200ns,那么这个DIVISIONS我设置为200000,那么每一个单位就是 200ns / 200000 = 1ps,打个比方说,当我读出来的数据为5500,那么时间间隔就是5500ps,不用再另作转换计算。所以本设计就将其设置为200_000。
5. 电平设置计算
在这里插入图片描述
设置电平为CMOS,其他按照固定设置即可。
6. 读寄存器一览
在这里插入图片描述
上图可见读寄存器的地址是从8开始的,这个需要注意,后面要对都地址进行+8。

8. 单通道测量功能时序图(重要!重要!重要)
在这里插入图片描述
在这里插入图片描述
于此将介绍测量的主要流程。(如果你只是想要应用,可以省略下面的一段文字,直接跳到示例,完全能看懂,也会用)如上所示,STOP脉冲进来后TDC芯片会输出测量的主要信息,TDC芯片输出的数据只有两个,第一个是REFIDn,表示当前STOP脉冲处于第几个时钟周期第二个数据TSTOP,表示 (tSTOP/tREF)× REFCLK_DIVISIONS,tSTOP表示当前进来的脉冲和所处的参考时钟周期上升沿之间的间隔时长,tREF表示参考时钟的周期REFCLK_DIVISIONS就是上述设置的那个20位寄存器所设置的值,那边我们说设置为200000,当时钟频率为5M的时候,每一次计数表示1ps,所以第二个读出来的数据就是多少ps,可以直接当成时间间隔。每一个脉冲到来时,TDC都会将当前脉冲所处在第几个时钟周期、和上一个参考时钟计算两个脉冲之间的时间间隔输出,并拉低INTERRUPT引脚,通知用户读取数据。我们只需要分别读出两个脉冲后的寄存器的值进行分析,即可得到时间间隔。
测试示例
在这里插入图片描述
(情形一)参数一表示第几个参考时钟周期,参数二表示脉冲和当前参考时钟周期上升沿的时间间隔
测量上述STOP1和STOP2的时间间隔,当这两个脉冲进入到TDC芯片中,TDC芯片的FIFO会分别储存这两个脉冲的信息,由上可见,这两个脉冲处于同一个时钟周期下,所以他们的第一个参数REFIDn相等,此时只需要分析第二个参数即可。假设我们读到第二个脉冲的第二个参数为80000ps,第一个脉冲的第二个参数为40000ps,那么两个脉冲的时间间隔就是80000ps-40000ps=40000ps=40ns,也不需要过多的转换,这就是最终的时间间隔。
(情形二)参数一表示第几个参考时钟周期,参数二表示脉冲和当前参考时钟周期上升沿的时间间隔
测量上述STOP1、2和STOP3的时间间隔,当这两个脉冲进入到TDC芯片中,TDC芯片的FIFO会分别储存这两个脉冲的信息,由上可见,这两个脉冲处于不同的时钟周期下,那么我们为了得到时间间隔,只需要让第二个脉冲的第二个参数减去第一个脉冲的第二个参数(这个值可能会是负的),在加上两个脉冲第一个参数×周期时长,就得到时间间隔了,结合时序图应该很好理解,以下是手册的详细说明,如果对我所述的有不明白的地方,可以结合手册说明理解。
在这里插入图片描述
9. SPI通信说明
在这里插入图片描述
首先是极性和相位的设置,极性为0,相位为1,表示sck空闲状态下为0,且在第二个时钟沿写入或读出数据,也就是下降沿,我们只需要在下降沿的时候读写数据即可。
在这里插入图片描述
以上是对应的引脚说明。和我前面介绍的基本一致。

  1. 操作码一览
    在这里插入图片描述
    以上是操作码,需要在写入或者读出的时候作为帧头,后面带上寄存器地址或者数据。

注意

当使用SPI通信的时候,注意要把LVDS的引脚关掉。
在这里插入图片描述

结语

本文讲的很多了,对于控制FPGA进行实操的放到下一篇文章中介绍了。

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值