ORAN wireless-xorif 硬件演示

概述

GitHub 上的 ORAN 硬件工程旨在演示 ZCU102 或 ZCU111 评估板上的不同用例。本篇博文会为您演示如何生成设计,以及在评估板启动后如何使用 API 来配置 CC 设置。

1. 硬件设计架构

2. 设计生成

3. PTP 测试设置

a. 板到板 PTP 测试

b. 第三方 O-DU 到板 PTP 测试

4. 在 ZCU102 评估板上使用 Keysight Studio 配置 CC 的方法演示

设计架构

该演示设计的顶层包含一个处理器,用于通过 AXI4-Lite 接口配置数据路径中所用的各个 IP。

1.png

DIP 开关用于切换评估板的运行模式(PTP 主模式或从模式)。

“Datapath”(数据路径)模块用于在无线电数据和接收到的 GT 串行数据之间进行转换。它包括 O-RAN Radio IF 和 10G/25G High Speed Ethernet Subsystem。此块中包含 Arm 处理器到 10G/25G High Speed Ethernet Subsystem 控制的所有支持性 IP 核,以及 PTP 支持和简单的无线电仿真块。

如需了解有关“Datapath”模块中的子模块的更多详细信息,请参阅 PG370 第 4 章中的“数据路径”部分

2.png

设计生成

ORAN 演示可从 GitHub 仓库中获取:https://github.com/Xilinx/wireless-xorif

1. 在生成设计之前,我们需要安装适用于 ORAN 的最新 v2020.2 补丁,此补丁可从(答复记录 76049)下载。如果使用 2021.1 及更高版本,则可以跳过此步骤

2. 随后,我们需要克隆 GitHub 仓库:

    git clone https://github.com/Xilinx/wireless-xorif.git

3. 检出版本对应的标签。

cd wireless-xorif
git checkout tags/2020.2

4. Scripts 文件夹包含用于生成 Vivado 工程以及运行 PetaLinux 流程的脚本。在运行 Tcl 命令之前,需要先使用 cd 切换至 scripts 目录:

cd /wireless-xorif/scripts

 5.在本篇博文中,我们要为带有 25G 链路的 ZCU111 评估板生成演示设计。可按如下方式运行脚本:

vivado -mode tcl -source ./xil_vivado_build.tcl -tclargs zcu111 -tclargs om5_25     -tclargs implNodateExit

该命令会生成 Vivado 示例设计,完成综合与实现,然后生成用于 PetaLinux 工程的 XSA。

注释:示例设计分为 3 种

  • 可通过在 Vivado 的“Sources”(源文件)视图中右键单击 ORAN IP 并选择“Open IP example”(打开 IP 示例设计)来生成示例设计:此示例提供一个简单的示例设计,其中仅包含 ORAN IP 及关联的测试激励文件。

  • 块自动化设置流程会生成一个完整的系统级仿真示例,其中包含 10G/25G Ethernet IP、DMA 基础架构以及支持 IEEE 1588 PTP 实现的块。如需了解更多详细信息,请参阅 PG370 第 4 章中的“在 IP integrator 中使用示例系统”。

  • GitHub 示例:这即是本篇博文中所用的示例。它与块自动化设置功能生成的示例非常相似。除了块自动化设置功能生成的示例系统外,xil_vivado_build.tcl 还会插入必要的调试信号(在以下截屏中高亮显示)。 

3.png

6.将 XSA 文件从 wireless-xorif/output/zcu111_om5_exs_2020_2_AR76049/vivado/zcu111_om5_exs_2020_2_AR76049.sdk 复制到 wireless-xorif/xsa/zcu111_om5_exs 文件夹中,然后将其重命名为 system.xsa。 

7.按照 PetaLinux 构建指示信息,运行以下 Makefile 命令:

make zcu111_om5_exs

该命令会在 wireless-xorif/output/zcu111_om5_exs_2020_2 下创建一个 PetaLinux 工程。根据 wireless-xorif/xsa/zcu111_om5_exs 下的 system.xsa,运行 PetaLinux 构建流程

8.make 命令完成后,会在 wireless-xorif/output/zcu111_om5_exs_2020_2/petalinux/images/linux 中生成启动镜像。将 boot.scr、BOOT.BIN 和 image.ub 复制到 SD 卡中。现在,我们可以启动 ZCU111 评估板。

