虹科干货 | 适用于基于FPGA的网络设备的IEEE 1588透明时钟架构

导读:在基于FPGA的网络设备中,精确的时间同步至关重要。IEEE 1588标准定义的精确时间协议(PTP)为网络中的设备提供了纳秒级的时间同步。本文将介绍虹科提供的适用于基于FPGA的网络设备的IEEE 1588透明时钟(TC)架构,帮助您实现精确时间同步和高效通信。

在分布式系统中,传感器/执行器的事件和操作需要进行精确的时间协调,因为时钟差异可能导致操作失败。为了确保时间同步,每个组件都需要具备与其对等组件一致的实时时钟,这需要时间同步的常识。

随着电信网络从传统的时分复用 (TDM) 发展到基于分组的网络,额外的同步协议已成为必要。因此,近几十年来开发了多种同步技术,如 IRIG-B、LORAN-C、NTP、基于GPS的同步和SyncE。然而,它们不适合需要精确时间且成本较低的应用领域。

通过精确时间协议 (PTP),能够以最少的网络、计算和硬件资源需求达到亚微秒精度。鉴于此,IEEE 1588标准中定义的PTP正在成为许多需要精确时间同步的应用的最可行的解决方案。虹科推出用于可重新配置设备的IEEE 1588透明时钟 (TC) 可扩展架构,该逻辑解决了PTP实现的主要缺点之一,即级联拓扑中的错误累积

PTP操作过程

1、PTP操作类型

PTP操作可分为两个过程:时间同步和频率同步;

时间同步(或偏移调整):偏移量计算为主从时间之差;

频率同步(或频率调整):频率漂移为在两个N间隔的同步消息之间传递的从机时间差和主机时间差之间的比率。

图1. 延迟请求响应机制

2、延迟测量

PTP消息中发送的时间戳必须通过传播延迟进行纠正,传播延迟可以使用标准中定义的两种机制之一进行测量:延迟请求响应机制或对等延迟机制。

3、PTP时钟设备

PTP系统由PTP和非PTP设备的组合组成。PTP设备分为普通时钟(OC)、边界时钟(BC)、透明时钟(TC)和管理节点(MN)。

图2. PTP网络示意图

图2展示了一个简单PTP网络:OC是包含PTP时钟和单个物理网络连接的系统终端设备,而BC是具有多个物理端口的网络设备,它们不转发PTP接收到的消息,而是与主站同步并生成新的PTP消息以与其余从站共享其自己的定时参考。

TC有两种类型:端到端(E2E)TC和点对点(P2P)TC,它们也是网络设备。一方面,E2E TC像正常网络节点一样转发所有PTP和非PTP消息,此外,它们测量消息穿越TC所需的时间,称为驻留时间,并将其累积在PTP 中称为 CorrectionField的特殊字段。另一方面,P2P TC使用对等延迟机制来测量两个直接连接的端口(链路对等点)之间的链路延迟,并使用与Sync消息的入口传输路径相关的驻留时间和链路延迟来更新CorrectionField ,允许在网络拓扑更改后更快地重新配置。

此外,每个PTP设备可以作为一步或两步模式工作:一步时钟根据同步和延迟请求事件消息实时生成时间戳,而两步时钟则根据Follow Up和Delay Resp一般消息。

4、PTP执行

硬件与软件实现:PTP环境提供不同的可能时间戳点,如图3所示。结果的精度取决于时间戳的精度 。一方面,在网络接口卡 (NIC) 驱动程序或应用程序层中获取时间戳的纯软件解决方案具有平台独立性的优势,但会经历通过协议栈的消息传输延迟的巨大变化(也称为抖动)。驱动程序级别的时间戳是最佳软件解决方案,但需要修改网络驱动程序。

图3. 可能的时间戳点

另一方面,在硬件辅助方法中,时间戳是在介质独立接口(MII)处获取的。带有时间戳的消息越接近物理层,所达到的准确性就越好。由于硬件的帮助,使用IP内核和现场可编程门阵列 (FPGA) 已成为最精确和准确的时间戳方法。

其他实现方面:不同供应商的PTP IP核往往具有相似的架构。他们通常使用软CPU,例如Xilinx FPGA 中的Microblaze,包含用户应用程序和PTP堆栈软件,并在同一FPGA中构建完整的SoC解决方案。这些IP核通常由至少两个称为实时时钟 (RTC) 和时间戳单元 (TSU) 的硬件模块组成。RTC通常是一个64位计数器,表示秒和纳秒,并且可以通过更改内核的某些配置寄存器的值进行调整。TSU负责存储有关帧的信息,例如序列 ID、消息类型或时钟标识,以及时间戳信息。

基于FPGA的TC架构

1、实时时钟(RTC)

