取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

如何使用10G/25G以太网IP core上的1588功能

yolanda
Moderator
Moderator
0 0 108

By Gary Pan

注意:本论坛博客所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途 


如何使用10G/25G以太网IP core上的1588功能

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

 

一.产生一个例子工程的仿真

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

1.png

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

 

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

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

2.png

 

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

3.png

 

二.如何使用1588功能

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

4.png

  1. 同样地方式,通过修改信号”ctl_ptp_transpclk_mode”选择Ordinary Clock模式或者Transparent Clock模式。在OC模式下,时间戳会直接覆盖原以太网包里的值,但在TC模式下,时间戳则会叠加在原来位置的数值上面。具体可参考1588协议
  2. 接着跑仿真,先在设计逻辑里将”tx_ptp_1588op_in”接为01,观察1-step模式下的IP的工作行为,仿真结果如下图示

5.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。并且,延时结果能在功能仿真里面体现出来

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

6.png