PTP 测试设置

生成设计后,您可以运行板到板 PTP 测试第三方 O-DU 到板 PTP 测试

板到板 PTP

如 PG370 中所述,使用 2 个 O-RAN Radio IF 子系统时,其中一个充当 1588 主时钟,另一个则充当 1588 从时钟,这样即可演示时序同步。

4.png

我们来看一下如何用两块 ZCU111 评估板来实现这个演示。

1. 首先,我们需要使用 DIP 开关将其中一块评估板配置为主时钟,将另一块评估板配置为从时钟。

生成 Vivado 设计后,您可以在 oran_radio_if_basic.xdc 中找到 ZCU102/ZCU111 的 DIP 开关设置

5.png

以下截屏显示了 ZCU111 评估板上的具体设置:

6.png



2.将启动镜像文件(来自设计生成第 7 步)复制到两块 ZCU111 评估板的 SD 卡中,并确保 SW6 处于 SD 卡模式 (OFF, OFF, OFF, ON = 1110)

3.两块评估板均启动后,首先输入“ifconfig”。默认情况下,两块评估板的 MAC 地址是相同的

7.png


现在,使用以下命令更改其中一块评估板的 MAC 地址,然后再次输入“ifconfig”,以确保两块评估板的 HWaddr 不同

ifconfig eth0 hw ether 00:0A:35:00:22:02

8.png


4.现在,我们可以使用以下命令启动 PTP 测试。

// Master

ptp4l -m -A -i eth0

9.png


// Slave

ptp4l -m -A -i eth0 -f /usr/bin/xroe-ptp4lsyncE.cfg -s

10.png

注释: xroe-ptp4lsyncE.cfg 将 clock_servo 设置为 nullf

clock_servo 用于同步本地时钟。有效值包括

-“pi”,代表 PI 控制器,

-“linreg”,代表使用线性回归的自适应控制器,

-“ntpshm”,代表 NTP SHM 参考时钟,允许其他进程同步本地时钟(SHM 段号设置为域号)

-“nullf”,代表始终将频率偏移调整为零的伺服器(适用于 SyncE 节点)。默认值为“pi”。

您可能会在终端上看到一些“Synchronization Fault”同步故障消息,但这并不影响 1pps 同步。

例如:

11.png

当主时钟偏移为 +/- 1 时,存在一个周期的差异(如下图所示,在 390.625 MHz 下为 2560 ps)。

12.png


如果您反复重启从时钟,应该会在 1PPS 上反复观察到这种锁定行为。
如果使用串行控制台停止远程/从时钟上的 ptp4l,您同样会观察到 1PPS 保持相位锁定状态,这表明定时器时钟已同步。

Keysight Studio 到 ZCU102 PTP 测试

在本示例中,我们将 Keysight Studio 用作 PTP 主时钟,并通过一块 ZCU102 评估板执行 PTP 测试。

1.我们需要在 Keysight Studio 中设置时间同步模式。该选项位于“Setup > Instrument Configuration”(设置 > 仪器配置)下

13.png

2.然后,将其“Mode”(模式)设置为“Master”(主),并将“Domain”(域)值设置为 24:

14.png


3.创建包含以下内容的 ksightSyncE_min.cfg 文件,然后将该文件与其他启动文件一起复制到 ZCU102 评估板中。

[global]

domainNumber             24

clock_servo              nullf

注释:“nullf”代表始终将频率偏移调整为零的伺服器(适用于 SyncE 节点)

“domainNumber”需与 PTP 主时钟内定义的域号保持一致。

4.在 ZCU102 评估板上运行以下命令以启动 PTP 测试。

ptp4l -m -A  -i eth0 -f /media/sd-mmcblk0p1/xdc_keysight/ptp/ksightSyncE_min.cfg -s -2

15.png


ZCU102 上的 Keysight 配置演示

在这一部分中,我们将 Keysight Studio 用作 O-DU,生成 C 层/U 层数据包,并通过一根 10G 以太网电缆将其传输至 ZCU102 评估板。在这一演示中,我们需要弄清楚 ZCU102 评估板启动后需要执行哪些命令,以及如何查看前传接口的状态。

1.首先,我们需要使用 Keysight Signal Studio Pro for 5G NR 来配置所需的“Carrier”(载波)设置。

我们来确定需要添加哪种类型的载波:“Downlink”(下行链路)、“Uplink”(上行链路)还是 PRACH。

