基于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
版权声明:本文为博主原创,未经本人允许,禁止转载!
用户1718849936346 2024-6-20 14:32
coyoo 2024-6-15 15:46
sSSSSSoda 2024-6-14 21:18
coyoo 2024-6-14 15:05
sSSSSSoda 2024-6-14 14:24
sSSSSSoda 2024-5-31 16:20