这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 聊聊FPGA中的TDC原理

共1条 1/1 1 跳转至

聊聊FPGA中的TDC原理

高工
2025-09-03 08:50:58     打赏

01引言

你有没有想过,我们怎么才能精确地测量“时间”?

你可能会说,掐秒表不就完事了?那如果我们要测量的不是“秒”,而是皮秒(ps)——万亿分之一秒的时候,该怎么办?这可不是什么科幻情节,在雷达、激光测距、高能物理实验里,精确到皮秒级的时间测量,是家常便饭。想达到 20 ps 的测量精度,传统“脉冲计数法”(也就是掐秒表)需要 50 GHz 的时钟,如果非得这样的话,你得精通光学和应用物理学,好好读一读这篇《基于克尔光孤子晶体微梳的 49GHz 微波 Q 波段振荡器》,我们贴心的为你放出DOI号:doi: 10.1109/JLT.2019.2930466。

今天我们不谈高大上的物理学,只聊聊如何在 FPGA 中,用一串加法器和 D 触发器,“数清楚时间”——这就是时间数字转换器(TDC)的魅力。

02时间的多米诺骨牌

想象你有一串多米诺骨牌,推倒第一块,它就会一块接一块地倒下去。这个“倒下去”的速度,就是骨牌之间的“传播延迟”。FPGA里的加法器也有类似的“骨牌”——它叫进位链(Carry Chain)。在FPGA里,为了把两个数加起来又快又稳,芯片厂商把加法器的“进位”信号做成了一个专用的、超高速的“高速公路”。这条“高速公路”的延迟,可以短到 20ps!

我们设计一个特殊的加法器串。正常情况下,它在算 111...111 + 000...000,结果是 111...111,风平浪静。但就在某一瞬间,我们给它一个“开始”信号(Start),让它突然开始算 111...111 + 000...001。这个小小的“1”,就像推倒了第一块骨牌,一个“进位”信号会从最低位开始,一级一级地向高位“链式传递”。这个“进位”信号在链上传播的距离,就代表了从“开始”到“现在”过去了多少时间。

但问题来了:我们怎么“看到”这个传播到哪里了呢?答案是:“拍照”!我们在每一个加法器后面,都接一个“小相机”(D触发器),这个“小相机”的快门,由另一个时钟信号(我们叫它“采样时钟”或Strobe)控制。当“快门”一闪,所有“小相机”就同时拍下一张照片,记录下此刻进位信号传播到了哪一级。比如,照片显示前10级都变“0”了,那我们就知道,从“开始”到“拍照”这一刻,进位信号跑了10级。

8545f488-83ab-11f0-a18e-92fbcf53809c.png

关键问题来了:每一级进位链到底有多长?我们可以使用一个标准时间来预先测量,例如说看 1 us 内传播了多少级进位链,从而得到每一级的延迟。可现实是,每一级的延迟并不完全一样!FPGA 内部的进位链并不是一颗颗“标准骨牌”。有的块近(Slice 内),有的远(跨 Slice)。这怎么办?别慌,我们可以像摄影测量那样,对每个“骨牌段”单独标尺!

03码密度法:时间标尺的“数豆子法”

我们用了一个很巧妙的方法——码密度法,听起来高大上,其实就像……数豆子!我们让 Start 和 Strobe 信号变成两个不同频率的、不相关的时钟(clk_i 和 clk_d),拍照的频率要显著大于 Start 对应时钟的频率(可以理解为骨牌重新摆放好的操作频率),然后持续反复的摆好、推倒、再拍照。这样操作的目的是为了保证每次拍照的传播时间是随机的,也就是下图中的 t 是在 [0, Tc) 之间随机分布的,Tc 是 clk_d 的周期,也就是拍照的周期。

85587b3a-83ab-11f0-a18e-92fbcf53809c.png

每次拍,骨牌只倒到某一块,这个“最后倒下的块”的编号是我们关心的。我们反复拍了很多很多次,记录每一块“成为最后倒下者”的次数。次数越多,说明这块延迟时间越长——就像谁碗里的豆子最多,谁“最拖沓”。

这样,我们就得到了整条进位链的延迟分布图,堪比给骨牌链打上精确刻度线!通过这种方法,我们就能精确地测量出每一级进位链的真实延迟时间,无论它是快是慢。然后,我们把这些数据存成一个“查找表”。

一旦我们有了这个“查找表”,TDC就真正“毕业”了,以后再要测量一个时间间隔,我们只需要:给一个“开始”信号,用“快门”拍一张照,得到进位信号传播的“级数”,最后查表把每一级的延迟加起来,就能得到精确的时间!

04总结一下这个妙招

1. 把 TDC 的 Start 和 Strobe 信号换成两个“频率不搭”的时钟;

2. 一次次拍照,记录骨牌(进位链)传播的终点;

3. 每个位置被“命中”的次数越多,说明它的延迟越长;

4. 统计出每一级进位单元的真实延迟,形成查找表,实现时间间隔的高精度换算。

Tip



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]