原创 基于Cyclone V GX FPGA的TDC设计及测试结果分析

2024-4-20 10:41 1463 8 7 分类: FPGA/CPLD 文集: TDC

基于Cyclone V GX FPGA的TDC设计及测试结果分析

概述

       基于老工艺的FPGA的TDC已经经过验证测试,可以安全可靠的用于产品。在逻辑资源受限的情况下,单通道TDC测量精度可以做到15ps左右,如果给予足够资源的情况下可以进一步提升精度。

之前已经分析了28nm器件逻辑资源的结构,与老工艺器件还是有些差别,如果应用这种工艺器件来实现TDC是否可以从老器件无缝移植过来呢?这是本文需要探讨的问题。

新老工艺相对TDC设计的不同挑战

       使用老工艺FPGA进行TDC设计的时候,设计者首先面临的最大挑战是LAB之间以及LAB内部存在超大时延,所以TDC设计者在进行TDC设计的时候首先需要将这些超大BIN进行“切割”后平滑,否则TDC的精度会受到限制。

新工艺在ALTERA高端器件的表现(或者从公开发表的有关竞争对手Xilinx器件的论文同样提到)就是这种“超大”BIN已经消失,各延时单元的延时已经解决并得到均衡。可是从之前我们对应CycloneVGX器件逻辑单元的分析发现,这种超大时延仍然存在LAB之间。更为严重的情况是,每间隔一个延时单元,出现0延时的单元。这为TDC设计者带来了额外的挑战,意味着很可能大量的0尺寸BIN出现。这个结论在公开发表的论文中已经得到证实,如图1所示。

图1:通过码密度测试得到的BIN尺寸(a),TDL延时链中不同BIN尺寸对应的计数直方图(b)

       从图1中b可以看出,大量统计位于0尺寸的BIN,也就是说延时链中大量单元的延时时间是0。

该论文讨论了作者使用了优化方法来解决上述问题,该办法非常灵巧,通过BIN重新定位解决了0尺寸BIN“乱入”等问题。这个方法在需要使用Xilinx器件设计TDC的时候也有应用到。通过研究,个人理解此方法比较繁琐,可能需要大量的离线迭代最终统计得到重定位的BIN,经过一段时间的尝试,放弃此方法,采用其它方法同样解决了上述问题。

初步测量结果

       Cyclone第五代器件逻辑单元ALM中包含4个寄存器,所以延时单元与寄存器的比例是1:2。那么在形成TDC的时候,存在两种可能,使用顶部寄存器锁存还是选择底部寄存器锁存。甚至不加约束,让编译器自己选择寄存器锁存,只不过这样的话锁存的寄存器一致性大打折扣。

测试结果显示,不管使用顶部寄存器锁存还是使用底部寄存器锁存,实验结果差别并不大。如图2所示为实测结果。

图2:使用400MHz采用时钟采集延时链Tap输出结果

       上述测试结果中,总共占用了486个延时单元,测试显示第11个延时单元有一个超大延时,延时结果大概56ps左右。剩余单元的延时尺寸均被压制在30或30ps之内。出现这个问题的原因,初步分析应该是使用的512个延时单元的延时链长度不足导致的。

如何处理第一个LAB较大延时?

        在上面图2的实验结果中,在第一个LAB中出现几个延时较大(最大57ps,远大于平均值,即5ps)的延时单元。能想到的办法无非是两个,第一个是增大采样时钟到500MHz,这个方法在Cyclone V系列器件里似乎很难实现,内部逻辑很难保证稳定跑在这个速率。第二个方法就是增长延时链长度到640,然后截断出现大延时的延时单元。如图3所示,采用640个延时单元后,采用截断8个,初始段仍然存在超大尺寸BIN(类似事件“堵车”堵塞一样)。对比如2和图3,图3后段还存在空间,那么是否可以将截断长度增大,看看是否能解决此问题呢?

图3中最大延时单元出现在第14个(cell - 13)上,所以需要截断cell13之前的延时单元,经过实验发现不能随意截取,否则编译器会报布局错误(原因不明),经过不断尝试发现将截断点选择在cell-23上能通过编译,结果如图4所示,当增大截断长度后,确实可以解决该问题。图5测试查找表校准曲线。注意图4中平均BIN尺寸是5.5ps。

