为什么以太网有最短帧长度的要求_10G以太网接口(四):测试与使用

2d60367efcbccb39c4d9a34184390bc0.png

终于到了喜闻乐见的测试环节了,这一篇也将是这个系列的最后一篇文章,可算是把10G以太网接口水完了。
接下来就不是翻译IP核,毕竟是测试与使用,怎么开心怎么来就完事了。

本系列将会分为:基本知识、接口的基本结构、IP核的配置、接口的测试与使用等章节。


前三篇文章分别从基本知识、结构和IP核的配置等方面介绍了10以太网接口,如果忘记了的可以回头去看看之前三篇专栏文章⬇️。

十二点过九分:10G以太网接口(一):基本知识​zhuanlan.zhihu.com
dbf16e45851529b65465e617b9f06674.png
十二点过九分:10G以太网接口(二):接口的基本结构​zhuanlan.zhihu.com
dbf16e45851529b65465e617b9f06674.png
十二点过九分:10G以太网接口(三):IP核的配置​zhuanlan.zhihu.com
dbf16e45851529b65465e617b9f06674.png

而本篇文章主要是在前三篇的基础上去测试与使用我们的10G以太网接口,当然,一般很多文章可能直接去open example design,在示例工程上再作进一步的设计,这样设计的话比较简单,但是笔者反正闲的没事做,就直接例化IP核去使用了,手动连线也是一种乐趣。

测试

此次测试中采用:FPGA硬件平台为Xilinx的评估板VC707和KCU116、硬件开发平台为Xilinx的Vivado 2018.3、网络测试仪为Spirent的TestCenter和信而泰的TestStrom。

在测试之前先感慨一波实验室板子设备真多,随便瞎折腾不用怕没东西,搞科研是不会搞科研的,这辈子都不会搞科研的,只有折腾各类高端板子搞一些骚操作才能维持得了生活~

好,废话不说了,开始测试!

笔者所采用的测试方法与其他很多接口的测试方法一致,就是自环测试。所谓自环测试,就是以太网接口接收到数据后不作任何处理,直接在内部回环用于输出,这样可根据测试数据的收发情况用于判断接口是否设计正确。

本次自环测试的结构框图如下图所示。

f8e7f7d1e18b1e115f5c623078d28a0b.png
自环测试框图

在上图中:

  • 网络测试仪需要可支持10G测试,常用的测试仪有Spirent的TestCenter、国产的信而泰的TestStorm等,笔者在实际测试使用发现两种测试仪有一定差别,如果财力雄厚买贵的就完事了;
  • 在FPGA工程中,根据芯片的不同,需要例化不同IP核(详见前一篇文章),用户侧AXI4-Stream数据接口的Rx端和Tx端各接FIFO,接FIFO的目的是缓存突发数据,Rx的FIFO输出数据接到Tx端FIFO的输入数据,形成内部FPGA自环;
  • 网络测试仪与FPGA之间采用光纤和光模块进行连接,光模块使用SFP+光模块(对应10Gbps),光纤和光模块需要匹配,即单模光纤对单模光模块,多模光纤对多模光模块,当然如果有10G SFP+的电缆,也可以直接用电缆连接;

具体测试流程(网络测试仪以使用TestCenter为例):

  1. 生成工程的bit并且下载到FPGA上,按照上面测试框图连接各设备;
  2. 使用TestCenter对应的软件编辑网络数据流,一般以太网帧长度设为64字节到1518字节之间随机长度,设置发送速率(0-10Gbps间),设置固定发送速率或者突发发送,对接口进行多次测试,当然这只是笔者设置的测试数据流方案,并不全面,可以根据情况自行编辑数据流和发送方式;
  3. 观察TestCenter的数据统计结果。

具体怎么使用TestCenter在这篇文章里就不说明了,默认大家会了,不会的话可以参见网络测试仪的help或者直接询问技术客服等。

