欢迎淘宝搜索 飞灵科技,我司相关新产品陆续上线。

本文将以 IMX6ULL 为例,描述具体的 IEEE 1588 功能的实现。本文参考了 NXP 官方提供的 RM 手册。

IMX6ULL 为了支持 IEEE 1588 或类似的时间同步协议的实现,MAC 与时间戳模块相结合,以支持精确的输入和输出帧的时间戳。设置 ENETn_ECR[EN1588] 以使能 1588 的支持。
IEEE 1588 功能的概述如下图:

1. Adjustable timer module

  可调定时器模块(TSM)实现了自由运行计数器(FRC),这个 FRC 生成时间戳。FRC 使用时间戳时钟进行操作,可以根据您的系统需求将其设置为任何值。
  通过专用的校正逻辑,定时器可以被调整,以允许同步到远程主机,并提供同步的时间参考到本地系统。定时器可以被配置为在一个固定的时间周期后触发中断,以允许软件定时器的同步或执行其他同步的系统功能。
  该定时器通常用于实现一秒的周期;因此,其取值范围为 0 ~ (1 × 109)-1。周期事件可以触发中断,软件可以根据需要维护秒和小时的时间值。

1.1 可调定时器的实现

  可调计时器由可编程计数器/累加器和校正计数器组成。两个计数器的周期和它们的自增速率都可以自由配置,允许对计时器进行非常精细的调优。

  计数器产生当前时间。在每个时间戳的时钟周期中,一个常量值被添加到当前时间中,被编程在 ENETn_ATINC。该值取决于所选的时间戳时钟频率。例如,如果它工作在 125 MHz,则将增量设置为 8 表示 8 ns。
  在 ENETn_ATPER 中配置的周期,定义了计数器转换时的模数。在典型的实现中,周期被设置为 1 × 109,以便计数器每秒钟进行一次转换,因此所有时间戳都表示 1 秒周期内的绝对纳秒。当周期到达时,计数器转化将重新开始遵守周期模数。这意味着它并不一定要从 0 开始,而是用数值(Current + Inc - (1 × 109))加载到计数器,假设周期设置为 1 × 109
  校正计数器完全独立地工作,并随着每个时间戳时钟周期递增 1。当它达到在 ENETn_ATCOR 中配置的值时,它将重新启动并指示定时器使用修正值进行一次增加,而不是正常值。
  正常的和校正的增量都在 ENETn_ATINC 中配置。为了加快定时器的速度,可将修正增量设置为大于正常增量值。若要减慢定时器,可将修正增量设置为小于正常增量值。
  通过使能 slave 模式(ENETn_ATCR[slave] = 1),计时器被忽略,当前时间由外部模块之一提供。如果系统中有多个模块必须从单个定时器操作,这是很有用的。当使能了 slave 模式时,您仍然必须将 ENETn_ATINC[INC] 设置为主模式的值,因为它用于内部比较。

2. 传输时间戳

  只有 1588 事件帧 需要在传输时打上时间戳。客户端应用程序(例如,MAC 驱动程序)应该检测 1588 事件帧,并将 TxBD[TS] 与帧一起设置。

① 事件帧包含哪些请参考 PTP 报文格式 的《PTPv2 消息类型标识》章节

  如果设置了 TxBD[TS],则 MAC 将在 ENETn_ATSTMP 中记录帧的时间戳。ENETn_EIR[TS_AVAIL] 被设置来表明一个新的时间戳可用。
  软件在发送需要时间戳的帧时通过设置 TxBD[TS] 来实现握手过程,然后等待 ENETn_EIR[TS_AVAIL] 来确定时间戳何时可用。然后从 ENETn_ATSTMP 读取时间戳。所有事件帧都将完成这个过程。其他帧不使用 TxBD[TS],因此,不会干扰时间戳捕获。

3. 接收时间戳

  一个数据帧被接收,当 MAC 检测到帧的 SFD(start of frame delimiter)字段时,将锁住该定时器的值,并提供捕获到的时间戳到 RxBD[1588 timestamp]。所有的接收帧都将完成这个过程。

4. 时间同步

  可调定时器模块可用于同步节点的本地时钟到远程主节点。它实现了一个自由运行的 32 位计数器,还包含一个额外的校正计数器。
  校正计数器增加或减少自由运行计数器的速率,为同步使能计时器非常细粒度的变化,然而在执行校正时只增加非常低的抖动。
  应用软件在一个 slave 场景中实现了所需的控制算法,设置校正以补偿本地晶振的漂移,并将定时器锁定到网络上的远程主时钟。
  计时器和所有与时间戳相关的信息应该被配置,以显示一秒的真正纳秒值(换句话说,该计时器的周期被配置为一秒)。因此,取值范围从 0 到 (1 × 109) -1。在这个应用程序中,秒计数器是使用一个中断函数在软件中实现的,当纳秒计数器累加到 1 × 109 时执行中断函数。

5. 输入捕获和输出比较

  Input Capture Output Compare block 可以被用来为输入和输出事件提供精确的硬件计时。

5.1 输入捕获

  当相应的外部事件发生时,TCCRn 捕获寄存器锁定时间值。一个事件可以是 1588_TMRn 信号的上升、下降或任意边中的一种。事件将导致相应的 TCSRn[TF] 计时器标志被设置,表明已经发生了输入捕获。如果相应的中断通过 TCSRn[TIE] 字段使能,则会产生一个中断。

