如何将已有的25G DFE TRD修改为10G DFE TRD

作者:Gary Pan,AMD工程师;来源:AMD开发者社区

Xilinx-AMD有提供25G DFE TRD (UG1530)参考设计。 然而,有的时候,客户也会对10G DFE TRD有需求。这篇blog的目的,正在于帮助客户如何完成修改DFE TRD,从25G修改到10G。

 1.修改工程的线速率

TRD中一共有2个IP核需要修改它们的线速率,分别是ORAN Radio IF IP以及gt_shared IP。请参考下面的图示,将这2个IP的线速从25G修改到10G。

ORAN Radio IF IP:

1.png

gt_shared IP:

2.png

2.修改工程时钟(a)

速率从25G改到10G后,对应的GT输出时钟频率,也会从390.625MHz自动降至156.25MHz。这些时钟会影响到以下2个IP的生成设置或IP属性,请按照图示,将ORAN IP生成设置和ptp_1588_timer_syncer IP的属性里的clock period 从2560改为6400。

ORAN IP GUI设置:

3.png

ptp_1588_timer_syncer IP的属性参数:

4.png

3.修改工程时钟(b)

在你完成上述时钟修改之后,工具有可能会因为设计里时钟频率发生变化,而产生下面这样的错误告警。

5.png

如果收到上述错误信息,你可以通过修改下图模块(/CLKSS0/CTRL_CLKS/CW_1)里的时钟频率,来消除这些错误。

6.png

4.修改工程时钟(c)

接下来,是修改硬件工程里时钟的最后一步。

需要将工程里的“timer_clk”二分频(设为122.88MHz);这个timer_clk如下图所示,来源于CLKSS模块的ref_aclk:

7.png

并且“xotimer_handler”里的所有timer设置也全都要除以2。

请将下面的代码复制黏贴到“xotimer_handler.py”里,这个python文件可以在目录(/usr/share/middleware/oran)下面找到。

# ----------------------------------------------------------------------------------------------------------------------------------------------------

# ORAN Constants

self._clk_frequency_MHz = 122.88

self._max_symbol_period= [8832, 4448, 2256]

self._min_symbol_period= [8768, 4384, 2192]

self._short_pulses = [(7*(1<<0))-1, (7*(1<<1))-1, (7*(1<<2))-1]

self._frame_period = 1228800

# DFE Measured Time Domain Latency Values

# TODO: Get derived values

self.dl_dfe_latency = {

# Numerology 0 (15 kHz SCS)

'5_15':10872, '10_15':10872, '15_15':10872, '20_15':10872, '25_15':10872, '30_15':10872, '35_15':10872, '40_15':10872, '45_15':10872, '50_15':10872,

# Numerology 1 (30 kHz SCS)

'5_30':6488, '10_30':6488, '15_30':6488, '20_30':6488, '25_30':6488, '30_30':6488, '35_30':6488, '40_30':6488, '45_30':6488, '50_30':6488,

'60_30':6488, '70_30':6488, '80_30':6488, '90_30':6488, '100_30':6488

}

self.ul_dfe_latency = {

# Numerology 0 (15 kHz SCS)

'5_15':10350, '10_15':10350, '15_15':10350, '20_15':10350, '25_15':10350, '30_15':10350, '35_15':10350, '40_15':10350, '45_15':10350, '50_15':10350,

# Numerology 1 (30 kHz SCS)

'5_30':5866, '10_30':5866, '15_30':5866, '20_30':5866, '25_30':5866, '30_30':5866, '35_30':5866, '40_30':5866, '45_30':5866, '50_30':5866,

'60_30':5866, '70_30':5866, '80_30':5866, '90_30':5866, '100_30':5866

}

self._ofdm_15khz_strobe_latency = 10872

# ----------------------------------------------------------------------------------------------------------------------------------------------------

5.硬件环境设置

在完成上面所有修改步骤后,10G的工程就修改完成了。要想将这个10G TRD在板子上跑起来,还需要注意以下这些硬件环境上面的设置问题。

 1. 修改板上参考时钟配置

Xilinx亦有提供另一个ZCU670 10G Ethernet TRD参考设计。可以利用这个TRD里的时钟配置文件(bin/tcs),替换掉UG1530 25G DFE TRD的时钟文件,来给10G DFE TRD使用。

请联系你的FAE获取ZCU670 10G Ethernet TRD的时钟配置文件。

2. 由于idtcm nodes被注册为ptp1对应25G design,ptp2对应10G design,因此如果新改的10G DFE TRD工程,想先做个PTP测试,run ptp4l的话,请使用ptp2。

下面是一些测试指令的例子:

ts2phc -m -c /dev/ptp0 -s /dev/ptp2 -f /usr/bin/ts2phc.cfg &

ptp4l -m -i <ethernet interface> -p /dev/ptp2 -f /usr/bin/standalone_slave_G.8275.1.cfg

 3. 完成硬件工程,产生XSA文件后,请保证在之后的build流程里,用的是新产生的XSA文件。

你可以照着下图修改plnx_run1.sh以确保这点

8.png