FPGA实现100G UDP通信

一、GT收发器及网络通信应用

1.1 、GT收发器类型

        Xilinx FPGA中关于高速接口的应用都绕不开GT高速收发器(Gigabyte Transceiver,也称SerDes),很多IP核都是由GT收发器核封装形成的,比如:204B/C、SRIO、PCIE、10G Ethernet、100G Ethernet、Aurora、SDI等,常用的光通信、HDMI、SATA、NVME、10G以太网、100G以太网也都可以通过开发GT核实现。

        不同系列的FPGA,GT高速收发器类型不同;同类型的GT,在不同系列FPGA中的速率及个数也不同。GT的类型及速率:GTP < GPX < GTH < GTZ < GTY < GTM

        各类FPGA中GT类型、个数、速率主要为:

        以7系列FPGA为例,各型号的GT类型、数目如下;其他系列的可查找选型手册。

1.2 GT在网络通信中的应用

        利用GT收发器可以实现1G、10G、40G、100Gbps等网络通信。

        比如千兆网,利用SFP光模块,GT收发器线速率1.25Gbps,8B/10B编码,可实现千兆网通信。

        对于万兆网,利用SFP+模块,GT收发器的线速率10.3125Gbps,66B/66B编码,可实现万兆网通信。以UltraScale+器件IP为例进行举例(7系列与UltraScale/+系列在GT核上变化有些大)

        一种不利用需要License的专用IP核实现,封装GT核;需要用户自己开发链路层协议,前导码、起始符、MAC包、帧校验等功能,数据对齐等等。

        UltraScale/+系列在使用GT核时,比7系列多了一些选项,比如利用GT核开发万兆网功能,也可利用特有类型(线缆及背板分类)

        万兆网开发最简便的方式,借助需要License的10G IP核,比如下图:

        对于100G以太网,可利用QSFP28光模块,GTY收发器的线速率4x25.7812Gbps(或者低速GT 10x10.3125Gbps);为了开发便捷,可直接使用100G网络核。

二、Xilinx 100G Ethernet核

2.1 、Datasheet(PG203)

2.1.1 、基本特征

        支持的模式、线速率、GT类型等:

        相关架构:

        相关特征:时间戳、数据接口、暂停帧流控、状态/控制寄存器、动态重配置、编码、加扰解扰、FCS、网络包相关等。

2.1.2 、数据类型及速率

        用户数据接口类型:LBUS和AXI4-Stream可选;(LBUS数据格式不再介绍,习惯用AXIS简单),LBUS数据位宽4x128bit,AXI用户数据位宽512bit。各模式下用户侧的数据速率固定:322.265635MHz。LBUS和AXIS可互转,使用时选择一种对外接口即可。

        例如,这是LBUS数据接口速率:

        这是各种模式下的数据速率说明,100G以太网的PCS层数据位宽320bit。

        这是PCS编码及数据速率说明,100G以太网的PCS层数据位宽320bit

2.2 、100G以太网核配置及使用

2.2.1 、核配置

        参考Datasheet中表4-1至表4-4描述了100G网络核配置相关项的描述,内容比较详细。比如:

        我的开发板FPGA型号是KU5P,光模块为QSFP28,只能选择CAUI4模式;开发板上光模块所在的GT参考时钟是156.25MHz。基于该开发板的100G网络核配置如下:

         只测试UDP收发功能,这里没有启用暂停帧流控和时间戳功能。

          上述GT位置根据原理图BANK选择,其他没有特别提到的保持默认配置。

2.2.2 、核接口及使用

          关于100G核的接口说明,可参考Datasheet中表5-1至表5-2;GT subcore与share logic模式不同,对外接口也略有不同。比如:

        GT相关核例化比较繁琐,可借鉴example design。例如,上述核配置的样例,保留红框内的结构,构造自己需求的数据收发部分。

三、100G UDP收发测试

3.1 、网络协议介绍

          可参考:FPGA实现千兆网UDP协议(含ARP、ICMP)

3.2 、测试工程

          测试工程如下,通过VIO控制发送的UDP数据长度,报文间隔,发包数目等;其中数据包为每64字节递增,每包的首个64字节递增,每64字节的高4字节采用固定内容0xBCBCBCBC和0xAABBCCDD。

        顶层模块中的u4模块:实现100G UDP收发(含响应ARP)功能,其中u1实现100G核的例化配置;u2将用户端AXIS数据经AXIS-FIFO缓存,便于后续链路层、传输层及应用层的逐级组帧与解帧。

3.3 、仿真相关信号

        部分仿真如下:收发复位信号、收发用户时钟、GT参考钟

        测试数据组帧:

        其中第一包的首个64字节包含MAC头、IP及UDP首部信息:数据部分BCBCBCBC, 00000001,00000001,......00000001

        第2个64字节,为数据部分第一个64字节的递增数:AABBCCDD, 00000002,

00000002,......00000002

3.4 、上板测试

        由于没有100G网卡,采用光纤回环测试UDP收发,并将接收端的解帧端口信息调换:

        硬件平台如下:

        上电100G核初始化状态:ready表示:接收状态正常stat_rx_status和stat_rx_block_lock锁定状态正常。

        VIO设置:数据帧重复周期200clk,UDP数据部分1024字节,共发4包,并启用测试使能。

        ILA观测到的收发情况:待发的测试数据、10G核接口的AXIS收发数据、解析的UDP数据。

        其中发送的数据:BCBCBCBC, 00000001,00000001,......00000001;

AABBCCDD, 00000002,00000002,......00000002;AABBCCDD, 00000003,00000003,......00000003

        组帧的头部:

        收到的第一帧头部情况:与发送组帧相对应

        解析出的UDP数据:与设计数据一致。

        解析出第一帧中UDP数据第1个512bit数据、第2个512bit数据、最后1个512bit数据如下:

3.5 、代码

        需要相关代码的可以私信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值