基于FPGA的TDC(数字时间转换)设计

额,老师让做一个TDC的计时模块用FPGA,那就做呗。。。

首先说一句,我在做的过程中发现有些人说vivado不太可以做TDC的后仿,我自己试着发现是可以的,当然也许我其实是错的 哈哈哈 先不管了。

首先上一张后仿的图 

大家不要在意我的傻吊命名。我设置的起始和结束信号之间的差值是21ns,那我最后的结果是多少呢

(5-1)*4+(37+27)*76/1000=20.864ns 我不知道精度算不算高。论文说分辨率达到50ps左右 我表示信号的延时的差可能都不止50ps。。。

其中5是粗计时,reg3是37代表起始时刻细技术和reg3_stop代表结束时刻细技术。76为一个进位链的延迟(大概哈)

我的方法是这样的:

假设上图第一个信号是时钟信号,第二个是我们所要求的测量时间,我们可以把它分为如下的测距形式:

这也就解释了为什么我后仿的公式粗技术要减1了吧。

那么细技术怎么计,有很多方法,什么相移法啊,游标法啊。。。这个大家看看论文就知道了。FPGA的话还是要用进位链来做,利用将进位链收尾相连实现计时。

以xilinx为例,进位链如下:

一个slice里有一个carry4,起始原理很简单,通过位选择器mux赋予一定的控制信号,使得我们的计时信号的走向为

然后co3信号接下一片的cin信号,以此往复。这样每一个进位输出CO变会间隔一定的延时,而这个延时便是信号在走线+位选择器的逻辑延时,可以近似看成相等。如果以一整个carry作为一级延时,可以得到更好的延时一致性但会牺牲精度。这个大家可以取舍。

由于我只是进行了后仿所以对实际结果并不是很确定,暂时先更到这,也有可能就是错的也不一定哈哈哈,疫情结束回去看看结果。

不过总结一下给需要的小伙伴:

1.信号的走线延时很关键

2.进位链的布局,以及后续D触发器的布局很关键,影响延时和一致性

3.进位链的原理要明白,起始输入信号一定要接CYINT接口因为是第一片

4.inputdealy要充分考虑

 

  • 13
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值