2、时间间隔测量:脉冲计数法、游标法、时间数字转换器(TDC)原理、抽头延迟线法

时间间隔测量,说白了就是测两个事件之间隔了多久。从纳秒到秒,跨度极大,没有一种方法能通吃。我这些年做测试,最深的体会就是:选对方法,项目就成功了一半。下面这四种,是工程中最常用的。

2.1 脉冲计数法——最朴素,也最可靠

原理很简单:用被测时间间隔去开门,让一个已知频率的时钟脉冲通过,数一数过去了多少个脉冲。

核心公式:

T_meas = N × T_clk

其中 N 是计数值,T_clk 是时钟周期。

举个例子。时钟 100 MHz,周期 10 ns。开门 1 微秒,理论上能数到 100 个脉冲。但这里有个坑——±1 计数误差。开门沿和时钟沿不同步,可能多数一个,也可能少数一个。

避坑指南:我曾经在一个激光测距项目里,直接用脉冲计数法测 10 纳秒级间隔,结果误差大到没法用。后来才意识到,±1 误差在短时间测量里是致命的。如果你要测的时间小于 100 个时钟周期,建议换别的方法。

脉冲计数法的优缺点很鲜明:

优点 缺点
结构简单,容易实现 ±1 计数误差,精度受限于时钟频率
测量范围大(从微秒到秒) 测短时间间隔时误差占比大
成本低,适合嵌入式系统 需要高稳定度时钟源

2.2 游标法——用「游标卡尺」的思路测时间

你想想看,游标卡尺怎么测长度的?主尺和游标尺的刻度差一点点,对齐时就能读出更精细的值。游标法测时间,思路一模一样。

它用两个频率略有差异的振荡器:

  • 主振荡器:周期 T1,对应被测时间间隔的粗测
  • 游标振荡器:周期 T2,比 T1 稍小一点点

两个振荡器同时启动,它们的相位差会逐渐漂移。当某个特定相位对齐时,记录下游标振荡器的周期数,就能算出精细的时间差。

个人经验:我习惯把游标法的分辨率做到皮秒级。但要注意,两个振荡器的频率稳定性必须极高。有一次我在实验室用普通晶振搭游标法,结果温度一变,读数就飘。后来换了恒温晶振(OCXO),才算稳住。

游标法的分辨率公式:

ΔT = T1 - T2

只要 T1 和 T2 足够接近,ΔT 就能做到很小。比如 T1 = 10 ns,T2 = 9.9 ns,分辨率就是 100 ps。

2.3 时间数字转换器(TDC)原理——把时间变成数字

TDC 是当前最主流的时间测量方案。它的核心思想是:把时间间隔量化成数字码,就像 ADC 把电压量化成数字码一样。

我最早接触 TDC 是在一个核物理实验里,要测两个探测器信号的时间差,精度要求 50 ps。当时用的就是商用 TDC 芯片,内部结构其实不复杂:

  1. 启动信号:开始计时
  2. 停止信号:结束计时
  3. 量化单元:把时间间隔切成若干小段
  4. 编码器:输出数字结果

关键指标:

  • 分辨率:能区分的最小时间差,单位 ps 或 ns
  • 动态范围:能测量的最大时间间隔
  • 线性度:输入时间与输出码的线性关系
  • 死区时间:两次测量之间需要的最小间隔

TDC 的实现方式有很多种,下面这张图展示了最基础的架构:

TDC 基本架构 启动信号 停止信号 时间量化单元 (延迟链/游标/抽头) 编码器 (温度计码→二进制) 数字输出 💡 启动和停止信号进入量化单元,产生温度计码, 再由编码器转换成二进制数字输出。

2.4 抽头延迟线法——最经典的 TDC 实现

抽头延迟线法,是 TDC 里最直观的一种实现。它用一串延迟单元(比如反相器或缓冲器)组成延迟链,每个单元的延迟时间就是分辨率。

工作原理:

  1. 启动信号进入延迟链,一路传播下去
  2. 每个延迟单元的输出端都有一个抽头,连接到 D 触发器
  3. 停止信号到来时,所有 D 触发器同时锁存当前状态
  4. 读出锁存值,就能知道启动信号传播到了哪个位置

我建议:如果你在 FPGA 里实现抽头延迟线,一定要做 占空比校准。FPGA 内部的延迟单元受工艺、电压、温度(PVT)影响很大。我曾经在一个项目中,同样的代码,夏天能跑 50 ps 分辨率,冬天就变成 80 ps。后来加了在线校准,才算稳定。

抽头延迟线的分辨率取决于单个延迟单元的延迟时间。在 28 nm 工艺下,一个反相器的延迟大约 10~20 ps。但要注意,延迟链不能太长,否则累积的抖动会吃掉精度。

参数 典型值 影响因素
单级延迟 10~50 ps 工艺、电压、温度
延迟链长度 64~256 级 芯片面积、功耗
测量范围 几纳秒到几十纳秒 链长 × 单级延迟
非线性误差 ±0.5~2 LSB 延迟单元匹配度

避坑指南:我曾经犯过一个低级错误——把抽头延迟线的输出直接连到普通 I/O 引脚上,结果信号反射导致测量值乱跳。后来加了源端匹配电阻,才算解决。记住,高速时间测量电路,PCB 布局和信号完整性比算法更重要。

2.5 四种方法对比总结

最后,我把这四种方法放在一起对比,方便你选型时参考:

方法 典型分辨率 测量范围 实现难度 适用场景
脉冲计数法 时钟周期(如 10 ns) 微秒~秒 低 低频信号、长间隔测量
游标法 皮秒级 纳秒~微秒 高 高精度、短间隔测量
TDC(抽头延迟线) 10~50 ps 纳秒~百纳秒 中 FPGA/ASIC 集成
TDC(其他架构) 亚皮秒级 可扩展 高 科研、高端仪器

嗯,这四种方法基本覆盖了工程中 90% 的时间间隔测量需求。选型时记住一句话:精度够用就行,别盲目追求高分辨率。我见过太多人为了多几个皮秒的精度,把系统搞复杂十倍,最后得不偿失。