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

在 Versal 器件上初始化 1G 以太网接口

yolanda
Moderator
Moderator
1 0 362

BY Nan Zang

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


Versal™ ACAP(自适应计算加速平台)是高度集成化的多核计算平台,可通过灵活的自适应能力来满足不断变化的动态算法的需求。VCK190 是赛灵思最早发布的 Versal AI Core 评估器件之一。

本篇博文将为您详解如下所述设计创建步骤:

  1. 在 Vivado 中构建基于 Versal 的 IP 集成器 (IP integrator) 设计
  2. 创建器件镜像
  3. 在 Vitis 中构建平台和系统工程
  4. 在 VCK190 评估板上运行和调试应用

 

Versal 上的 PS-GEM 

千兆以太网 MAC (GEM) 可提供符合 IEEE 802.3-2016 标准的硬核 10/100/1000 Mbps 接口。

在 PS 低功耗域 (LPD) 中有 2 个 GEM 控制器。

每个控制器均独立运行,且各含 1 个管理数据输入/输出 (MDIO) 接口以供其外部 PHY 配合 RGMII 接口使用。

1.png

 GEM 包含下列组件:

  • 1 个 MAC 用于控制传输、接收、地址检查和环回
  • 配置寄存器,可提供控制和状态寄存器、统计数据寄存器和同步逻辑
  • 1 个直接内存访问 (Direct Memory Access) 模块,用于控制 DMA 传输和 DMA 接收
  • 1 个时间戳单元 (TSU),用于计算 IEEE 1588 定时器值,其中包含实时时钟

在无需 DMA 操作的系统应用中,可使用配置选项移除 DMA 模块,并且可使用外部 FIFO 接口将 GEM 集成到 SoC 环境中。

GEM 块包含以下信号接口:

  • 连接到外部 PHY 的 GMII 和 RGMII
  • 1 个用于外部 PHY 管理的 MDIO 接口
  • 1 个 APB 从接口,用于访问 GEM 寄存器
  • 1 个用于内存访问的 AXI4 DMA 主接口
  • 无需 DMA 功能的应用内包含 1 个可选 FIFO 接口
  • 1 个可选时间戳接口

2.png

 

I/O 选项包括:

  • 布线到 LPD MIO 管脚的 RGMII (v2.0),用于连接到外部 PHY
  • GMII 和 MII 布线到 PL,以便映射到 GT 或(可选)可借助 PL 逻辑来转换为其它协议
  • 每个控制器内的诊断内部环回

注:Versal 中不支持内部 SERDES 接口 (SGMII)。在 MPSoC 器件中支持此类接口。

在 VCK190 器件上,GEM0 和 GEM1 均硬连线到板上的 2 个外部 RGMII PHY。

有 2 个 RJ45 端口,分别用于 GEM0 和 GEM1。如要测试 GEM1 RGMII 端口,请确保 GEM0 RGMII 端口同样通过电缆连接,因为此端口使用共享 MDIO 线(使用 GEM0 MDIO 作为主接口)。  

请参阅以下 VCK190 截屏。在右上角有 2 个 RJ45 端口用于 Versal 以太网。

3.jpg

 

在 Vivado 中创建 IP integrator 设计

请下载随附的 Tcl 文件并遵循以下步骤进行操作。

  1. 在 Vivado 2019.2 中基于 VCK190 评估板创建工程。
  2. 创建块设计。
  3. 找到 vck190_1g.tcl。以下是 IP integrator 画布中的原理图。4.png

     

  4. 生成 HDL 封装文件。
  5. 单击“运行实现 (Run Implementation)”和“生成器件镜像 (Generate Device Image)”。 
  6. 导出包含器件镜像的硬件设计。

5.png

 

注:单独使用“运行块自动化设置功能 (run block automation)”时,CIP 与 NoC 之间部分连接缺失。随附的 Tcl 文件可用于确保 CIP 和 NoC 中配置设置正确。

 

在 Vitis 中构建并运行 LwIP 应用

我们已构建了 IP integrator 设计并已导出了含器件镜像的硬件设计。现在,我们将在 Vitis 中创建 lwIP 示例,并在 VCK190 评估板上运行。

  1. 启动 Vitis。
  2. 使用来自以上设计的 XSA 文件创建应用工程。6.png

     

  3. SDK 中选择“lwIP 响应服务器 (lwIP Echo Server)”。

    7.png

     

  4. SDK 中构建平台和系统工程。
    选中 lwIP 响应服务器应用时,会自动设置 lwIP 库的 BSP 设置。
    用户还可以选择仅创建并构建平台工程,但这样需手动设置 BSP 设置。8.png

     

  5. 在 VCK190 开发板上运行 lwIP 示例。
    以下即 UART 控制台输出:9.png

     

  6. 以下是 ping 测试输出:10.png

     

    要切换到 GEM1 RJ45 以便进行测试,用户应使用 XPAR_XEMACPS_1_BASEADDR 修改 platform_config.h。

    可在 BSP 的 xparameters.h 中找到以太网定义。

    请参阅以下示例:11.png

     

    在 platform_config.h 中,更改以下定义:12.png

     

    将此定义更新为:

    #define PLATFORM_EMAC_BASEADDR XPAR_XEMACPS_1_BASEADDR

    现在,您可重新构建应用并重新运行测试。

 

LwIP 性能

以下是 lwIP 响应服务器应用的 BSP 设置。

  • PARAMETER dhcp_does_arp_check = true
  • PARAMETER lwip_dhcp = true
  • PARAMETER pbuf_pool_size = 2048

对于 lwIP TCP/UDP 性能服务器,默认将设置下列参数。

  • PARAMETER mem_size = 524288
  • PARAMETER memp_n_pbuf = 1024
  • PARAMETER n_tx_descriptors = 512
  • PARAMETER pbuf_pool_size = 16384

这些 lwIP 参数对于性能调优至关重要。

用户应参阅 lwIP 文档中的“配置内存选项”、“配置封装缓存 (Pbuf) 内存选项”和“TEMAC 适配器选项”部分,以了解有关各参数的更多信息。

https://china.xilinx.com/support/documentation/user_guides/ug1137-zynq-ultrascale-mpsoc-swdev.pdf

这些参数可控制所分配和使用的内存量以及 Pbuf 和描述符数量。

如果系统受到限制,无法处理这些包,则 BD 和 Pbuf 将被快速用尽,且无法根据要求快速清空以供使用。由此导致性能受到影响。

但我们还应平衡可使用的内存量,以便在用于性能基准测试的评估板上将这些参数调整为适合 1Gbps 的最优值。您可以此为参考,根据自己的要求来对这些参数进行调优。