高精度时间测量就像数碗里的豆子?聊聊FPGA中的TDC原理

部署运行你感兴趣的模型镜像

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级。

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

03

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

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

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

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

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

04

总结一下这个妙招

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

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

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

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

Tip

(本文基于西安智多晶微电子《基于码密度法的TDC_DEMO用户指南》整理

(全文完)

声明:我们尊重原创,也注重分享;文字、图片版权归原作者所有。转载目的在于分享更多信息,不代表本号立场,如有侵犯您的权益请及时联系,我们将第一时间删除,谢谢!

图片

想要了解FPGA吗?这里有实例分享,ZYNQ设计,关注我们的公众号,探索

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值