资讯详情

S03-CH05_UDP 万兆光通信

软件版本:VIVADO2017.4

操作系统:WIN10

硬件平台:MK7160FA

5.1概述

MK7160FA 开发板的4路SFP 光口均与xc7k160T芯片的GTX 串行收发器连接。 FFG676 封装的xc7k160t可支持高达 12.5Gb/s 传输速率。因此,在MK7160FA 万兆光纤以太网传输可在开发板上实现。

在 MK7160FA 万兆网在开发板中实现 UDP 传输的基本逻辑框架如下图所示。FPGA 以米联新版为基础的程序 UDP IP 协

561a49d2585829e848c10a657a5c9cec.png

议栈以及Xilinx 的 IP 核 10G Ethernet Subsystem 而实现。

本文档对应 2 例程,分别是 udp_ip_10g 和 udp_ip_10g_4ch,单路和 双路万兆 UDP 光纤传输。

5.2 SFP 接口

MK7160FA 上有4个SFP 屏蔽笼。MK7160FA 上有4个SFP 屏蔽笼。SFP 屏蔽笼可以插入千兆或万兆光模块。SFP 信号定义与SFP 一致,如下图所示。

5.3 IP设置

将 IP 核 AXI-Stream 用户数据接口位宽为 64bit,此时对应用户接口时钟频率为 156.25MHz。如下图所示。

将 AXI-Lite 配置接口时钟频率设置为 100MHz,当然,用户也可以自由选择其他频率。不使用参数统计和优先流量控制功能。如下图所示。

时钟频率的设置 IP 单独独综合有效。如下图所示。

将 GTX 端口动态重配DRP 的时钟设为 100MHz, Debug 不使用功能,如下图所示。

时钟频率设置只对单独综合有效。如下图所示。

1588 同步功能通常用于某些需要网络时间同步的场合,如音频和视频传输。仅用于数据传输。

这里不启用 1588 功能如下图所示。

只包含在设计中 1 个此 IP 核时,应包含可共享的逻辑资源和硬件模块 IP 在核内部,这将减少模块数量,简化设计。如下图所示。

