FPGA控制TDC-GPX2时间间隔测量(三)

前两篇分别介绍了TDC-GPX2的使用详情以及FPGA控制代码,本文将会该处测量精度以及操作过程

测试平台

由于目前没有高精度时间间隔测量的仪器在身边(之前还有过一台SR620,现在没有了),所以将会采用FPGA自身产生两个可控的时间间隔,最后将测量的结果通过ILA打印出来。

启动测量

开始测量之前,我们先检查硬件连接,确保通信引脚(SCK MOSI MISO SSN INTERRUPT)、参考时钟引脚(CLK)、脉冲触发引脚(STOP1)顺利连接到FPGA的引脚上,之后启动VIVADO,生成BIT流文件之后下载到芯片中,此时ILA的显示界面如下所示:
在这里插入图片描述
目前所有的值都是初始值,然后我们按下启动测试按键,再来看看ILA的界面:
在这里插入图片描述
此时状态已经跳到状态5(等待状态),数据校验值和预期的一致,目前结果值还没有,因为还没有给STOP脉冲。下面我们给出STOP脉冲,根据程序中所给的stop脉冲间距是10个时钟周期(如下所示):

stop_test #(
    .stop_time(4'd10),		//脉冲间隔
    .stop_continue(4'd3)	//每个脉冲高电平所持续的时间
) u1_stop_test(
    .sys_clk(sys_clk),
    .sys_rst_n(sys_rst_n),
    
    .stop_en(key2_value),
    
    .stop_pulse(stop_pulse3)
);

所以时间间隔应该是(1s/50M)×10=200ns,下面我们给入STOP信号,ILA显示如下:
在这里插入图片描述
上述结果第一个参数表示REFID,结果相差1,说明两个STOP脉冲处于相邻的两个时钟周期内,在分析第二个参数,STOP1为00efc2,用十进制表示就是61378ps=61.378ns,STOP2为00ef85,用十进制表示就是61317ps=61.317ns,按照前文所述的计算公式,得到的时间间隔就是:200-61.378+31.317=199.939,测量误差为199.939-200=0.061ns=61ps,下面我们多测几组数据如下所示:
(时间间隔:200ns)
在这里插入图片描述
上图中的误差为13ps;
在这里插入图片描述
上图中的误差为10ps;
在这里插入图片描述
上图中的误差为23ps;
接下来我们更改时间间隔为35个时间间隔,代码如下所示:

stop_test #(
    .stop_time(16'd35),
    .stop_continue(16'd3)
) u1_stop_test(
    .sys_clk(sys_clk),
    .sys_rst_n(sys_rst_n),
    
    .stop_en(key2_value),
    
    .stop_pulse(stop_pulse3)
);

测量结果如下所示:
(时间间隔700ns)
在这里插入图片描述
上图所测的时间间隔为:700.096ns,误差96ps。
在这里插入图片描述
上图所测的时间间隔为:700.130,误差130ps。
在这里插入图片描述
上图所测的时间间隔为:700.056,误差56ps。

思考

上面的第二组数据明显误差增大,甚至达到百ps级别,我想这个和基准频率源有关,因为FPGA采用晶振作为时钟源,当周期数提高后,对应的误差也会增大,这就是误差的主要来源。其次,FPGA的DCM时钟管理单元是否可靠还有待考究。

结语

本次实验介绍就到此结束了,如果大家有更好的建议或者本文档写的不到之处,欢迎评论区指出。
以下是本实验的工程链接,
CSDN资源链接:
FPGA控制TDC_GPX2时间间隔测量
百度网盘链接:
链接:https://pan.baidu.com/s/1vWyToTMimA1mgutUf7LGkw?pwd=1146
提取码:1146

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值