名为RTC的块代表可选的同步时钟源,例如,它可以是 IEEE 1588或GPS时钟。RTC 可以由一个计数器形成,该计数器在每个时钟周期按系统时钟周期递增。

2、循环冗余校验 (CRC) 检查器/发生器

CRC检查器模块检查接收到的以太网帧的帧校验序列(FCS)字段,以便检测传输过程中损坏的数据(由 于数据丢失或更改而导致的错误)。另一方面,CRC生成器模块重新生成新的FCS字段并将其附加在帧末尾,如IEEE 802.3标准中所定义。

3、On-The-Fly (OTF) 更正

OTF Correction的模块负责将相应的驻留时间动态添加到PTPv2事件数据包的CorrectionField字段中,如IEEE 1588-2008中针对单步TC的定义。也就是说,它不会等到接收到整个PTP消息才计算停留时间并将其添加到CorrectionField中。相反,一旦知道传入消息的CorrectionField,就会尽快将停留时间添加到其中。

4、驻留时间桥

该模块计算自PTP帧进入和离开TC以来经过的时间。每个消息的停留时间值被向下传递到OTF校正模块。由于入口时间戳临时存储在存储器中,并且计算的停留时间被传递到负责更新CorrectionField的模块。

图4. 驻留时间桥框图

5、实验结果

图5. 左侧为CorrectionField和测量延迟样本之间的比较;右侧为停留时间出现的频率

通过复制必要的模块,该设计可以轻松扩展到两个以上的端口:除了新的OTF校正器之外,每个新端口还应将两个额外的WB Master 0和WB Master 1子模块集成到驻留时间桥中,CRC检查器和CRC生成器连接到每个新的出口端口。在资源利用方面,每个额外端口的空间需求比较少数的Slices Registers和LUTs。不需要复制WB Slave 0,但必须调整CAM/RAM存储器的大小以应对PTP流量并在拥塞条件下正确执行。

虹科 IEEE 1588 IP 核方案

虹科IEEE1588v2兼容时钟同步IP内核,它能够准确地为IEEE 1588报文打上时间戳,并提供兼容的计时器,广泛应用于汽车、工业、广播和航空航天等行业。其能够提供许多应用所需的精确时间同步,而不需要任何新的基础设施。
TC应在级联拓扑中使用,其中网络设备拥塞状况导致的延迟可能会影响协议性能。所提出的TC架构是以简单的方式开发具有TC功能的以太网交换机的可行解决方案,具有完全的可扩展性和最小的资源利用率。由于块RAM是利用率最高的资源,并且它们直接取决于CAM和RAM大小,因此应在实现过程中优化这两个元素。如需进一步了解虹科IEEE 1588 PTP IP核解决方案,欢迎随时联系我们。

了解虹科工业通讯更多资讯,欢迎前往【虹科智能互联】官方网站:https://www.hoautom.com/precisetimebasic-ieee-1588-2008-v2-ptp-ip-core/?from=industrynews 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/194564.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flink源码分析之功能组件(三)-rpc组件

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。 本文解释rpc组件,rpc组件用于个核心组件,包括作业管理器,资源管理器和任务管理器之…

uni-app 离线打包安卓Apk(小白上手)

场景: 在使用uni-app 开发apk时,使用云打包有次数限制。尤其对于测试阶段是无比难受的,通常是浪费打包次数进行打包或者通过usb 给测试机更新开发环境,但这都是无比漫长的过程 尤其有多个测试机真的是噩梦般的存在 下载离线打包示…

基于mpvue实现的cnode社区demo(附精选源码32套,涵盖商城团购等)

