0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用以太网IP核的1588功能?

YCqV_FPGA_EETre 来源:XILIN 作者:Gary 2021-04-07 17:03 次阅读

以太网IP核的1588功能是用来实现,在IP内部为TX侧发送包打上发送出去这个时间节点的时间戳,以及获得RX侧收回来的包在IP接口处的时间戳。然而10G/25G的IP例子工程没有提供演示,本文主要介绍了如何使用这个IP的1588功能

产生一个例子工程的仿真

01

1. 打开Vivado新建工程,添加一个10G/25G以太网IP core,注意在IP的GUI里勾上1588功能(如图),然后右键产生example design

61047912-93fc-11eb-8b86-12bb97331649.png

为了能同时支持 1-step 和 2-step,这里在产生 IP 时选择了“OneStep”的 1588

2. 工程产生完成后,需要先给 tx/rx_systemtimer 加上参考时间值。如果用的是 2020.2,新的 IP 例子工程已经自带了 timer_syncer 模块,为 systemtimer 提供输入。但如果用的是之前的版本,你只需要写一个计数器的逻辑,输出为标准时间 ns 计数,提供给 systemtimer 输入就行了,到时候 IP 在发出包的那一刻,会把 tx_systemtimer 当时的值作为时间戳使用,或者在收到包的那一刻,把当时的 rx_systemtimer 的值拿来使用

下面是一个简单的计数器代码示例,选自 100GCMAC 的 IP 参考设计中产生 tx_systemtimer的逻辑,供参考使用

610e2c6e-93fc-11eb-8b86-12bb97331649.png

3. 最后给工程加上仿真选项,帮助加速仿真速度,就可以开始做工程的功能仿真了

611a0750-93fc-11eb-8b86-12bb97331649.png

如何使用1588功能

02

1. 首先使能IP的1588的1-step功能,可以在逻辑里将IP的输入“ctl_tx_1step_enable”置1,如果使能了IP的AXI读写寄存器接口的话,也可以将地址0038的bit0写1

61401102-93fc-11eb-8b86-12bb97331649.png

2. 同样地方式,通过修改信号 “ctl_ptp_transpclk_mode”选择OrdinaryClock模式或者TransparentClock模式。在OC模式下,时间戳会直接覆盖原以太网包里的值,但在TC模式下,时间戳则会叠加在原来位置的数值上面。具体可参考1588协议

3. 接着跑仿真,先在设计逻辑里将 “tx_ptp_1588op_in”接为01,观察1-step模式下的IP的工作行为,仿真结果如下图示

6168ef82-93fc-11eb-8b86-12bb97331649.png

由于这里的 “tx_ptp_tstamp_offset_in”为0,发送包的第一拍数据 “tx_axis_tdata”会从原来的值“fe14ffffffffffff”被IP替换成时间戳,也就是在RX侧看到收到的数据包的第一拍数据“rx_axis_tdata”已经变成了 “010005xxxxxxxxxx”

实际上 IP 在 1-step 工作模式下,2-step也是同时工作的,对应 “tx_ptp_tstamp_valid_out” 拉高的“tx_ptp_stamp_out” 的值,就是这个包的时间戳,输出给客户,这个时间戳的值客户可以自行稍加修改添加到下一个包再发出去,这就是 2-step 的工作模式

用于2-step的“tx_ptp_stamp_out”和填进包里的1-step时间戳略有区别,差距就是 “ctl_tx_ptp_latency_adjust”,差异的原理细节可参考 IP 的文档 PG210

用户可以自行给他发的每个包输入不同的“tx_ptp_tag_field_in”值,然后当IP输出 “tx_ptp_stamp_out” 时间戳的时候,只要找到对应的 “tx_ptp_pstamp_tag_out” 值,就是相同 tag_in 对应的那个包的时间戳

RX 侧收进包的时间戳,为 "rx_ptp_stamp_out”,目前时间戳的点都是 IP 的接口,所以在环回仿真里面,RX 侧的时间戳会比TX侧的时间戳大,差了一整个 GT 的延时没有计算进去,用户应当在AR搜索中找到自己用的器件对应GT的具体latency,静态延时值可通过ctl_tx/rx_latency 信号合进 IP。并且,延时结果能在功能仿真里面体现出来

4. 最后你还可以随时在逻辑里修改 "tx_ptp_1588op_in" 的输入,当接为 00 或者 10 的时候,IP 就不会再自动打上时间戳,第一拍保留了数据包的原始数据 "fe14ffffffffffff”,并且如果1588op=00 的时候,"tx_ptp_tstamp_valid_out" 也不会再拉高,如下图

617612de-93fc-11eb-8b86-12bb97331649.png

原文标题:开发者分享 | 如何使用 10G/25G 以太网 IP core 上的 1588 功能

文章出处:【微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5008

    浏览量

    165965
  • IP
    IP
    +关注

    关注

    5

    文章

    1386

    浏览量

    148237

原文标题:开发者分享 | 如何使用 10G/25G 以太网 IP core 上的 1588 功能

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文了解工业以太网交换机

    随着以太网技术的迅速进步和在商用领域的广泛应用,越来越多的产业控制设备也逐渐采用以太网并采用TCP/IP协议作为主要的通讯标准。尽管在产业控制领域应用的以太网标准与商
    的头像 发表于 12-20 10:41 962次阅读
    一文了解工业<b class='flag-5'>以太网</b>交换机

    车载以太网基础视频——应用层#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月22日 09:05:01

    车载以太网总线基础培训——传输层#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月21日 10:57:36

    车载以太网基础培训——网络层#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月20日 08:51:32

    车载以太网基础培训——车载以太网的链路层#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月19日 16:25:21

    车载以太网基础培训——物理层简介#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月18日 16:37:56

    车载以太网测试系统测试实例介绍#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月12日 17:27:48

    Vector的车载以太网总线接口卡VN5000系列快速入门#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月12日 11:19:23

    车载以太网测试系统组成#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月05日 16:47:18

    车载以太网快速入门#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月01日 17:54:31

    69 67_以太网简介 - 第4节

    以太网
    充八万
    发布于 :2023年08月19日 22:08:14

    简谈基于FPGA的千兆以太网设计

    符合标准。 当今,随着互联网技术的迅速发展,采用以太网实现数据采集和控制方面的应用,成为了电子系统设计的热点。以太网具有价格低廉、稳定可靠、传输速度快、传输距离远等特点,以太网技术发展成熟,具有
    发表于 06-01 18:39

    如何运行NodeMCU并使用以太网的WT32-ETH01?

    () 调用需要 GPIO0、GPIO16 或 GLIO17 之一作为时钟引脚和模式选择。但是我在原理图上看不到这些引脚中哪些是正确的,或者它是输入还是输出。 有人有运行 NodeMCU 并使用以太网的 WT32-ETH01 吗?
    发表于 05-25 10:11

    是否有任何使用以太网接口的示例代码可以使用MPC5748G工作?

    我在使用 MPC5748G 的 NXP 网关板上工作,我需要设置以太网通信并检查示例代码。ENET_PING:找到了这个示例代码,但它没有构建。是否有任何使用以太网接口的示例代码可以使用 MPC5748G 工作。先感谢您,特茹
    发表于 04-07 09:04

    i.MX8以太网无法配置静态IP如何解决?

    我在 i.MX8 pluse evk 上用 android 13 测试以太网功能。我发现了一个关于静态ip的问题。更改以太网配置对话框后,我无法配置静态
    发表于 03-30 06:51