原创 【博客大赛】基于FPGA的TDC那些事之再谈细时间

2013-5-16 12:06 8764 25 33 分类: FPGA/CPLD 文集: TDC

基于FPGATDC那些事之再谈细时间

王敏志

概述

         TDCFine TimeTDC的实际测量结果,目前实现TDC最常用的方法就是内插法。所以延时线(Delay Line)必然成了TDC的核心部件,通过Delay Line来实现在一个时钟周期内插入N个延时单元,TDC通过输出HIT和相邻时钟沿之间延时单元数目来输出测量结果即Fine Time。基于FPGATDC之延时线是通过FPGA的逻辑资源实现,由于其可编程性使得Fine Time需要一些特殊处理,本文就是讨论这些所谓的特殊处理。

 

延时线内插结构

         1是基于FPGA的内插结构TDC原理框图,理想情况下每个延时单元的延时时间τ1是一样的,而且非常小。ALTERA器件的组合逻辑的延时一般都是上百皮秒,不太适合于实现TDC的延时线。比如ALTERALCELL模块一般作为寄存器或者逻辑模块之间插入增加延时的基本模块,根据器件以及等级不同LCELL产生的延时时间会不同,但是基本都是在300ps左右。

         20130515164437862001.png

1:基于FPGATDC结构示意图

         实际实现TDC的时候,延时线不能通过逻辑直接实现,利用ALTERA器件内部逻辑的特殊结构,可以使得图1中的延时单元的延时保持在几十皮秒之间,并且整个延时线具有一定的一致性如图2所示。

         2是延时线的DNL测试结果,可以看出各个延时单元的延时时间具有一定规律,但是可以肯定的是图1τ1不是一个恒定值,τ1数值表现形式正如图2一样,利用统计学还可以将图2DNL进行进一步平滑,这不是本文的重点。仔细观察图2可以发现延时线的头四个延时单元没有延时时间,这是因为头四个延时单元在实现TDC功能的细时间编码的时候根本就没有使用。在实际测试的时候发现如果细时间编码从第一个延时单元开始的话会出现一些问题,后面一节会分析到底会出现什么问题,以及出现这些问题的具体原因。

20130515164444332002.png

2

延时线捕获HIT

按照正常逻辑,延时线的起始肯定是从第一个延时单元开始,由于延时线内部各个延时单元的延时时间是基本固定且均比较小,而临界位置,即第一个延时单元在捕获HIT的时候存在很大的“uncertainty”即不确定性,从而导致第一个延时单元的延时时间超大,如图3所示。

20130515164452495003.png

3

3中第一个延时单元的延时时间达到700ps左右,而剩下的延时单元和图2几乎无异。为了顺利“捕获”HIT,利用第五个和第六个延时单元里数值变化产生一个捕获信号即HITOK,如图4中信号inst25所示。图5显示了HITOKHITTrigger)以及时钟之间的关系。

20130515164458975004.jpg

4

20130515164504892005.png5

HIT从进入FPGA引脚直到被延时线捕获,这中间的逻辑布线路径以及走线延时不受控制,而且延时时间相对较长,一般都以纳秒级计算,图5中的Tdelay示意出了从HIT到达FPGA引脚到被延时线“捕获”之间的时间。这段路径(path)又大致分为两大部分,一部分是从FPGA引脚到延时线所在的第一个LAB(如图6所示);第二部分是从LAB的里LUT的输入端口(input port)到第一个延时单元的输入(如图7所示)。图7中的黑圈是HIT到达LABLUT的端口,从此端口到图7中紫色圈即为上述路径的第二部分,由此HIT才算进入到延时线,后面红色圈住的即延时线后面的Register阵列中的一个。HIT进入延时线后为了稳定地“捕获”它,所以在编码Fine Time的时候不使用头4个延时单元的数据,因为如果使用就会出现图3所示的状况。因为如果使用第一个延时单元,我们无法严格切割上述第二段路径和第一个延时单元,所以干脆将头4个延时单元一同“cut”掉,这样保留的延时线段是非常纯粹的“延时线”。

20130515164512362006.jpg

6HIT从引脚到LAB的路径

20130515164519990007.jpg

7HITLABLUT端口到延时单元路径

