背景

在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. 写了一个web os脚手架

    预览地址在这里:http://thx.github.io/magix-os/项目地址在这里:https://github.com/thx/magix-os 介绍下目录结构 核心目录cores主要是构成 ...

  2. Kurento安装与入门12——Show DataChannel

    Show DataChannel 本示例允许用户在文本框中输入任意文字,输入的文字将以字幕的形式显示在传回的视频中. 官网文档 [Show DataChannel[1] 首先从github上获取代码( ...

  3. 微信小程序wx.login()获取openid,附:前端+后端代码

    微信小程序开放了微信登录的api,无论是个人还是企业申请的小程序均可使用. 首先创建一个项目,把这些代码都清空,我们自己写! 然后,开始写了!首先index.wxml,写一个button用于发起登录 ...

  4. android 布局的android:padding 和android:margin的区别

    android:layout_marginLeft指该控件距离边父控件的边距, android:paddingLeft指该控件内部内容,如文本距离该控件的边距. 如: 当按钮分别设置以上两个属性时,得 ...

  5. zx-editor 移动端(HTML5)富文本编辑器,可与原生App混合(hybrid)开发

    ZxEditor 移动端HTML文档(富文本)编辑器,支持图文混排.引用.大标题.无序列表,字体颜色.加粗.斜体. 可用于独立web项目开发,也可以用于与原生App混合(hybrid)开发. 源码地址 ...

  6. 判断链表是否有环(Java实现)

    判断给定的链表中是否有环.如果有环则返回true,否则返回false. 解题思路:设置两个指针,slow和fast,fast每次走两步,slow每次走一步,如果有环的话fast一定会追上slow,判断 ...

  7. Java在方法中定义可变参数类型

    学习目标: 掌握可变参数的应用 学习内容: 1.定义 在方法中传递数组有一种更简单的方式--方法的可变参数,其本质是一个语法糖,目的是让开发者写代码更简单. 2.语法 [修饰符] 返回值类型 方法名称 ...

  8. webpack 4.0 配置方法以及错误解决

    选取一个空目录来试验 全局安装webpack4.1之后 创建目录 mkdir webpacktest && cd webpacktes 初始化package.json npm init ...

  9. python---变量、常量、注释、基本数据类型

    变量 变量:将运算的中间结果暂存到内存中,以便后续程序调用. 变量的命令规则: 变量由字母.数字.下划线组合而成. 不可以数字开头,更不能全是数字. 不能是python的关键字. 不要用中文. 名字要 ...

  10. Ubuntu16更换flatabulous主题

    Ubuntu16更换flatabulous主题 安装unity-tweak-tool sudo apt-get install unity-tweak-tool 安装flatabulous主题 sud ...