软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!! 32.1 概述本章讲解了PS端通过AXI总线控制AXI 1G/2.5G Ethernet Subsystem 和AXI Direct Memory Access 这两个IP,实现PL端网口的LWIP通信。 本例程完全脱离PS内部的以太网外设资源,在PL中分别通过AXI 1G/2.5G Ethernet Subsystem 和AXI Direct Memory Access 这两个IP 核来实现PS中以太网外设GEMAC和DMA的功能,PS通过AXI总线控制这两个IP核便可实现LWIP 网络通信。例程参考了xapp1082和fpgadeveloper工程师的应用工程: https://github.com/fpgadeveloper/ethernet-fmc-axi-eth。 本教程适用于具有PL端网口的开发板MZ7XB-7020。 32.2 基本原理本例程在PL中搭建了1个AXI 1G/2.5G Ethernet Subsystem以及1个AXI Direct Memory Access IP 核。这两个 IP 核均通过AXI 总线经S_AXI_HP0 口与PS 连接,PS 通过AXI 总线对其进行配置和控制。其中,AXI 1G/2.5G Ethernet Subsystem IP 核通过 RGMII 接口与RTL8211 芯片连接。在PS 端通过SDK 自带的lwip echo server 例程 与PC 机实现TCP 网络通信。 32.3 FPGA BD工程32.3.1 IP 连线图32.3.2 ZYNQ PS 设置ZYNQ PS 需要作如下配置:
32.3.3 AXI 1G/2.5G Ethernet SubsystemAXI 1G/2.5G Ethernet Subsystem IP 核的设置如下图所示。 RTL8211 芯片为RGMII 接口,因此将IP 设为RGMII 接口,如下图所示。 TX Memory 和RX Memory 对应 IP 核内部的接收和发送缓存,缓存越大将有利于提高接收和发送的速率, 不妨将 TX Memory 和 RX Memory 都设为 16k。另外,将 TX 和RX Checksum Offload 全部设置为Full Checksum Offload,这将使IP 核完成所有收发数据包中TCP UDP IP 协议首部校验和的计算功能,使PS 无需再进行这些校 验和的计算,从而提高PS 中网络协议栈的运行效率。(PS 内部的GEMAC 也具有该功能)如下图所示。 在独立使用单个IP 核时,应选择将shared logic 包含在 IP 核内部,如下图所示。 其余选项保持默认即可,无需更改。 32.3.4 AXI Direct Memory AccessAXI Direct Memory Access IP 核的设置如下图所示。 需要说明的是:
所有的参数设置如下图所示。 32.3.5 PL 至PS 的中断AXI 1G/2.5G Ethernet Subsystem 和AXI DMA 分别有 2 个输出中断信号,通过Concat 将这4 个中断信号与 PS 的IRQ_F2P 接口连接,如下图所示。 其中,AXI DMA 的 mm2s_introut、s2mm_introut 两个中断信号分别对应 TX 和 RX 两个方向的数据搬移完 成、传输错误等中断。AXI 1G/2.5G Ethernet Subsystem 的interrupt 为其内部各种状态的中断信号,例如自协商完 成,接收错误,发送完成等;mac_irq 为 mdio 接口中断信号。实际在PS 端的 LWIP 库中的驱动程序里并不使用 AXI 1G/2.5G Ethernet Subsystem 的这 2 个中断。用户可根据需求自行设计。 32.3.6 时序约束本例程中,时序约束主要是针对 RGMII 接口进行 input delay 和 output delay 的约束,以及 IDELAYE2 延时 tap 数的设置,使RGMII 接口的满足建立和保持时间的要求,从而达到时序收敛。 对 于 input delay 和 output delay 的 约 束 , AXI 1G/2.5G Ethernet Subsystem IP 核 所 自 带 的 bd_****_eth_mac_0_clock.xdc 文件中已经包含了默认设置。对于 IDELAYE2 延时 tap 数的设置,在 bd_****_eth_mac_0.xdc 中 包 含 了 默 认 模 板 。 这 两 个 xdc 文 件 位 置 如 下 图 所 示 。 32.4 PS 程序设计32.4.1 创建工程本例程使用了SDK 自带的lwip echo server 例程来验证子卡电口和光口的功能,因此在创建工程时选择LwIP Echo Server 模板,如下图所示。该例程基于LWIP 库在ARM 中建立一个TCP Echo Server,IP 地址为192.168.1.10, 端口号为7。 32.4.2 LWIP 库的修改由于默认的驱动不支持RTL8211 的寄存器配置,所以无法支持自动适应速度(通过自己修改库可以实现自动适应 但是工作量大,考虑到投入时间和产出比,这里就不修改了)。所以手动修改LWIP 库让RTL8211 工作于1000Mbps。 32.4.3 网络测试将千兆网线插入MZ7XB的LANA 接口,并与电脑连接,将电脑的 ip 地址设为 192.168.1.100,子网掩码为 255.255.255.0。然后给开发板上电,通过 SDK 将程序下载入开发板后,观察SDK 串口打印信息,如下图示所示。 表示千兆网络连接正常。 打开网络调试助手,以TCP Client 模式连接开发板的IP 地址192.168.1.10,端口号 7,输入文字发送,网络调试助手便可收到开发板返回相同的文字,如下图所示。 |
扫描关注,了解最新资讯