跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言

基于 7 系列 FPGA 实现万兆以太网通信

对 7 系列 FPGA 硬件,详细阐述了两种万兆以太网通信的实现方案:10G PCS/PMA 核与 10G Ethernet Subsystem 核。文章解析了 XGMII 接口时序、64B/66B 编码规则及 MDIO 配置要点,并对比了 AXI 流接口的便捷性。功能测试部分涵盖了 ARP 响应、Ping 连通性、巨型帧分片策略验证以及吞吐量测速,实测速率接近 9.5 Gbps。内容旨在为工程师提供从底层协议封装到上层应用测试的完整参考路径。

CoderByte发布于 2026/3/23更新于 2026/10/2494 浏览
基于 7 系列 FPGA 实现万兆以太网通信

基于 7 系列 FPGA 实现万兆以太网通信

本文聚焦于 7 系列 FPGA,探讨两种实现万兆以太网通信的方案:10G Ethernet Subsystem 核与 10G PCS/PMA 核。基于 SerDes 的 10G 以太网通信采用 64B/66B 编码方式,串行线速率为 10.3125Gbps。

一、FPGA 实现万兆以太网

1.1 10G PCS/PMA 核

该核的用户接口为 XGMII,具体使用可参考 PG068 文档。对于光纤或 RJ45 水晶头接口(10GBASE-R 类型),内部功能结构包含加扰与解扰模块。万兆网通信采用 64B/66B 编码,发送前需对数据加扰,接收时先解扰。编码规则是在加扰后的 64bit 数据前加入 2bit 同步位(Sync),表示该 64bit 数据是数据帧还是控制帧。

1.1.1 以太网 XGMII 接口

这里讨论 64bit 数据位宽的 XGMII 接口。xgmii_txd 对应字节为控制字符时,xgmii_txc 对应的控制位为高电平;反之则为低电平。

相关时序中,空闲状态为 0x07、起始状态为 0xFB、终止状态为 0xFD。以太网帧对接 XGMII 接口的封装过程如下:添加控制符,顺序为空闲 IDLE(0x07)+ START(0xFB)+ 前导码 + SFD + MAC + ...... + FCS + TERMINATE(0xFD)。

在增加起始、结束、空闲控制符后,需按转换规则处理。例如起始 S 转换为 64bit 中 MSB 字节为 0x78,空闲状态为 0x1E。最后将上述 64bit 接口数据经加扰,送到 10G PCS/PMA 核的 XGMII 接口。用户接收到数据后,按逆过程解析网络帧。

1.1.2 MDIO 接口

MDIO 接口是该核的寄存器配置接口,类似于千兆网 PHY 的寄存器配置。仅在特定场景下需要用到,具体寄存器描述见 PG068 的 Configuration Vector 部分。

1.1.3 核配置说明

该核需要 License,且只适用于 7 系列 FPGA。配置页面中通常不启用 MDIO 接口。关于时钟、复位部分的使用,建议参考官方 Example。

借助例化上述 GT 核后,可按流程开发编码实现 PCS 相关功能。发送帧时,用户端帧数据封装起始、结束、空闲码后,经加扰、结合同步字段、通过 Gearbox 及并串转换,最终传送出去;接收则是逆操作。开发过程主要涉及帧数据的封装与解封、同步字段的增添与解析、加解扰。具体网络协议(如 UDP、TCP)由用户根据需求实现。

1.2 10G Ethernet Subsystem 核

该核的用户数据接口为 AXIS,是实现万兆网通信最快捷的方法,同样需要 License。开发时只需按照以太网协议对网络帧进行解析与封装,重点关注以下结构:

  • 选择 10GBASE-R 类型,64bit 的 AXIS 数据接口。
  • AXI-Lite 配置接口时钟范围,此处未启用流控。
  • DRP 及状态接口配置。
  • 时间戳功能可选,本例未启用。
  • 时钟及复位选择集成核内外。

多通道万兆网通信使用核方式与 UltraScale/+ 系列有所不同,时钟及复位的具体用法请参考 Example。

二、万兆网功能测试

测试基于 UDP 协议栈进行,原理与千兆、40G/50G、100G 以太网相同,差异在于用户数据位宽及 CRC 检验的实现难度。

2.1 ARP 及 Ping 功能

通过 Ping 下位机测试 ARP 及 Ping 应答功能。工程实现中,向对端发包前先查询 ARP 列表,无果则进行寻址,明确场景下也可省略此步骤。

2.2 巨型帧

不同网卡、路由器支持的最大 MTU 不同,通常为 46~1500 字节。为实现长数据包传输,产生巨型帧。多级路由网络包传输为避免中间节点丢弃,采用巨帧分片处理:拆分成多包,利用 IP 层头部分片及偏移字段区分完整性和顺序。首包保持帧结构完整,MTU 最大 1500 字节;其他分片包去除 UDP 头部字段。

在点到点直连或中间路由节点支持大 MTU(如 9000 字节)的场景,可采用标准分片策略或不分片策略。

测试验证:

  • 协议栈仿真: 测试模块产生 8500 字节测试数据,协议栈分片,环回后接收端正确解析。
  • 上板测试: 10G 以太网核上板测试,上位机 Wireshark 观测显示分片及偏移量正常。从第 2 个分片开始,不再有 UDP 头部字段。
  • PCS/PMA 核测试: 同样验证了 8500 字节数据的发送与接收。

2.3 测速

两个工程向上位机发包,当接口空闲时持续上发,测速结果接近 9.5 Gbps。

2.4 代码说明

如需相关工程代码,请查阅官方示例或联系技术支持获取。

目录

  1. 基于 7 系列 FPGA 实现万兆以太网通信
  2. 一、FPGA 实现万兆以太网
  3. 1.1 10G PCS/PMA 核
  4. 1.1.1 以太网 XGMII 接口
  5. 1.1.2 MDIO 接口
  6. 1.1.3 核配置说明
  7. 1.2 10G Ethernet Subsystem 核
  8. 二、万兆网功能测试
  9. 2.1 ARP 及 Ping 功能
  10. 2.2 巨型帧
  11. 2.3 测速
  12. 2.4 代码说明

更多推荐文章

查看全部
  • 程序员成长必读的 10 本经典技术书籍推荐
  • C++ 语言核心语法与实战入门指南
  • Trae AI 原生 IDE 安装与使用指南
  • 2025 年 AI 领域年度总结:DeepSeek R1 开源与 Manus 商业化
  • AR 演讲提词器开发实战:基于 Rokid CXR-M SDK
  • 三款主流云电脑部署 DeepSeek 模型性能实测与对比
  • 如何精准引导 ChatGPT 构建定制化 GPTs 应用
  • 基于人工蜂群非确定性双向规划的无人机二维三维路径规划与协同研究
  • Rancher UI 菜单模块源码深度解析
  • 仿生学突破:SILD 模型如何让无人机在电力线迷宫中发现隐形威胁
  • 鸿蒙金融理财全栈项目:风险控制、合规审计与产品创新
  • 使用 Layui 框架解决 Unity WebGL 渲染在 Tab 切换时黑屏问题
  • 零基础入门网络安全的学习路线与实战指南
  • Shannon:全自主 AI 渗透测试工具解析
  • 原生 JavaScript 跨浏览器事件处理兼容方案
  • AirSim 无人机仿真入门:实现起飞与降落控制
  • Python AI 三剑客:文档总结、代码生成与资料检索
  • 宇树 G1 机器人 SDK2 开发指南:环境搭建至 Demo 测试
  • 黑马商城 ElasticSearch 搜索功能实战
  • 初识Langchain之AI语言大模型

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online