当线速率来到 10Gbps,每一纳秒都关乎成败。今天我们拆解如何用实现的万兆以太网 MAC 控制器,如何优雅地同时驾驭高速数据通路、协议检测、CRC 校验、流控与统计管理。
一、10G MAC有什么用?
10G以太网(10 Gigabit Ethernet,简称 10GbE)是 IEEE 802.3ae 标准定义的高速以太网技术。在数据中心、高性能计算和网络基础设施中,10G MAC 层是连接物理层(PHY)与上层协议栈的核心桥梁。
二、宏观架构:三引擎各司其职
整个以太网MAC设计分为三大功能域:
| 接收功能 | XGMII 数据接收、帧解析、CRC 校验、统计输出 |
| 发送功能 | 用户数据成帧、CRC 插入、XGMII 发送、流控 |
| 管理功能 | 配置寄存器读写、统计寄存器读取、端口PHY 管理 |
这种三分法不是随意的——它完全对应 IEEE 802.3 标准中 MAC 层的功能划分。在设计中,接收、发送和管理模块可以设计采用独立的时钟域,形成了天然的多时钟域隔离。
三、接收通路:从 XGMII 到用户数据的流水线艺术
接收通路是整个设计中最复杂的部分,它需要完成从物理 XGMII 接口(32 位数据 + 4 位控制)到 64 位用户数据的全部转换。我们从最底层开始设计。
3.1 调和子层(RS Layer):跨时钟域与数据对齐
rx_RS_Layer 模块承担了 IEEE 802.3 标准中「调和子层」的职责。XGMII 接口的 32 位数据先进入 调和子层IO 模块进行:
-
字对齐检测:通过在双倍时钟域下检测 XGMII 控制字符 ,实现与发送端的字边界对齐。一旦检测到控制码,写入控制指针即刻翻转,完成 32 位到 64 位的正确拼接。
-
链路故障检测:在每个检测周期,实时检测 32 位数据通道 Lane 0 上的训练序列。通过解读 Sequence 码的标志位区分 Local Fault和 Remote Fault,完全遵循 IEEE 802.3ae Clause 46 中规定的链路故障信令协议。
-
异步 FIFO 跨时钟域:`检测时钟域到 接收数据时钟域之间,使用参数化的异步FIFO实现跨时钟域数据传递。
3.2 链路故障状态机:严谨的故障确认机制
rx_link_fault 模块实现了 IEEE 802.3




