10g以太网标准,10gb 以太网
chanong
|随着FPGA在数据中心加速领域的普及以及智能网卡在SDN、NFV领域的应用日益广泛,基于以太网接口的FPGA开发板越来越受到关注。应用的关键是更快的以太网接口技术,我们将详细介绍基于FPGA的10G以太网接口的原理和调试技术。欢迎大家留言讨论。
10G 以太网接口概述1. 10G 以太网结构10G 以太网接口分为两部分:10G PHY 和10G MAC。如下所示。
在本设计中,采用Xilinx的10GEthernet PCS/PMA IP核作为连接10GMAC的PHY芯片,并将IP核约束在光模块上,构建完整的物理层。请注意,此设计主要是为了完成以太网第2 层逻辑设计,不包括PHY 层逻辑设计,例如位同步、字节同步、字同步或64b/66b 编解码器。 2、10G以太网接口PHY10G EthernetPCS/PMA整体结构如图5.2所示,其核心基于RocketIO GTH/GTX实现。可以看到,该模块分为PCS层和PMA层,PCS层的主要功能是在传输数据时进行64B/66B编码、加扰、改变数据的传输速率等。同时,测试模式还为链路检测提供测试激励源。 PMA层的主要功能是提供并串转换、驱动和传输串行信号等功能。接收数据时,PMA层的主要功能是对接收到的高速差分信号进行串并转换、位同步、时钟恢复等功能,而PCS层则进行块同步、执行加扰,64B//。 66B解码、弹性缓存等等。同时,测试模式还提供测试激励检测功能,用于检测链路工作状态。
在调试接口时,可以使用PMA层的近端和远端环回功能。 PMA近端环回用于测试IP核内部自环回,PMA远端环回直接在PMA层环回接收到的远端10G PHY发送的数据,并传输到远端10G PHY。发给。通过本地PCS层。 3、10G以太网接口的时钟布局设计由于10G以太网PCS/PMA是Xilinx官方提供的IP核,因此需要根据开发的实际情况,为该IP核和其他模块设计合适的时钟。确保电路板的电路正常工作。本文采用Xilinx VC709开发板作为板载调试的硬件平台。因此,时钟布局的设计必须考虑到该开发板的结构。具体的时钟布局如图5.3所示。
与光模块连接的VC709开发板四路没有直接输入参考时钟,而是连接在一对SMA接口上,因此将156.25Mhz晶振产生的时钟驱动到另一对SMA上来做。通过同轴电缆互连两组SMA 接口,使得连接到光模块的四路具有由FPGA 接口中的IBUFDS 和OBUFDS 驱动的输入参考时钟。 FPGA内部的时钟布局主要分为四个部分: (a) 输入差分参考时钟经过参考时钟专用缓冲器(IBUFDS_GTE2)成为单端时钟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。 qploutrefclk用于驱动GTH中的一些逻辑模块,频率为156.25MHz。 (c) txoutclk 是10G 以太网PCS/PMA IP 生成的322.26MHz 时钟。该时钟在BUFG 之后被分成两个通道。其中,txusrclk用于驱动IP核内部的GTH 32位总线数据,txusrclk2用于驱动IP核和内部PCS层的一些模块。 (d) 200MHz晶振产生差分时钟,输入到FPGA内部的PLL(Phase LockingLoop)模块,该模块以200MHz差分时钟作为驱动时钟和192MHz用户时钟(sys_clk)生成并发送。在10G MAC核心的用户侧。 4.仿真验证本部分主要进行10G MAC核和10G以太网PCS/PMA IP核的联合仿真测试,测试两个模块组合后是否能够稳定工作。具体测试原理如图5.4所示。
连接10G以太网PCS/PMA IP核的高速串行差分信号输入和输出以实现环回测试。在10G MAC核用户侧配置数据源,用于传输数据帧,数据经过MAC核后,转换为标准以太网帧发送至10G以太网PCS/PMA IP核。 XGMII接口转换为10G以太网PCS/PMA IP核输出的高速串行差分信号高速串行差分信号通过环回被10G以太网PCS/PMA IP核接收重复上述过程,最终将10G数据恢复MAC核的用户侧接收接口。本次测试分为三步:固定长度最短帧(64Bytes)模拟测试、固定长度最长帧(1518Bytes)模拟测试、随机帧长度模拟测试。每个测试步骤都应尽可能模拟10Gbps 业务流。数据检测不仅要比较波形是否正确,还要将10GMAC核用户侧的发送和接收数据记录到两个文件中,用软件比较两个文件的数据,看看波形是否正确。是正确的,你需要判断它是否正确。发送和接收的数据是一致的。由于篇幅限制,我们仅包含最短定长帧的模拟结果的屏幕截图。
图5.5 定长最短帧仿真图
图5.6 固定长度最短帧发送和接收数据对比
10G以太网接口板级调试1、工程设置软件环境为VIVADO2016.2,芯片设置为xc7vx690tffg1761-2(主动),板子为Xilinx VC709开发板。
VC709开发板实物图
Vivado 选择FPGA 模型接口。首先选择IP核,接口选择10G以太网子系统,PCS/PMA选择BASE-R,位宽选择64位,其他选项卡上的选项保留为默认。
IP核生成完成后,右键单击IP核并选择Open Ip Examples Design,VIVADO自动生成示例设计,如下图所示。
示例设计现已配置完毕。该项目现在附带一个名为axi_10g_ethernet_0_gen_check_wrapper 模块的数据源。但该数据源通过函数生成数据,无法合成。因此,为了与考试中心合作,我们删除了该数据源以进行流式考试。在生成的示例设计之上生成一个新的顶层文件,以方便引脚分配,并且用户侧输入和输出数据在该顶层模块内连接,为MAC核提供自环回。
此外,xdc 文件中的引脚分配如下所示:
2、板级验证板级验证环境连接图如下,通过光口将VC709板通过10G TestCenter进行串流,逻辑写在VC709板的690T FPGA内部,用户执行环回通过观察与TestCenter 连接的配置PC 接口,可以判断环回测试是否成功。
首先通过10G Testcenter流式测试配置测试环境。帧长为随机帧长(64-1518),速率设置为10G(实际设置为9.9G。如果全速为10G,Testcenter会在9.9G时给出丢帧错误,但是使用创建的10G 以太网MAC 核代替Vivado 工具生成的MAC 核可以支持满负载线速处理(使用Vivado 生成的MAC 核的演示结果)。
测试结果如下图所示,数据可以正常发送和接收,没有丢帧。
用VIVADO捕获用户侧信号的结果如下图所示,表明数据发送和接收正常。
虽然本例程仅描述了环回测试,但在实际应用中,数据输入后,FPGA 可以用于执行各种所需的操作。矩阵运算、图像处理、机器学**、压缩、非对称加密、Bing搜索等。它可以显着减轻CPU软件的负载并提高整体处理能力。
参考时钟引脚分配注意事项根据第1 部分图5.3 中VC709 板时钟布局的介绍,为10G 以太网接口提供参考时钟的SMA 接口如下所示:标记了两个接口7 和8。 VC709开发板红框内其实,在开发板的调试过程中,需要手动用同轴电缆连接两个接口。
使用同轴电缆连接后的实际图像如下:
如果你查看用户手册,你会发现7和8接口的描述如下:
如果你查看VC709原理图,你会发现690T FPGA引脚对应的参考时钟如下所示。
Xilinx系列开发板中的VC707板也具有10G以太网接口,使用方法与VC709相同。
在VC707板上,需要连接同轴电缆的引脚是上图中的引脚9和引脚10。
下面是VC709和VC707开发板与10G接口相关的FPGA管脚对照表,从图中可以看到,VC709开发板可以连接的10G接口远远多于VC707开发板。
调试板子时遇到的问题1. 时序违规问题。问题描述:使用软件vivado 2016.2完成一个10G以太网接口的全面实现后,发现项目中部分时序路径的建立时间可能不满足,软件中可能出现时序错误。查找原因:通过查看时序报告并结合项目实际设计,我们发现问题出现在10G MAC核中的异步FIFO上。由于该FIFO 中的两个时钟是异步时钟,因此软件无法解决该问题。问题是同时满足两个时钟域的要求,导致设置时出现红色报告。解决方案:由于该FIFO的核心是双口RAM,该RAM本身可以实现数据的跨时钟域传输,因此该问题不会造成时序错误。通过使用时序约束来忽略具有某些时序违规的时序路径,可以解决此问题。 2. 10G 以太网接口无法接收数据问题问题描述:测试单板上的10G 以太网接口时,发现该接口无法接收来自交换机的数据10G 以太网PCS/PMA IP Core Status 信号表明链路断开的同步。链接状态低。查找原因:接口有问题,于是我使用Xilinx提供的专用测试接口ibertIP核进行测试,发现ibert的近端PCS环回和PMA环回都通过了测试,我做到了。但如果使用外部光纤进行环回,则无法通过。经过测试分析,可能是光模块存在问题,导致10G以太网接口无法接收数据。查阅了开发板VC709的官方手册,发现该开发板上的光模块默认状态是关闭的,必须通过代码进行配置才能使光模块正常工作。解决方法:查阅手册,按照手册配置光模块。再次测试,10G以太网接口能够接收数据,问题解决。 3、Vivado 2016.2软件Bug问题参见本公众号上一篇文章:vivado 2016.2版本发现Bug!
参考文献[1] Xilinx.ug887-2013.VC709Virtex-7 FPGA 用户指南评估板[S].Xilinx, 2013.[2] Xilinx.ug885-2016.VC707Virtex-7 FPGA 用户指南评估板[S]] Xilinx, 2016 . [3]付新宇.10G HIMAC协处理器关键技术研究.[D].西安电子科技大学,2018.
应用场景VC709和VC707开发板还具有千兆接口模式。同时,随着以太网接口速度的提高,10G、20G、40G、甚至100G以太网接口的应用越来越广泛,具体来说主要有两个应用领域。 1.数据中心加速。一些数据中心可以采用10G以上速率的以太网接口和FPGA模式,在数据进入服务器之前在硬件中快速处理,减少服务器CPU的负载。 2. SDN/NFV 扩展上述应用场景,可以使用配备FPGA的以太网卡来减少各种场景下的CPU负载。现在最流行的概念是SMART NIC,即智能网卡。其核心是FPGA(现场可编程门阵列),帮助CPU处理网络负载并对网络接口功能进行编程。它具有以下特点:
支持通过FPGA本地编程定制数据平面和控制平面功能,帮助CPU处理网络负载。它通常包括多个端口和内部交换机,以快速传输数据并根据网络数据包、应用程序套接字等智能地将其映射到相关应用程序。发现和管理网络流量;智能网卡可提高应用程序和虚拟化性能,发挥软件定义网络(SDN) 和网络功能虚拟化(NFV) 的优势,并将网络虚拟化、负载平衡和其他低级功能从服务器CPU 中移出。为应用程序提供最大的处理能力。同时,智能网卡还可以提供分布式计算资源,允许用户开发自己的软件或提供接入服务来加速特定应用。目前提供基于FPGA 的智能网卡的业界厂商包括Accolade、BittWare、Enyx、Ethernity、Napatech、Netcope、Reflex CES、Silicom 和Solarflare,这些厂商通常采用Intel 或Xilinx 集成FPGA,其实现方式为:此外,Broadcom、Cavium、Intel、Kalray、Mellanox、Netronome、Silicom 和SolidRun 还提供基于处理器的智能NIC,并使用具有集成处理器内核或FPGA 或智能I/O 处理器的处理器。 Amazon 和Google 的智能NIC ASIC 已经上市。发达。后续我们将继续提供相关介绍。完整的文本。