7所示的路径的延时时间,依据不同的LUT端口,会有不同,但是基本都在几百皮秒以上,所以必须要将其和延时线切割。图8显示了这段路径的具体延时时间,以及相邻部分延时线的各个延时单元的延时时间。可以看到这段路径的延时时间是782ps,而且延时单元的延时时间为51ps,当然这是TimeQuest报告出来的结果,实际运行出来的结果大同小异。

20130515164525366008.jpg

8

 

结论

    本文分析了基于FPGATDC测量结果即Fine Time具体构成,以及在利用FPGA的逻辑资源设计延时线的时候需要注意的一些事项。

文章评论13条评论)

登录后参与讨论

用户444716 2013-8-26 08:51

谢谢你哈,这样就比较有底了,谢谢!!!!

coyoo 2013-8-24 17:47

可以

用户444716 2013-8-24 16:07

刚弄通了,我的链不能加长是因为在加长链的过程中,相关的另一个编码程序出了错,所以后面加长的链无法作用到输出中,从而出现lost fanout的情况,谢谢你哈。 最近开始在测延时链的延时,我搭的延时链是在LE的LUT中通过CARRY_IN到CARRY_OUT构成延时链,而链中每个LUT对应的register输出相应LE的CARRY_IN输入值,不知道这样可不可以~~~

coyoo 2013-8-22 09:35

你们没有仔细看我的相关文章,不过我可以提示你一下,LUT只是LE的一部分,还有一部分是Register。至于你的carry-chain为何不能搭太长,这个需要具体问题具体分析,我真的不清楚你遇到的是什么问题。理论上Altera应该不会限制carry-chain的length的

用户444716 2013-8-22 08:55

可是你说怎么测的呢?因为每个LUT的COUT只能接到另一个LUT的CIN端,要测的话,肯定得将COUT引出来,而只能通过对应COMBOUT引出,这时候从CIN-》COUT的延时跟CIN->COMBOUT的延时相差会很大的。 还有,想请教你个问题,为什么我搭这个CARRY_IN->CARRY_OUT延时链时,延时链后面部分会被Ignore掉,原因报出是lost fanout,可是你们就能搭很长的链呀?一直不明白。。。

coyoo 2013-8-15 13:32

当然是实测结果,似乎想仿真也仿真不出来吧

用户444716 2013-8-15 10:26

你好,请问这个延时线的DNL测试是怎么做的?是通过QUARTUS软件仿真出来的吗?还是实际上器件测试出来的统计结果?

coyoo 2013-5-24 09:23

keyou123@sina.com

用户1700348 2013-5-23 22:44

目前还在研究阶段,以后准备推产品!LZ方便留个email吗?

coyoo 2013-5-22 11:34

是的,你们是研究呢还是做产品?国内做PET的不多吧?!一般大学实验室研究这个比较多
相关推荐阅读
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
coyoo 2024-11-10 13:04
ALTERA Cyclone 10器件的使用-7:FPGA片内RAM资源利用率思考
概述 项目使用的FPGA目标器件为Cyclone 10 GX系列规模最大一颗料,由于功能升级增加了功能模块更多,发现器件片内RAM不够使用了。为了探索片内RAM使用的利用率问题,从代码RTL级与编译软...
coyoo 2024-11-10 12:30
转知乎:幽灵般的人体成像技术-PET
幽灵般的人体成像技术——PET - 知乎...
coyoo 2024-11-09 10:26
AD9633默认情况下调试记录(二)
概述 所谓默认情况,即如器件手册中图2所标示那样。对应AD9633的调试,除了涉及到ADC自身,还需要兼顾前端驱动器,系统中AD9633驱动器使用了差分运算放大器,这里不在赘述,笔者已有相关文章论述。...
coyoo 2024-11-07 10:40
AD9633默认情况下调试记录(一)
AD9633在旁路SPI接口时如何在FPGA逻辑中确认字边界概述 AD9633与FPGA之间的LVDS接口初调试,ADC可以通过SPI接口对其内部寄存器进行各项配置。在SPI接口未调通之前,对LVDS...
coyoo 2024-11-02 12:18
比较器检测模拟脉冲说明(三)
概述 继续说明(二)探讨的比较器使用问题,然后延展到高速比较器选型问题。第四次迭代已经修正了比较器与后级或门器件的互联端接问题,然而比较器输出仍然在较低参考阈值电压设置时出现了问题。本文主要探索该问题...
我要评论
13
25
关闭 站长推荐上一条 /2 下一条