背景

在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级别的同步,具体的同步方法感兴趣的朋友可以留言,我们可以在后续博客中解释

CoaXPress 时间戳 Time Stamping的更多相关文章

  1. C# DateTime与时间戳转换

    C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳. 1. 什么是时间戳 首先要清楚JavaScript与Unix的时间戳的区别: JavaScript时间戳: ...

  2. nodejs中获取时间戳、时间差

    Nodejs中获取时间戳的方法有很多种,例如: new Date().getTime() Date.now() process.uptime() process.hrtime() 平时想获取一个时间戳 ...

  3. EF里Guid类型数据的自增长、时间戳和复杂类型的用法

    通过前两章Lodging和Destination类的演示,大家肯定基本了解Code First是怎么玩的了,本章继续演示一些很实用的东西.文章的开头提示下:提供的demo为了后面演示效果,前面代码有些 ...

  4. fmt标签把时间戳格式化日期

    jsp页面标签格式化日期 <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f" %> ...

  5. MySQL对时间戳的转换处理

    开发中很多时候在数据库里都会存储Long类型的时间戳,而时间戳做比对会相对麻烦 我的绝决方案: SELECT FROM_UNIXTIME(LEFT(create_time,10), '%Y-%m-%d ...

  6. Kafka消息时间戳(kafka message timestamp)

    最近碰到了消息时间戳的问题,于是花了一些功夫研究了一下,特此记录一下.   Kafka消息的时间戳 在消息中增加了一个时间戳字段和时间戳类型.目前支持的时间戳类型有两种: CreateTime 和 L ...

  7. Python时间戳和日期的相互转换

    Python时间戳和日期的相互转换 (2014-03-17 11:24:35) 转载▼   分类: Python 当前时间戳:time.time() 当前日期:time.ctime() 1.Pytho ...

  8. 时间戳TimeStamp处理

     我获得这个时间戳是得想除以1000再处理的,看看你们的需要先除多少再处理 //时间戳处理 NSInteger time = timeStamp / 1000; NSNumber *timer = [ ...

  9. C#中DateTime.Ticks属性及Unix时间戳转换

    1.相关概念 DateTime.Ticks:表示0001 年 1 月 1 日午夜 12:00:00 以来所经历的 100 纳秒数,即Ticks的属性为100纳秒(1Ticks = 0.0001毫秒). ...

随机推荐

  1. 无需Flash录视频——HTML5中级进阶

    前言 HTML5的权限越来越大了,浏览器可以直接调用摄像头.麦克风了,好激动啊.我们要用纯洁的HTML代码造出自己的天地. 视频采集 本篇介绍的栗子 都是在chrome 47 版本以上的,低版本的可能 ...

  2. ES6-11学习笔记--正则表达式的扩展

    y修饰符 u修饰符   复习以前的修饰符: i(忽略大小写) m(多行匹配) g(全局匹配)   y修饰符:粘连修饰符 const str = 'aaa_aa_a' const reg1 = /a+/ ...

  3. break,return,continue的区别和作用

    学习目标: 理解break.return.continue在循环中的区别和作用 学习内容: 1.break break表示结束当前所在的循环. 循环输出到3,当i等于4后,跳出当前循环,继续向下执行循 ...

  4. 微信小程序命名规则

    目录分析 src是主要的开发目录,各个文件实现功能如下所示: ├─.idea │ └─libraries ├─.temp ├─config └─src ├─assets │ └─images ├─co ...

  5. numpy---(上)

    Numpy Numpy ndarray N维数组对象ndarray, 是一系列同类型数据的集合, 索引以0下标开始, 创建一个ndarray对象, 需调用array函数: numpy.array(ob ...

  6. STL空间分配器源码分析(三)pool_allocator

    一.摘要 pool_allocator是一种基于单锁内存池的空间分配器,其内部采用内存池思想,通过构建16个空闲内存块队列,来进行内存的申请和回收处理.每个空闲队列管理的内存块大小固定,且均为8的倍数 ...

  7. NodeJS学习day1

    今天主要学习的IO操作 const fs = require('fs') fs.readFile('./files/11.txt','utf-8',function(err,daraStr){ //读 ...

  8. Java学习day41

    在力扣刷了几个算法题,对比了自己和优解的差距

  9. 洛谷 P2392 kkksc03考前临时抱佛脚, dp / 深搜

    题目链接 P2392 kkksc03考前临时抱佛脚 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目 dp代码 #include <iostream> #includ ...

  10. 2021.07.17 题解 CF1385E Directing Edges(拓扑排序)

    2021.07.17 题解 CF1385E Directing Edges(拓扑排序) CF1385E Directing Edges - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) ...