尝试将udp包缩小为只包含1个采样点,此时udp包大小为16字节头部加192*2字节采集数据,总共400字节。
程序中需要修改降低采样率,避免缩小udp包导致过高的udp包发送速率又影响到时延。
将程序修改为20khz采样率,采集20个采样点,则每隔50us将会发送1个400字节大小的udp包。
程序执行结果如下:


udp包发送时延与udp包数量、内容,均符合预期。
上示波器测量延时:

测量第一个黄色脉冲信号和第一个蓝色方波信号上升沿之间时延,大约为30us。后面几个周期,信号之间无法同步,可能需要降低采样率。
降低采样率后:

该情况下FPGA信号和上位机信号基本可以一一对应,延时存在一些波动,大致在20us到40us之间的范围。
目前测量时延,还是需要通过FPGA与上位机程序,分别在设定的时刻发送信号,测量两个信号上升沿之间差值。
这种方式测量存在一些问题。一方面,上位机程序产生信号的精度较低,测出的时延精度也较低;且上位机信号高电平时间较长,高采样率情况下,信号变化跟不上设定的采样率,不能和FPGA的一一对应,因此后面的几个周期的信号时延测量存在问题,低采样率可以满足,但是高采样率情景的时延难以测量。
另一方面,每个udp包的信号时延,还是需要在示波器上,手动转旋钮一一测量,如果采样点多达几百几千个,手动测量的工作量过大。
本文章使用limfx的vscode插件快速发布