CoaXPress 时间戳 Time Stamping
背景
在CXP2.0之前,CXP没有定义Time Stamping时间戳的概念,但是用户对Time Stamping是有实际需求的,比如我们要对比多台设备拍摄同一个物体不同角度的照片,或者记录触发完成的时刻,如果相机没有时间戳,那么采集卡厂商就必须提供另外的方式实现该功能。
通常来说,HOST设备厂商自己也会提供一套时间戳的定义方法,这个时间戳通常从GPS秒脉冲获得参考,用于触发时刻的标记或者照片拍摄时刻的标记。在展开描述之前,笔者说明一下,虽然CXP2.0定义了time stamp,但是目前支持2.0的相机和设备厂商多数没有引进该功能,因此没有实际的应用场景作为参考,大家可以把这部分先做一个简单了解即可。
CXP Time Stamping简介
CXP2.0定义了一个统一时间戳,这个时间戳给来自HOST,DEVICE和软件关联的事件提供了统一的时间参考,可以用于记录准确的触发时刻,用来评估触发是否有被忽略或者延迟。
精度
CoaXPress 给time-stamping 提供10ns的精度(在100Mhz时钟基准下),通常对于area-scan类型的相机,10us的精度是最低要求,对于line-scan类型的相机,10ns是最低要求。
原理
Device和HOST都各自维护一个自己的本地时钟。两个时钟都是独立且运行的,相位、频偏,以及温漂都不相同。Device使用其本地时钟为内部事件添加时间戳,设备的时间戳全称为 “in the time of the Device”,也缩写为“t-dev”。类似地,HOST主机使用其本地时钟为任内部事件添加时间戳,全称“in the time of the Host” ,缩写 “t-Host”。
Device周期性的向HOST发送Heart Beat消息,该消息中就包含了 “t-dev”信息,HOST利用收到的 “t-dev”信息来建立HOST与DEVICE之间的时间关系,可以用一个简单的一阶线性方程表示他们的时间关系:
TimeT-HOST = (TimeT-DEV * CSF) + COF
1: TimeT-HOST 是t-host 时间参考;
2: TimeT-DEV是DEVICE时间参考;
3: CSF指Clock Scaling Factor;
4: COF 指 the Clock Offset;
通过这个公式,HOST可以将任意一个DEVICE发送的EVENT事件对应的时间戳转换为本地时间戳,这样HOST和DEVICE的时间戳就有了确定的关系,有同学会问:频率和相位不会漂吗?当然会,所以对精度要求高的应用可以取多次的均值计算或者最小二乘法做回归。下面这个图就展示了漂移的现象
如果多台设备间还要做同步,那么根据同步的精度等级可以选用fIEEE 1588 (PTP) 同步方案或者秒脉冲同步、相同参考时钟和触发信号同步的方案,比如PXIe接口的HOST就可以利用PXIe_CLK100和PXIe_SYNC100实现ps级别的同步,具体的同步方法感兴趣的朋友可以留言,我们可以在后续博客中解释