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 芯片,内部结构其实不复杂:
- 启动信号:开始计时
- 停止信号:结束计时
- 量化单元:把时间间隔切成若干小段
- 编码器:输出数字结果
关键指标:
- 分辨率:能区分的最小时间差,单位 ps 或 ns
- 动态范围:能测量的最大时间间隔
- 线性度:输入时间与输出码的线性关系
- 死区时间:两次测量之间需要的最小间隔
TDC 的实现方式有很多种,下面这张图展示了最基础的架构:
2.4 抽头延迟线法——最经典的 TDC 实现
抽头延迟线法,是 TDC 里最直观的一种实现。它用一串延迟单元(比如反相器或缓冲器)组成延迟链,每个单元的延迟时间就是分辨率。
工作原理:
- 启动信号进入延迟链,一路传播下去
- 每个延迟单元的输出端都有一个抽头,连接到 D 触发器
- 停止信号到来时,所有 D 触发器同时锁存当前状态
- 读出锁存值,就能知道启动信号传播到了哪个位置
我建议:如果你在 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% 的时间间隔测量需求。选型时记住一句话:精度够用就行,别盲目追求高分辨率。我见过太多人为了多几个皮秒的精度,把系统搞复杂十倍,最后得不偿失。