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

这篇具有很好参考价值的文章主要介绍了FPGA控制TDC-GPX2时间间隔测量(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

芯片介绍

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

  1. 芯片整体框图
    FPGA控制TDC-GPX2时间间隔测量(一)

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

  1. 重要引脚信息
    FPGA控制TDC-GPX2时间间隔测量(一)
    FPGA控制TDC-GPX2时间间隔测量(一)
    以上是第一部分所介绍的一些重要的数据线的说明,本次设计采用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. 写时序
    FPGA控制TDC-GPX2时间间隔测量(一)

  3. 读时序
    FPGA控制TDC-GPX2时间间隔测量(一)

  4. 配置寄存器一览
    FPGA控制TDC-GPX2时间间隔测量(一)
    FPGA控制TDC-GPX2时间间隔测量(一)
    上图中的Fixed value,表示固定值,在写入的时候需要按照上面的值写入。

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

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

  1. 操作码一览
    FPGA控制TDC-GPX2时间间隔测量(一)
    以上是操作码,需要在写入或者读出的时候作为帧头,后面带上寄存器地址或者数据。

注意

当使用SPI通信的时候,注意要把LVDS的引脚关掉。
FPGA控制TDC-GPX2时间间隔测量(一)

结语

本文讲的很多了,对于控制FPGA进行实操的放到下一篇文章中介绍了。文章来源地址https://www.toymoban.com/news/detail-493413.html

到了这里,关于FPGA控制TDC-GPX2时间间隔测量(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于FPGA的时间数字转换(TDC)设计(三:多相位验证)

    以下为多相位TDC计时的测试。图1为多相位TDC计时的测试框图,利用信号发生器,产生两路同相位、具有固定延时的脉冲信号,一路作为Start信号,另外一路作为Stop信号。由于分辨率为312.5ps,因此以312.5ps为步进,对Stop信号进行延时,扫描一个周期,通过UART接口传输给上位机软

    2023年04月11日
    浏览(48)
  • 【论文代码】基于隐蔽带宽的汽车控制网路鲁棒认证-到达时间间隔通道的Java实现(一)

    此篇文章是对原有代码的注释进行翻译,尝试对其架构和实现方式进行理解。 项目结构 Java实现代码 如图UML类图: 从图中明显可见,其代码组织方式,各个代码文件的继承和实现的关系。 以下内容围绕UML类图,分别进行阐述。 USBtin家族 USBtin是所有类的基类。 CANSender 和CA

    2024年01月24日
    浏览(48)
  • 双目视觉测量系统在不同纵向距离中测量精度比对实验

    通过实验对比不同测量距离下光斑的测量精度,证明在有效视场的前提下,减小测量距离能有效的提高测量精度。 双目相机其中相机型号是BASLRR acA 1300-60gmNIR、8mm镜头2个、精密电动移动台Zolix MC600 MOTION CONTROLLER、红外灯珠850 3W、标定板 首先,对双目相机进行标定,并通过测量

    2024年02月13日
    浏览(41)
  • OpenCV测量图像中物体距离

    先注意 这不是双目摄像头的 测距哦~~ 计算物体之间的距离与计算图像中物体的大小算法思路非常相似——都是从参考对象开始的。我们将使用0.25美分作为我们的参考对象,它的宽度为0.955英寸。 并且我们还将0.25美分总是放在图片最左侧使其容易识别。这样它就满足了我们上

    2024年02月02日
    浏览(38)
  • stm32(HAL库)控制TDC-GP22激光测距

    SPI通信速率:在3.3V供电电压下,最大为20Mhz SPI通信格式:时钟相位=1,时钟极性==0; cubeMX的配置如下图所示: 对于EEPROM的写入与数据的写入与读取一般遵循:控制指令码+寄存器地址+数据 CJ-MCU公司为tdc-gp22做了封装,在某宝中可以买到这个板子。 根据官方所提供的原理图,

    2024年02月16日
    浏览(71)
  • OpenCV构建交互式图像距离测量工具

    在计算机视觉和图形学应用中,准确测量图像上的点之间距离是一项常见且重要的任务。本篇技术博客将详细介绍如何利用Python编程语言和OpenCV库构建一个交互式的图像距离测量工具。我们将通过编写一个名为ImageProcessor的类,让用户能够在图像上点击选取点,并实时显示两

    2024年04月14日
    浏览(45)
  • Python计算代码之间运行时间(运行间隔时间、时长)

    通过代码统计 导入time库:import time 代码开始前获取开始时间:time_start = time.clock() 代码结束后获取结束时间:time_end = time.clock() 计算运行时间:run_time = time_end - time_start 输出运行时间:print(\\\"运行时长:\\\", run_time) 补充 time.clock() 获取的时间单位为s。 实例 python3.8及以上版本,

    2024年02月16日
    浏览(84)
  • Java进行计算两个时间间隔

    在Java中,我们经常需要计算两个时间之间的间隔,比如计算某个任务的执行时间、计算两个事件发生的时间间隔等等。Java提供了一些类和方法来处理时间和日期相关的操作,本文将介绍如何使用Java来计算两个时间之间的间隔,并提供相应的代码示例。 1. 基本概念 在开始之

    2024年04月15日
    浏览(35)
  • LoadRunner添加迭代和迭代的间隔时间

    . . . . 首先我们先看关于迭代次数和间隔时间设置的具体要求。 . 在使用LoadRunner时想要添加迭代次数的间隔时间需要先进入Controller场景设置软件,并添加已录制好的脚本。 . 点击Runtime settings按钮 在Runlogin中设置action的迭代次数 点击pacing来添加每次脚本迭代的间隔时间 **

    2024年02月05日
    浏览(30)
  • python实现d435i深度相机测量两点之间的距离

    本文介绍python方法实现intel公司realsense系列d435i深度相机测量彩色图像上两点之间的距离。 原理很简单,就是将相机获得的彩色图像流与深度流对齐,这样彩色图像上的每个像素就会对应一个深度值,作为z坐标,然后通过相机内参获得该像素的x坐标和y坐标。我们获得的x、

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包