社区类目没有开放给个人开发者,所以没能上线。 预览 项目配置文件,更改appid {"description": "项目配置文件","setting": {"urlCheck": true,"es6": false,"postcss": false,"minif…

扫地机器人市场持续火爆,景联文科技数据采集标注方案助力扫地机器人智能化升级

随着消费者对智能家居和清洁卫生的需求增加,扫地机器人市场规模不断扩大。市场竞争也日益激烈,各品牌都在努力提升产品性能和服务质量,以获取更大的市场份额。 IDC的统计数据显示,今年双十一前两周(2023年10月23日至20…

stream流和方法引用

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集…

jsoup登录日志平台后调企业微信机器人自动发送错误日志告警

一、需求:错误日志Top10告警发送 二、需求分解 jsoup实现登录,获取到cookie和token等用户鉴权信息获取接口相应的key值调用日志平台错误日志Top榜接口,查询到结果集调用企业微信机器人发送消息接口加上定时任务,可以实现定时发送…

顺子日期(14)

顺着日期 public class Main {public static void main(String[] args) {int res 0;//2022年int[] days new int[] {31,28,31,30,31,30,31,31,30,31,30,31};//31,28,31,30,31,30,31,31,30,31,30,31//一三五七八十腊//构造2022年每一天的日期yyyymmddStringBuffer date new…

用python实现kindle文件转换pdf

上一篇文章讲了下用工具转换相关的格式:https://blog.csdn.net/weixin_42019349/article/details/134654695 今天来分享一个python库实现上述功能,实现文件转换自由 ^_^ 主角就是pypandoc库 # 安装方式 pip install pypandoc# pypandoc主要有三个函数…

ModuleNotFoundError: No module named ‘mdtex2html‘ module已经安装还是报错,怎么办?

用streamlit运行ChatGLM/basic_model/web_demo.py的时候,出现了module not found: ModuleNotFoundError: No module named mdtex2html Traceback: File "/home/haiyue/.local/lib/python3.10/site-packages/streamlit/runtime/scriptrunner/script…

机器学习的复习笔记3-回归的细谈

一、回归的细分 机器学习中的回归问题是一种用于预测连续型输出变量的任务。回归问题的类型和特点如下: 线性回归(Linear Regression):线性回归是回归问题中最简单的一种方法。它假设自变量与因变量之间存在线性关系&#xff0c…

普通表计读数开发思路

一、普通表计类型介绍🍉 常见的普通表计有SF6,压力表,油位表(指针类)等。 图1:( 压力表) 图2:(油位表-指针类) 图3:(SF6表) 图4:&a…

巧妙之中见真章:深入解析常用的创建型设计模式

设计模式之创建型设计模式详解 一、设计模式是什么?二、模板方法2.1、代码结构2.2、符合的设计原则2.3、如何扩展代码2.4、小结 三、观察者模式3.1、代码结构3.2、符合的设计原则3.3、如何扩展代码3.4、小结 四、策略模式4.1、代码结构4.2、符合的设计原则4.3、如何…

K 最近邻算法

K 最近邻算法 简单 KNN海伦约会手写数字识别KNN 算法的优缺点 K 最近邻(K-NearestNeighbor,KNN)算法,是 1967 年由 Cover T 和 Hart P 提出的一种用于分类与回归的方法。 基本原理:存在一个带标签的数据集(…

C语言第三十五弹---打印九九乘法表

C语言打印九九乘法表 思路&#xff1a;观察每一行可以看出乘号右边的一行值都是相同的&#xff0c;而乘号左边不断变化&#xff0c;所以使用嵌套循环&#xff0c;控制好 乘号左右值变化的条件即可。 #include <stdio.h>int main() {for (int i 1; i < 9; i){for (in…

【微服务】java 规则引擎使用详解

目录 一、什么是规则引擎 1.1 规则引擎概述 1.2 规则引擎执行过程 二、为什么要使用规则引擎 2.1 使用规则引擎的好处 2.1.1 易于维护和更新 2.1.2 增强应用程序的准确性和效率 2.1.3 加快应用程序的开发和部署 2.1.4 支持可视化和可管理性 2.2 规则引擎使用场景 三、…

开源四轴协作机械臂ultraArm激光雕刻技术案例!

注意安全事项 开始之前&#xff0c;请确保您已采取适当的安全措施&#xff0c;例如用于激光操作的防护眼镜、灭火器和通风良好的区域。 引言 随着科技的不断进步&#xff0c;激光雕刻技术已经成为当今制造行业中不可或缺的一部分。它以其高精度、高效率和广泛的材料适应性&…

JAVA的一些便捷性方法(Object)

在IDEA中&#xff0c;如何查看JDK的源码&#xff1f; CTRL B; 常用方法&#xff1a; 1.equals&#xff08;&#xff09; booleanequals(Object obj) 指示其他某个对象是否与此对象“相等”。 与 的比较&#xff1a; &#xff0c;即可判断基本类型&#xff0c;也…

从0开始学习JavaScript--JavaScript对象封装

JavaScript中的对象封装是一种重要的编程概念&#xff0c;它允许将数据和方法组织成一个独立的单元&#xff0c;实现了数据的保护和抽象。本文将深入探讨JavaScript对象封装的原理、实践和最佳实践。 封装的基础概念 封装是面向对象编程的基础概念之一&#xff0c;它强调将数…

笔记十七、认识React的路由插件react-router-dom和基本使用

react-router 分类 web使用 react-router-dom native使用 react-router-native anywhere&#xff08;使用麻烦&#xff09; react-router 安装 yarn add react-router-dom main.jsx import React from "react"; import ReactDOM from "react-dom/client"…

蓝桥杯第100 题 九宫幻方 DFS 全排列 C++ 解题思维

题目 九宫幻方https://www.lanqiao.cn/problems/100/learning/?page1&first_category_id1&name%E4%B9%9D 思路和解题方法 一 &#xff08;DFS) 首先&#xff0c;定义了一些全局变量和数组。vis数组用于标记已经出现过的数字&#xff0c;a数组用于存储数独的初始状态…