在设计中需要同时使用多个这个 IP 使用的核GTX 均位于同一个GTX BANK 中。这个时候,只需要其中 1 个IP 核内部的共享资源(MMCM、QUADPLL、GTX 可以满足所有参考时钟等。 IP 核需求,即包含共享资源的选择 IP 核内部。其余 IP 核可以从内部消除这些共享资源,即选择包含共享资源 example 中。如下图所示。

5.7.4IP核结构

IP 核的结构如下图所示。用户的接收和发送接口均采用 AXI-Stream 标准。

10 Gigabit Ethernet Subsystem IP 核内部由 10 Gigabit Ethernet MAC 和 10 Gigabit Ethernet PCS/PMA 两个 IP 核所组成,两个 IP 之间通过XGMII 和 MDIO 接口连接。如下图所示。

5.7.4.1时钟网络

IP 如下图所示。

5.4.接收和发送接口时钟62.4.2

从上图可以看出,GTX 输入参考时钟后BUFG 后直接作为AXI-Stream 接收和发送接口时钟输出如下图所示。当 AXI-Stream 接口为 64bit 当当数据位宽时,GTX 参考时钟频率为 156.25M,当 AXI-Stream 接口为 32bit 当当数据位宽时,GTX 参考时钟频率为 312.5M。

参考时钟采用 156.25M 当数据率为:156.25M×8byte×8bit=10000Mbps,由于 PCS 采用了 64b/66b 编码方法。所以,这个时候, GTX 传输速率为:1万Mbps×66/64 =10.3125Gbps。

5.4.3多IP资源共享

例如,在设计中同时使用 3 个 IP 核时,3 个 IP 如下图所示,核之间的共享资源信号连接。

5.4.4用户接口

5.4.4.1AXI-Stream接口

AXI-Stream 发送接口

AXI-Stream 如下图所示,发送接口信号。用户通过接口向前移动 IP 核传输所需的以太网数据包。

tx_ifg_delay 用于设置发送间隔,默认使用最小间隔 tx_ifg_delay 置为 0 即可。

AXI-Stream 如下图所示。

连续发送背靠背

AXI-Stream 接收接口

AXI-Stream 接收接口信号如下图所示。用户从接口接收 IP 核输出的以太网数据包。需要注意的是,未使用接收接口 AXI-Stream 标准中的 tready 信号。这意味着接收端需要有能力连续接收数据,以防止数据因接收太晚而溢出。

AXI-Stream 接收接口时序如下图所示。

5.4.4.2pcspma_status

pcspma_status 端口用户反应 IP 核内部 PCS PMA 部分运行状态。 GTX 只支持 10GBASE-R,因此pcspma_status 只有 bit0 有效。如下图所示。

5.4.4.3sim_speed_up

sim_speed_up 引脚只有在仿真时才需要用到这个信号,用于加快仿真速度。编译时将其置为 0 或 1 即可。

5.4.4.三光模块相关信号

IP 与光模块的连接信号和连接方法如下图所示。

5.4.4.4流量控制信号

在非高带宽和大负荷传输的情况下,一般不需要使用流量控制功能。因此,无需发送暂停帧,将以下两个信号放置为 0 即

可。

5.4.4.5计信号

下图中的信号用于统计和输出当前发送或接收帧对应的各种类型的信息。除调试外,一般不需要使用。

如下图所示。

5.4.4.6e接口

AXI-Lite 接口主要用于配置和读取 IP 核内寄存器。AXI-Lite 接口不仅可以配置 IP 核 MAC 部分寄存器, 也可直接通过 MAC 部分的 MDIO 接口配置PCS/PMA 部分寄存器,如下图所示。

通过AXI-Lite 接口实现 MDIO 接口读写PCS/PMA 一些寄存器的例子如下所示。

5.4.5用注意点

5.4.5.1数据发送长度

IP在默认情况下,发送帧的长度小于 64字节时,IP帧末尾会自动补核 0,补足至 64字节自动插入帧末尾 4字节 CRC。接收时,IP核自动去除末尾 4字节CRC,但长度小于 64字节帧末尾补充 0不会去掉, 仍将通过接收接口输出。因此,可以发送的数据长度是 14~1514(含 14字节 MAC帧头)字节之间。

IP 使用文档中有以下描述。

5.4.5.2用FIFO与IP核AXI-Stream接口连接

可用于设计 AXI-Stream DATA FIFO 与 IP 核的 AXI-Stream 接口,作为数据的缓冲。 FIFO 有以下注意事项。IP 核使用文件中有以下描述:

5.4.5.3XI-Lite接口配置策略

仿真 ip 核自带的 example,可以观察到 example 中通过AXI-Lite 配置 IP 核MAC 部分过程如图蓝色框所示。 AXI-Lite 经过 MAC 部分的内部MDIO 接口配置访问PCS PMA 一些寄存器,如图红色方框所示。具体寄存器定义参考PG157。

Example 通过AXI-Lite 配 IP 核的流程如下图所示。在例程中,直接采用这部分的代码。

5.5例程设计

例程的原理如下图所示。实现了一个 UDP 收发环路,即电脑通过网络调试助手向开发板发送 udp 包,开发板接收到 udp 包经过 fifo 缓存后重新发回电脑,由此验证数据收发的正确性。

UDP IP 协议栈与万兆 IP 核之间通过 2 个 AXI-Stream DATA FIFO 进行连接。两个 FIFO 的设置如下图所示,均使能Packet mode 功能。

Packet mode 是指 FIFO 持续缓存 AXI-Stream 接口输入的数据直至输入端 tlast 信号拉高,即存满一个完整的数据包时,才开始在 AXI-Stream 输出端口向外输出数据。需要注意的是,启用 Packet mode 时,FIFO 必须工作于同步模式。

对于发送路径,这样做是为了防止 FIFO 被 IP 核读空。对于接收路径,是由于米联的UDP IP 协议栈要求 1 个数据包的 tvalid 信号在数据包持续期间必须恒为 1。

由于在 Verilog 中定义变量,对 tdata 和 tkeep 进行大小端的字节序转换。

5.6例程测试

万兆网的测试需要使用万兆网卡,用户可以购买万兆网卡配合台式电脑进行测试。

udp_ip_10g_sfp 实现了单路 UDP 网络传输功能,udp_ip_10g_sfp_4ch (MK7160FA中为udp_ip_10g_sfp_4ch)中同时例化了 4 个 UDP IP 协议栈, 实现了 4路 UDP 网络传输功能。在例程中,电脑的 IP 地址为 192.168.10.2,UDP 端口号为 61441,MK7160FA 开发板中的 4 个 SFP 接口的 IP 地址均为 192.168.10.1,UDP 端口号均为 61440。

对于udp_ip_10g_sfp例程,将万兆SFP+模块及连接线插入SFP-A 对应的屏蔽笼内。对于udp_ip_10g_sfp_4ch

例程可将万兆 SFP+模块及连接线与 SFP-A、SFP-B、SFP-C、SFP-D 中任意一个 SFP 屏蔽笼连接。

测试前,需要将所使用电脑网卡的 IP 地址设置为 192.168.10.2,子网掩码设为 255.255.255.0,如下图所示。

下载 bit 文件后,确认网络连接状态是否为 10Gbps,如下图所示。

5..6.1路测试

打开网络调试助手,分别设置好电脑和开发板的IP地址位和UDP端口号, 通过网络调试助手以udp包的形式向开发板发送文字数据,并以1ms的间隔不断循环发送,如下图所示。

测试结果上图所示。从图中可以看出,网络调试助手所发出的udp包和开发板返回的udp包一致,接收和发送的数据包数量一致。

      通过 wireshark 软件可捕获电脑和开发板之间的通信数据包,如下图所示。

5.6.2 ARP 测试

在网络调试助手向开发板发 UDP 包的同时,通过 cmd 命令窗不断向开发板发起 ping 命令,观察 ping 命令的返回,如下图所示。从图中可以看到开发板能够快速响应电脑发起的 ping 命令,UDP 数据包收发与 ping 应答互不干扰。

通过 wireshark 软件对 ping 过程的数据进行抓包验证,如下图所示。

在整个测试过程中,电脑会以一定频率持续向开发板发送 ARP 请求,开发板均能及时响应,wireshark 软件抓取的电脑与开发板的 ARP 通信过程如下图所示。

5.7解决方法

对于在 vivado 2016.4 中使用 10 Gigabit Ethernet Subsystem IP 核在 place design 过程中处于卡死状态,软件运行出现异常终止的 bug,如下图所示。

解决方法如下:

上述的 2 个步骤可以通过在place design 过程进行之前和之后插入 tcl 脚本的方法来进行。具体方法如下:选择

project setting

在 implementation 中找到Place Design,设置 2 个 tcl 文件的路径,如下图所示。

其中,在 pre.tcl 中写入:

set_property is_loc_fixed false [get_ports -filter { IS_LOC_FIXED == "TRUE" } ]

在 post.tcl 中需要指定 xdc 文件的绝对路径,例如:

read_xdc D:/vivado_project/MK7160FA/udp_ip_10g_sfp/udp_ip_10g_sfp.srcs/constrs_1/new/udp_ip_10g.xdc

设置完成后,在编译过程中就不会再出现报错。

标签: 笼光纤连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台