5.2 输出比较

  TCCRn 比较寄存器将加载相应事件应该发生的时间。当 ENET 自由运行计数器的值与 TCCRn 寄存器中的输出比较参考值相匹配时,相应的标志 TCSRn[TF] 被设置,表示已经进行了输出比较。如果 TCSRn[TIE] 使能,则会产生相应的中断。对应的 1588_TMRn 输出信号将根据 TCSRn[TMODE] 被断言。

5.3 DMA 请求

  DMA 请求可以通过设置 TCSRn[TDRE] 来使能。当 TCSRn[TF] 定时器标志被设置时,就会生成相应的 DMA 请求。当 DMA 完成时,相应的 TCSRn[TF] 标志被清除。

IMX6ULL 的 IEEE 1588 功能相关推荐

  1. 交换机配置工具_Soce在FPGA上为任务关键型应用量身定制的IEEE 1588感知以太网交换机...

    点击蓝字 关注我们 摘要 现代FPGA和可重配置平台的长期供应,灵活性和集成能力已使这些器件成为航空航天和国防市场上新型嵌入式设备的首选技术.同样,以太网技术与用于亚微秒定时同步的IEEE 1588标 ...

  2. Soc-e在FPGA上为任务关键型应用量身定制的IEEE 1588感知以太网交换机

    摘要: 现代F​​PGA和可重配置平台的长期供应,灵活性和集成能力已使这些器件成为航空航天和国防市场上新型嵌入式设备的首选技术.同样,以太网技术与用于亚微秒定时同步的IEEE 1588标准的使用相结合 ...

  3. IEEE 1588/802.1AS标准、硬件,Linux软件学习建议

    欢迎淘宝搜索飞灵科技,我司相关新产品陆续上线. 想学习IEEE 1588/802.1AS时钟同步技术?看完这篇文章,你就知道从哪里入手学习了.IEEE 1588/802.1AS首先它是IEEE制定的标 ...

  4. IEEE 1588的初步认识

    以太网在1985年成为IEEE802.3标准后,在1995年将数据传输速度从10Mb/s提高到100Mb/s的过程中,计算机和网络业界也在致力于解决以太网的定时同步能力不足的问题,开发出一种软件方式的 ...

  5. ptp协议服务器,ptp服务器 ieee1588 ieee 1588 1588对时

    ptp服务器, ieee1588, ieee 1588, 1588对时,ptp 1588,ieee 1588 ptp, ptp时间服务器, ieee1588 ptp, ieee1588时钟,1588 ...

  6. IEEE 1588 时钟类型介绍

    如果您不是很熟悉IEEE 1588,你可能会对看到的时钟类型感到困惑,如下: ordinary clock/普通时钟 master clock/主时钟 slave clock/从时钟 slave on ...

  7. IEEE 1588 校时

    https://code.google.com/p/ptpv2d/ 转载于:https://www.cnblogs.com/liangxiaofeng/p/3611437.html

  8. IEEE 1588 Ordinary clocks

    6.5.2 Ordinary clocks The model of an ordinary clock is illustrated in Figure 2. Figure 2 ⎯Model of ...

  9. S32K148开发板Ethernet相关内容

    最近在做一些关于S32K148开发板的使用,研读了部分该开发板关于ENET模块的官方文档. 2 Ethernet MAC (ENET) 2.1 Chip-specific ENET informati ...

  10. IEEE 802.1AS-2011 第七章 桥接局域网的时间同步模型

    本文翻译自IEEE Standard for Local and metropolitan area networks-Timing and Synchronization for Time-Sens ...

最新文章

  1. MVC4实现批量更新数据
  2. Java设计模式——单例模式的七种写法
  3. 什么是Internet
  4. Microsoft SQL Server学习(二)
  5. SAP Cloud for Customer里新的Lead UI对Mashup集成的支持原理
  6. code craft_以Craft.io为先—关于我们行业的实践职业道路的系列
  7. 【渝粤教育】国家开放大学2018年春季 0675-22T中级财务会计(2) 参考试题
  8. Qt值得学习吗?详解Qt的几种开发方式
  9. 系统架构工作笔记-数据展示进程与读取数据进程分离,实现低耦合(展示软件可适用任意厂家数据库)
  10. EAST算法超详细源码解析:数据预处理与标签生成
  11. MyBatis当多个请求参数时处理方式
  12. Bailian2758 菲波那契数列(2)【递推】
  13. c++ string 删除第一个字符_字符串操作的全面总结
  14. PHP实现zip字典破解
  15. java大牛博客链接合集
  16. ubuntu下文本标注工具BRAT全程离线安装
  17. java 8新特性之effectively final
  18. C++初级主题--名字空间域和类域
  19. 四川长虹IHO-3300AD_高安版_S905L3芯_精简优化_线刷固件包
  20. 单元主服务器解决性能瓶颈的方法,HBase

热门文章

  1. 信息检索-矩阵理论与线性代数
  2. 给工具箱中的控件添加图标
  3. 联想笔记本prtsc不能截图_Win10系统下怎么截屏
  4. laravel框架查询条件
  5. laravel 框架中的路由
  6. 日志文件夹不存在或被删除
  7. python全套视频免费教程_《python免费视频教程33》 请问谁有靠谱的Python全套视频教程,求推荐分享...
  8. python数据挖掘的基本流程有哪些?
  9. 给idea换自定义背景图片的快捷键
  10. 第四轮学科评估计算机专业排名,第四轮学科评估