[X]关闭
1

S02-CH32 PL扩展以太网LWIP通信(7XB only)

摘要: 软件版本:VIVADO2017.4操作系统:WIN10 64bit硬件平台:适用米联客 ZYNQ系列开发板米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!!32.1 概述 本章讲解了PS端通过AXI总线控制AXI 1G/2.5G Et ...

软件版本: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中以太网外设GEMACDMA的功能,PS通过AXI总线控制这两个IP核便可实现LWIP 网络通信。例程参考了xapp1082fpgadeveloper工程师的应用工程:

      https://github.com/fpgadeveloper/ethernet-fmc-axi-eth  

      本教程适用于具有PL端网口的开发板MZ7XB-7020。

32.2 基本原理

      本例程在PL中搭建了1AXI 1G/2.5G Ethernet Subsystem以及1AXI 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 需要作如下配置: 

  • 使能M_AXI_GP0 接口
  • 使能S_AXI_HP0 接口
  • 使能PL PS 的中断接口IRQ_F2P
  • 使能FCLK_CLK0,设为 100M,作为PL 部分所有AXI 接口的时钟
  • 使能FCLK_CLK1,设为 125M,作为AXI 1G/2.5G Ethernet Subsystem IP  gtx_clk 的输入时钟。
  • 使能FCLK_CLK2,设为 200M,作为AXI 1G/2.5G Ethernet Subsystem IP ref_clk 的输入时钟,作为其内部IDELAYCTRL 的参考时钟。 如下图所示。

32.3.3 AXI 1G/2.5G Ethernet Subsystem

AXI 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 Access

AXI Direct Memory Access IP 核的设置如下图所示。

需要说明的是:

  • AXI DMA 配置为链式DMA 工作模式
  • 使能TX Control RX Status 接口,这两个接口是AXI DMA  AXI 1G/2.5G Ethernet Subsystem 专用的 连接接口。分别用于发送控制,和接收状态传递。
  • Length Register 的位宽设为 16,对应 1 次链式DMA 传输的最大总数据量为 64KB。若想进一步增大 数据传输效率,可将位宽设大,但不应该小于AXI 1G/2.5G Ethernet Subsystem 中所设置的TX RX Memory 的值,本例程中为 16KB,对应的最小位宽应为 14

所有的参数设置如下图所示。

32.3.5 PL 至PS 的中断

       AXI 1G/2.5G Ethernet Subsystem AXI DMA 分别有 2 个输出中断信号,通过Concat 将这4 个中断信号与 PS IRQ_F2P 接口连接,如下图所示。

      其中,AXI DMA  mm2s_introuts2mm_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 ServerIP 地址为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,输入文字发送,网络调试助手便可收到开发板返回相同的文字,如下图所示。


路过
1

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

发表评论

最新评论

引用 GReeeeeeeN!! 2020-3-29 10:18
请问本例是让pc当客户端吗?

查看全部评论(1)

本文作者
2019-9-6 19:41
  • 7
    粉丝
  • 8122
    阅读
  • 1
    回复

关注米联客

扫描关注,了解最新资讯

联系人:汤经理
电话:0519-80699907
EMAIL:270682667@qq.com
地址:常州溧阳市天目云谷3号楼北楼201B
热门评论
排行榜