
随着FPGA在数据中心的发展以及智能NIC在SDN和NFV领域中的广泛使用,基于以太网接口的基于FPGA的开发板越来越受到关注. 高速以太网接口技术是该应用程序的关键. 本文将详细介绍基于FPGA的10G以太网接口的原理和调试技术. 欢迎留言以讨论.
1、10G以太网结构
10G以太网接口分为10G PHY和10G MAC. 如下所示.
图5.1 10G以太网接口的总体结构
在本设计中,将Xilinx提供的10GEthernet PCS / PMA IP内核用作连接到10GMAC的PHY芯片,然后将IP内核约束到光模块以构建完整的物理层. 需要说明的是,该设计主要是为了完成以太网二层逻辑设计,不涉及PHY层的逻辑设计,例如: 比特同步,字节同步,字同步,64b / 66b编等.
2,10G以太网接口PHY
10G以太网PCS / PMA的总体结构如图5.2所示. 其核心基于RocketIO GTH / GTX. 从图中可以看出,该模块分为PCS层和PMA层. 对于发送数据,PCS层的主要功能是对数据执行64B / 66B编码,加扰和传输速度. 同时,在测试模式下提供了测试激励源以检测链路. PMA层的主要功能是提供并行-串行转换,驱动和发送串行信号等功能. 对于接收数据,PMA层的主要功能是对接收到的高速差分信号执行串并转换,位同步,时钟恢复和其他功能. PCS层对从PMA层66B接收的数据执行块同步,解扰码,64B /解码,弹性缓存等. 同时,它还提供了测试模式下的测试激励检测功能,用于检测链接的工作状态.
图5.2 10G以太网PCS / PMA
在接口调试过程中,可以使用PMA层的近端环回和远端环回功能. PMA近端环回用于测试IP内核的内部自环回; PMA远端环回用于将远程10G PHY发送的数据直接在PMA层发送到远程10G PHY,而无需通过本地PCS层.
3、10G以太网接口时钟布局设计
由于10G以太网PCS / PMA是Xilinx正式提供的IP内核,因此我们需要结合开发板的实际情况为IP内核和其他模块设计合理的时钟电路,以便它可以正常工作通常的工作. 本文选择Xilinx VC709开发板作为板上调试的硬件平台,因此需要充分设计时钟布局,以考虑该开发板的结构. 具体的时钟布局如图5.3所示.
图5.3 10G以太网接口时钟布局
由于连接到VC709开发板光模块的Quad没有直接输入参考时钟,而是连接到一对SMA接口,所以我们将通过IBUFDS和156.25Mhz晶体振荡器生成的时钟输出. FPGA中的OBUFDS并将其输出到另一个. 一对SMA接口和两对SMA接口通过同轴电缆互连,因此连接到光模块的Quad具有输入参考时钟.
FPGA内部的时钟布局主要分为以下四个部分:
(a)输入差分参考时钟通过专用于参考时钟的缓冲器(IBUFDS_GTE2)变成单端时钟refclk,然后将refclk分为两个通道,一个连接到QPLL(QuadraturephasePhase Locking Loop),然后其他时钟经过一个BUFG之后,它将转换为全局时钟coreclk,然后coreclk继续被分为两个通道. 一个通道用作10G MAC内核XGMII接口的时钟(xgmii_rx_clk和xgmii_tx_clk),另一通道用于驱动10G以太网PCS / PMA IP内核的用户侧逻辑.
(b)对于QPLL输出的两个时钟qplloutclk和qplloutrefclk,它们主要用于IP内核中GTH使用的高性能时钟,其中qplloutclk直接用于驱动串行时钟在发送端. GTH,其频率为5.15625GHz. qplloutrefclk用于驱动GTH内部的某些逻辑模块,其频率为156.25MHz.
(c)txoutclk是由10G以太网PCS / PMA IP生成的322.26MHz时钟. 时钟在BUFG之后分为两个通道,其中txusrclk用于驱动IP内核中GTH的32位总线数据,而txusrclk2用于驱动IP内核PCS层中的某些模块.
(d)200MHz的晶体振荡器产生差分时钟输入,该差分时钟输入到FPGA中的PLL(锁相环)模块. PLL模块生成一个192MHz的用户时钟(sys_clk),其时差为200MHz,作为驱动时钟,并将其发送到10G MAC内核用户端.
4. 仿真验证