16.png

2.在本篇博文中,我们对 DL CC1 的配置如下:40 个 RB、“Numerology”(子载波间隔参数集)为 1、单时隙、每时隙 14 个符号。起始符号 ID 为 0。

17.JPG

3.将设置文件另存为 .scp 格式,然后关闭 Signal Studio。

18.png

4.接下来,启动 Keysight Open RAN Studio,然后打开上一步中保存的 .scp 文件。

19.png

5.设置“C/U Plane Builder Configuration”(C/U 层构建器配置)

20.png

6. eAXC ID 字段位宽设置为 4、1、3、8,eAXC ID 设置为 0000

21.png


注释:对于一个 eAxC 通道,ID 应从 0000 开始。ORAN IP 不接受 0001。

7.现在,为 Signal Studio Pro 中配置的所有载波分配 eAxC ID。如果不执行此操作,后续步骤将出现错误:

22.png

8.导出激励文件。此步骤会生成 pcap 文件,即在 O-DU (Keysight) 和 O-RU(ZCU102 评估板)之间传输的以太网数据包

23.png

9.单击“Load Stimulus”(加载激励文件),然后单击“Play”(运行)。

24.JPG


10.Keysight 设置至此已完成,现在我们需要启动 ZCU102 评估板。

启动评估板后,我们可以参考 xorif-apps 示例,以了解如何配置 ORAN IP。

注释:“xorif-app -help”可显示 xorif-app 的帮助菜单

25.png


a. 首先,我们需要连接套接字 eth0:

xorif-app -v -s -i -e eth0 &

26.png


b. xorif-app 服务器需要先进行初始化,然后才能正确接受大部分命令。

xorif-app -v -c init

27.png

c. 现在,我们来运行命令以配置载波设置

      ## set eAxC_id <DU bits> <BS bits> <CC bits> <RU bits>

xorif-app -c "set eAXC_id 4 1 3 8"

eAXC_id 应与第 6 步中的 GUI 设置保持一致。

## set ru_ports <RU bits> <ss bits> <mask> <user value> <PRACH value> <SSB value>

 xorif-app -c "set ru_ports 8 5 192 0 128 64"

注释:这用于设置 RU 端口 ID。

例如,如果使用 xorif_set_ru_ports (8, 5, 0xC0, 0, 0x80, 0x40),则需要对值 0xC0 与其他掩码位执行与运算。

PRACH 掩码为 0x80,因此 ID 为 0xC0 AND 0x80 = 1000 0000(二进制),[7:6] 为 10(二进制)=2 (十进制),这是最终的 RU_Port_ID。

如果将 PRACH 掩码设置为 0xC0,与运算所得出的值为 1100 0000,[7:6] 为 11(二进制)=3(十进制),那么最终的 RU_Port_ID 为 3。 

在本篇博文中,用户值为 0。对已定义的位进行掩码处理后,RU 端口 ID 为 0000。这就是非 PRACH 数据的值,与第 6 步中设置的值一致。

## CC 0 配置

xorif-app -c “set numerology 0 1 0”
xorif-app -c “set num_rbs 0 40”
xorif-app -c “set ul_iq_compression 0 0 0”
xorif-app -c “set dl_iq_compression 0 0 0”
xorif-app -c “set time_advance 0 160 125 125”
xorif-app -c  “set dl_sections_per_sym 0 10”

28.png

xorif-app -c  “configure 0”
xorif-app -c “enable 0”

29.png

在执行每条命令后,status=0 表示您已成功设置 CC 配置。

如果要查看前传接口的状态,可以使用以下命令:

xorif-app -c “get fhi_stats”

30.png

如您所见,所有 DL Rx 数据包均已准时到达,这意味着收到的所有 C 层和 U 层数据包都在接收窗口内到达。

ORAN_Tx_* 值均为 0,因为我仅从 Keysight Studio 生成了 DL 通道。

本篇博文完整演示了从设计生成到评估板启动后完成 API 配置的全过程。

可从 GitHub 仓库 \oran-radio-if\doc\html 下的 index.html 中获取完整的 xorif-app API 文档

31.png

打开该文档后,转到“Modules”(模块)部分。

您会看到所有模块的列表及相关描述。

32.png

现在,轮到您来尝试不同的命令了。
祝您操作愉快!