图3:640个延时单元 截断前面8个,最大延时为48ps

图4:640个延时单元,400MHz采样,最大延时29ps,其余大都低于20ps

图5:查找表校准曲线

作者: coyoo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1010859.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论6条评论)

登录后参与讨论

用户1718849936346 2024-6-20 14:32

没办法私信,没有权限

coyoo 2024-6-15 15:46

sSSSSSoda: 感谢大佬的回复,我看到一篇论文简单的把四个延时合在一块,只取一个reg输出,我把这种方法应用在了我的进位链上,但是发现编译过后,进位链的顺序被打乱了,请 ...
我感觉第一种方法,就是你当前使用的方法类似。你是4个单元合并取一个输出,CycloneV系列是一个ALM包含2个ALUT+4个Reg,其中每个ALM的第二个ALUT从Quartus软件给出的分析显示其延时时间总是为0(具体实际是否为0,还未确认),所以有人将第二个ALUT不用作延时单元,就相当于两个ALUT取一个输出。我不清楚你所谓的四个延时合一块是否跟这个用法类似,我只是直觉似乎类似。

sSSSSSoda 2024-6-14 21:18

coyoo: 公开论文中看到有至少3种方法来解决这个问题。首先,有人非常粗暴地仅使用有延时时间的ALUT,0时间的不用;其次,看到有使用Xilinx器件的用户遇到类似问题,采用 ...
感谢大佬的回复,我看到一篇论文简单的把四个延时合在一块,只取一个reg输出,我把这种方法应用在了我的进位链上,但是发现编译过后,进位链的顺序被打乱了,请问这种方法是不适用吗?以及想请教一下第一种粗暴的方法该怎么实现呢

coyoo 2024-6-14 15:05

sSSSSSoda: 您好 请问您是如何解决延时链中大量单元的延时时间是0这个问题的?
公开论文中看到有至少3种方法来解决这个问题。首先,有人非常粗暴地仅使用有延时时间的ALUT,0时间的不用;其次,看到有使用Xilinx器件的用户遇到类似问题,采用的是离线校准方法;最后,有人发布统计0,1方式来解决此问题。大致,就这些方法吧。

sSSSSSoda 2024-6-14 14:24

大佬您好 可以加个联系方式交流一下吗

sSSSSSoda 2024-5-31 16:20

您好 请问您是如何解决延时链中大量单元的延时时间是0这个问题的?
相关推荐阅读
coyoo 2024-12-25 14:13
ALTERA Cyclone 10器件的使用-8:特定的上电顺序
概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 1...
coyoo 2024-12-22 11:46
AD9218子板在新处理板上表现的问题
概述 新的数据处理板融合了数字和数据处理功能模块,计划采用ADI的4通道串行ADC芯片代替之前的并行ADC。由于初次使用,所以初次设计时预留了AD9218的子板的插槽。 在调试AD9633功能的同时并...
coyoo 2024-12-14 17:15
在Cyclone 10 GX器件上实现高精度TDC探索
概述 Cyclone 10 GX器件的ALM结构与Cyclone V类似,所以在Cyclone 10 GX器件上实现TDC功能理论上是可以完全参考甚至移植自Cyclone V系列的成功案例。但是,现实...
coyoo 2024-12-10 13:28
Cyclone V GX FPGA设计TDC的优化问题
概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些...
coyoo 2024-12-03 12:20
比较器检测模拟脉冲说明(四)
概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解...
coyoo 2024-11-16 13:54
不同ADC采样同一前端模拟信号时转换用时差异分析
概述 同一组前端模拟信号接入由不同型号ADC组成的模数转换电路时,采样后在FPGA中发现采样用时差异较大。本文主要分析这个时间差异形成的原因,并记录该差异产生对系统造成的影响。系统数字化简介 项目前端...
EE直播间
更多
我要评论
6
8
关闭 站长推荐上一条 /3 下一条