作者: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:

gt_shared IP:

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设置:

ptp_1588_timer_syncer IP的属性参数:

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

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

4.修改工程时钟(c)
接下来,是修改硬件工程里时钟的最后一步。
需要将工程里的“timer_clk”二分频(设为122.88MHz);这个timer_clk如下图所示,来源于CLKSS模块的ref_aclk:

并且“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以确保这点