在实际测试,7系FPGA的IP核所提供的用户侧的时钟只有一个coreclk,而UltraScale+系列FPGA的IP核提供的用户侧时钟为rx_clk和tx_clk,需要注意跨时钟域操作(最简单的就是使用异步FIFO),同样对于使用多个接口的时候也需要注意跨时钟操作,不然在测试中会有一定的错误。

但即使做了跨时钟操作,由于异步时钟总是存在频差,10G实际测试速率上不了10Gbps,笔者在实际测试中,VC707的10G接口和KCU116的最高速率能到9.995Gbps左右,更高的速率(比如10Gbps)就会出现错帧的情况了,从FIFO的状态来看,猜测在持续10Gbps下FIFO满了导致的错帧。笔者觉得能到9.99Gbps以上基本够用了 。

当然以上仅针对Xilinx的评估板做的测试,如果是自己做的板子呢?

其实10G接口设计实现和测试的流程基本一致,但需要注意的是,在进行测试之前需要对高速收发器进行IBERT测试以确保收发器有没有问题,像是笔者之前在使用中发现某个通道传输的以太网数据一直会错帧,后来一测IBERT发现做的板子的通道误码就很高。

扯了这么多的接口设计测试等等等等,如果板子本身就存在一定的问题该怎么办,那你能帮帮我吗?能,具体解决方法可参见下面文章,但也不是万能的,实在没救重新画板子吧。

十二点过九分:在开始高速接口前,我们来试试IBERT测试吧!​zhuanlan.zhihu.com
1cd2ac5661b3a4b3114d1f6cb87747bf.png

看之后还有啥补充的没,想到了再说~

使用

使用?上面不是测试完了,还要咋使用?

的确,在上面讲了测试就算是接口结束了,但是辗转反侧之后还是决定简单谈谈高速接口的使用,当然这里的使用就是10G接口后可以用在哪,也就仅限于笔者参与过的一些例子来加以说明。

高速定制网卡:虽然万兆或者更高速的以太网标准早已问世,但受限于多方面因素(硬件支持等),我们日常生活中所接触的网卡仍是千兆网卡,但是很多服务器上已经使用万兆网卡了,但不是专为某种业务定制的,而FPGA的好处就在于可按照某种业务规则去编程定制,我们有了高性能FPGA,有了高速接口(万兆网口、PCIe等)、有了特殊业务的需求,把它仨怼一块就可以设计一个高速定制网卡,在硬件上处理某些业务以减轻服务器的负担。

数据加速引擎:众所周知,网络数据量与日俱增,以至于很多与网络相关的论文都会在背景里加上这句话,足以可见其海量,海量的网络数据怎么处理是个很复杂的问题,不同的研究方向有不同的处理方式,而对研究FPGA的人来说就是把数据丢到FPGA上用硬件处理以减轻处理器的压力。同样,我们有高性能的FPGA,有多个高速以太网接口,也有了特殊加速业务的需求,那么就可以把一些数据的处理放在硬件上进行,相互间的传输采用10G或者是更高速率的以太网接口。

当然还有很多场合可以使用到10G接口,这里不再一一介绍。

在这些具体设计中,所使用的10G以太网接口的设计的步骤,还是如之前提到的步骤那样:了解基本知识和接口结构——翻阅手册配置IP核——在工程中例化IP核并且添加必要模块——进行接口的自环测试——数据接口接入实际工程用以使用

需要注意的是,在具体使用前需要反复测试接口在多种情况下均没有问题再用于使用。

其他东西想到之后再予以补充~


写在最后:

10G以太网接口的设计实现就到这儿就结束了,其实根据这一设计思路可以依次设计实现25G、100G以太网接口,对于这些更高速率的接口以后有机会可以提一嘴,同样,之后再有机会讲讲PCIe的设计与使用等,下次一定,下次一定。

鉴于笔者仍是个只会翻译手册的弟弟,很多方面还需要学习一个,本系列的内容仅供参考,若有疑问,可以讨论,若有不足,予以指正~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值