在本节中,我们主要在10G MAC内核和10G以太网PCS / PMA IP内核上进行联合仿真测试,以测试两个模块组合后能否稳定运行. 具体测试原理如图5.4所示.
图5.4 10G以太网接口测试
连接10G以太网PCS / PMA IP内核的高速串行差分信号的输入和输出,以实现环回测试. 我们在10G MAC内核的用户侧设置了一个数据源来发送数据帧. MAC核心传递数据后,将其转换为标准的以太网帧,并通过XGMII接口发送到10G以太网PCS / PMA IP核心. 10G以太网PCS / PMA IP内核将其转换为高速串行差分信号输出. 10GEthernet PCS / PMA IP内核通过环回接收高速串行差分信号,并重复上述过程的相反过程,并在10G MAC内核的用户侧接收接口上还原最终数据. 该测试具体分为3个步骤: 固定长度最短帧(64字节)模拟测试,固定长度最长帧(1518字节)模拟测试,随机帧长度模拟测试. 在每个测试步骤中,我们都希望尽可能地模拟10Gbps业务流. 对于数据检测,我们不仅必须比较波形的正确性,而且还必须将10GMAC核心用户端发送和接收的数据记录到两个文件中,并使用该软件比较两个文件中的数据以确定数据是否正确. 是一致的. 由于篇幅所限,我们只给出固定长度的最短帧的模拟结果的屏幕截图.
图5.5定长最短帧的仿真
图5.6固定长度和最短帧发送和接收数据的对比图
1. 项目设置
软件环境为VIVADO2016.2,芯片设置为xc7vx690tffg1761-2(正在使用),并且该板使用Xilinx的VC709开发板.
VC709开发板实物图
Vivado选择FPGA模型接口
首先选择IP核,在界面中选择10G Ethernet Subsystem,PCS/PMA选择 BASE-R,位宽选择为64bit,其他标签中的选项默认即可。
图片
图片
图片

图片
图片
生成IP内核后,右键单击IP内核,然后选择“打开Ip示例设计”. VIVADO将自动生成一个示例设计,如下图所示:
图片
这时以太网接口板,将建立示例设计. 目前,该项目附带一个数据源,即axi_10g_ethernet_0_gen_check_wrapper模块,但是该数据源通过函数生成数据,无法进行综合. 因此,为了配合Testcenter的流量测试,请删除此数据源.
为了简化引脚分配,在生成的示例设计中生成了一个新的顶层文件,并且在此顶层模块中将用户端输入和输出数据连接在一起,以实现对处理器的自环回. MAC核心.
图片
此外,在xdc文件中,引脚分配如下所示:
图片
2. 车载验证
板级验证环境的连接图如下. 使VC709板流过10G TestCenter的光学端口. 将逻辑写入VC709板的690T FPGA内以在用户侧执行环回. 通过观察连接到TestCenter的配置PC接口,可以确定环回测试是否成功.
图片
通过10G Testcenter流测试,首先配置测试环境,帧长为随机帧长(64〜1518),速率设置为10G(实际设置为9.9G,Testcenter会有一些丢帧错误)当速度为全速10G时,9.9G不会造成问题,但是当我们使用自己的10G以太网MAC内核而不是Vivado工具生成的MAC内核时,它可以支持全负载线速处理. 仅演示了由Vivado结果生成的MAC内核.
图片
图片

测试结果如下图所示. 您会发现数据可以正常发送和接收而不会丢失帧.
图片
并在VIVADO中抓取用户侧信号,结果如下图所示,数据收发正常.
图片
此例程仅描述回送测试. 在实际应用中以太网接口板,输入数据后,您可以使用FPGA执行各种所需的处理. 如矩阵运算,图像处理,机器学习,压缩,非对称加密,Bing搜索等. 可以大大减轻CPU软件的负担,提高整体处理能力.
根据第一部分图5.3中VC709板时钟布局的介绍,为10G以太网接口提供参考时钟的SMA接口如下所示. VC709开发板上的红色框中标记为7和8的两个接口. 中,您需要使用同轴电缆手动连接两个接口.
图片
用同轴电缆连接后的物理图如下:
图片
查看用户手册,您会发现下面介绍了7和8个界面.
图片
查看VC709原理图,您可以找到与690T FPGA引脚对应的参考时钟,如下所示:
图片
此外,在Xilinx系列开发板上,VC707板还具有10G以太网接口,其使用方法与VC709相同.
图片

在VC707板上,需要用同轴电缆连接的引脚在上图中是9和10.
图片
与VC709板上的10G接口相关的VC707板上的FPGA引脚的比较表如下. 从图中可以看出,VC709开发板可以连接到10G的接口数量明显多于VC707开发板.
图片
1. 违反时间.
问题描述: 使用vivado 2016.2软件完成10G以太网接口的全面实现后,发现该软件报告项目中多个时序路径的建设时间无法满足,时序错误可能会发生.
找出原因: 通过查看时序报告并将其与项目的实际设计相结合,可以理解,问题的出处是10G MAC内核的异步FIFO. 由于此FIFO的两个时钟是异步时钟,因此软件在布局时将其布局. 在路由时,不可能同时满足两个时钟域的要求,因此存在建立时间报告为红色的问题.
解决方案: 由于此FIFO的核心是双端口RAM,因此该RAM本身可以实现跨时钟域的数据传输,因此该问题不会引起时序错误. 通过忽略时序约束中的几个时序违规的时序路径来解决此问题.
2. 10G以太网接口无法接收数据的问题
问题描述: 在10G以太网接口的电路板测试期间,发现该接口无法从交换机接收数据. 10G EthernetPCS / PMA IP内核的状态信号表明链路不同步,链路状态为低.
查找原因: 由于接口问题,请使用Xilinx提供的专用测试接口的ibertIP内核对其进行测试. 发现ibert的近端PCS回送和PMA回送可以通过测试,但外部光纤用于回送. 当时无法通过测试,因此分析可能是光模块导致10G以太网接口无法接收数据的问题. 在查阅开发板VC709的官方手册后,发现该开发板光模块的默认状态为关闭,必须通过代码对其进行配置才能使光模块正常工作.
解决方案: 请查阅手册并根据手册配置光模块. 再次测试,10G以太网接口可以接收数据,问题解决了.
3. Vivado 2016.2软件错误问题
见本公众号之前文章:[发现了vivado2016.2版本的一个BUG!](https://mp.weixin.qq.com/s?__biz=MzU1MzI4ODA5OA==&mid=2247484368&idx=1&sn=d7dc5db71d536342d7987af37edea409&chksm=fbf46b1dcc83e20b380448ffb7ce7585a12de342f2238fedc04ccb782d3cc59ce8876765&token=1998245080&lang=zh_CN&scene=21#wechat_redirect)
[1] Xilinx.ug887-2013.VC709 Virtex-7 FPGA用户指南评估板[S] .Xilinx,2013.
[2] Xilinx.ug885-2016.VC707评估板,用于Virtex-7 FPGA用户指南[S] .Xilinx,2016年.
[3]傅新宇. 10G HIMAC协处理器关键技术研究. [D]. 西安电子科技大学,2018.
VC709和VC707开发板上还有千兆的接口模式,如SGMII接口等,具体调试见本公众号之前文章:[SGMII接口调试](https://mp.weixin.qq.com/s?__biz=MzU1MzI4ODA5OA==&mid=2247484513&idx=1&sn=fcffe7e7e634a84696f5f57db47a276f&chksm=fbf46caccc83e5bacb560b203eebf2b3a0be3289c2a5367e4ff9b8b787f3a070374dcadd3922&token=1998245080&lang=zh_CN&scene=21#wechat_redirect)。同时,随着以太网接口速率的提升,10G、20G、40G甚至100G的以太网接口应用越来越广泛,具体来讲主要有两个关键的应用领域。
1. 数据中心在加速.
在一些数据中心采用10G或者更高速率的以太网接口加FPGA的模式,可以在数据进入到服务器之前采用硬件的方式进行快速的处理,降低服务器CPU的负荷,见本公众号之前文章:[深度 | 如何评价微软在数据中心使用 FPGA ?](https://mp.weixin.qq.com/s?__biz=MzU1MzI4ODA5OA==&mid=2247484711&idx=1&sn=aae3fa310ac314b4b6960bf2b8033811&chksm=fbf46deacc83e4f444ddfcb019c382827725579a3ac09cfb619e11a38e4548f7994c66a1a8&token=1998245080&lang=zh_CN&scene=21#wechat_redirect);
2. SDN / NFV
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-260766-1.html
见者有份吗
2003年军队就已经进驻台湾
杨洋的Hi-Res初体验##杨洋h