以太网硬件与芯片设计深入学习路线:从MAC、PHY到Switch ASIC


1 前言

       上一篇《以太网基础知识:从帧格式、MAC地址到交换机转发》已经建立了以太网的基础框架:网络分层、以太网帧格式、MAC 地址、ARP、交换机转发、VLAN、STP、LACP、QoS、Wireshark 抓包以及 MAC/PHY/Switch ASIC 的基本概念。

       如果继续从硬件或芯片设计角度深入学习,以太网就不再只是“一个二层协议”,而是一条从 bit 级物理传输packet 级高速转发 的完整数据通路:

Ethernet Frame
  -> Ethernet MAC
  -> MAC-PHY Interface
  -> PCS / FEC
  -> PMA / SerDes
  -> PHY / 光模块 / 铜缆
  -> Switch ASIC Ingress Pipeline
  -> Parser / Lookup / ACL / QoS
  -> Packet Buffer / Queue / Scheduler
  -> Egress Modification
  -> MAC TX

       本文只关注 硬件/芯片方向,目标是回答三个问题:

  1. 如果要设计 Ethernet MAC,需要学习哪些内容?
  2. 如果要理解 PHY、PCS、SerDes,需要掌握哪些物理层知识?
  3. 如果要进一步学习 Switch ASIC,需要从哪些模块切入?

       本文不是 IEEE 802.3 标准的逐条解释,而是一份面向 RTL/ASIC/FPGA 工程师的以太网硬件学习大纲和技术地图。

以太网硬件与芯片设计学习路线图


2 从硬件角度重新理解以太网

       从网络协议角度看,以太网主要处理 frame;从芯片角度看,以太网是一条高速数据通路。一个 packet 进入芯片后,需要经历接收、校验、解析、查表、缓存、调度、修改和发送。

RX Pins / SerDes
  -> PHY / PMA
  -> PCS
  -> MAC RX
  -> Packet Parser
  -> Lookup / ACL / QoS
  -> Buffer / Queue
  -> Scheduler
  -> Egress Edit
  -> MAC TX
  -> PCS
  -> PMA / PHY
  -> TX Pins / SerDes

       上面这条路径中有几个容易混淆的模块,先做一个简单解释:

模块 简单理解 主要作用
PMA Physical Medium Attachment,靠近 SerDes 的物理适配层 负责串并转换、时钟恢复、lane 映射等更接近高速串行链路的工作
PCS Physical Coding Sublayer,物理编码子层 负责编码/解码、扰码/解扰、block lock、lane alignment、FEC 等,使 MAC 数据适合高速传输
Parser 报文解析器 从 packet 中提取目的 MAC、源 MAC、VLAN、EtherType、IP、TCP/UDP 端口等字段,生成后续查表需要的 metadata
Lookup 查表模块 根据 Parser 提取的字段查询 MAC 表、VLAN 表、路由表、ACL 表等,决定 packet 的转发路径和处理动作
ACL Access Control List,访问控制列表 根据报文字段匹配规则,执行丢弃、放行、重定向、镜像、计数、限速等动作
QoS Quality of Service,服务质量 根据优先级、流量类型或拥塞状态,把 packet 分到不同队列,并决定调度、限速、丢弃或标记策略
Egress 出方向处理流水线 在 packet 发出前完成 VLAN tag 修改、MAC rewrite、TTL 更新、checksum 更新、timestamp 插入等操作

       可以简单记成:PCS/PMA 负责把 bit 在物理链路上可靠传输,Parser/Lookup/ACL/QoS 负责决定 packet 在芯片里怎么走,Egress 负责 packet 出端口前的最后修改。

       因此,以太网硬件学习可以拆成四个层次:

层次 关注点 典型模块
帧处理层 以太网帧如何收发、校验和对齐 MAC TX、MAC RX、CRC、Padding、IFG
接口层 MAC 和 PHY/PCS 如何传输数据 MII、GMII、RGMII、SGMII、XGMII
物理编码层 bit 如何编码、对齐、纠错、串并转换 PCS、FEC、PMA、SerDes
交换芯片层 packet 如何被解析、查表、缓存和调度 Parser、Lookup、Buffer、Queue、Scheduler

       如果是 FPGA 入门,可以先从 MAC + RGMII/SGMII + UDP/ARP 实验开始;如果是 ASIC/Switch 芯片方向,则需要进一步理解大带宽、多端口、多 pipeline、共享 buffer、QoS 和拥塞控制。


3 Ethernet MAC:硬件学习的第一个核心模块

       Ethernet MAC 是以太网硬件系统中最适合作为起点的模块。它处于二层协议和物理层接口之间,既要理解帧格式,也要考虑 RTL 数据流、CRC、时钟、反压和错误处理。

3.1 MAC 的位置

Packet Stream / DMA / Switch Pipeline
        |
        | internal packet interface
        v
      Ethernet MAC
        |
        | GMII / RGMII / SGMII / XGMII
        v
        PHY / PCS / SerDes

       MAC 通常分为 TX 和 RX 两个方向:

模块 主要职责
MAC TX 接收内部 packet stream,插入 Preamble/SFD,补齐 Padding,计算并追加 FCS,控制 IFG
MAC RX 从 PHY 接口接收字节流,检测 Preamble/SFD,恢复 frame,校验 FCS,过滤错误帧
MAC Control 处理 Pause Frame、PFC、速率配置、地址过滤等控制功能
Statistics 统计收发包数、字节数、CRC error、runt、jabber、pause frame 等

Ethernet MAC 模块框图

3.2 MAC TX 数据通路

       MAC TX 的输入通常是内部 packet stream,例如 AXI-Stream 或自定义 valid/ready 接口。一个典型发送流程如下:

等待 SOP
  -> 接收 Destination MAC / Source MAC / EtherType / Payload
  -> 插入 Preamble 和 SFD
  -> 发送 Frame Body
  -> 如果长度不足则插入 Padding
  -> 计算并追加 FCS
  -> 插入 IFG
  -> 等待下一帧

       MAC TX 需要重点学习:

主题 说明
Preamble/SFD 发送端插入 55 55 55 55 55 55 55 D5
IFG Inter Frame Gap,标准以太网帧间隔
Padding Payload 不足时补齐到最小帧长
FCS 发送时计算 Ethernet CRC32 并追加
Backpressure 下游 PHY 或 PCS 不可接收时如何暂停
Underrun 发送过程中上游数据断流时如何处理

       RTL 设计时,MAC TX 通常是一个状态机:

IDLE
  -> PREAMBLE
  -> SFD
  -> DATA
  -> PAD
  -> FCS
  -> IFG
  -> IDLE

3.3 MAC RX 数据通路

       MAC RX 的任务是把 PHY 接口上的字节流恢复成内部 packet stream。典型流程如下:

检测 Preamble
  -> 检测 SFD
  -> 接收 Frame Body
  -> 统计长度
  -> 计算 CRC32
  -> 接收 FCS
  -> 比较 CRC
  -> 输出 packet 或丢弃错误帧

       MAC RX 需要重点关注:

主题 说明
Preamble 检测 判断帧开始前导码是否正确
SFD 检测 根据 0xD5 确定有效帧开始
FCS 校验 判断传输过程中是否发生 bit 错误
Runt Frame 小于最小帧长的异常帧
Jabber Frame 超过最大允许长度的异常帧
Alignment Error 非法对齐或字节边界错误
Address Filter 根据目的 MAC 判断是否接收

3.4 MAC 中的统计计数器

       商用 MAC 通常会包含大量统计计数器,用于驱动、交换机 SDK 或调试系统读取。

常见计数器包括:

       这些计数器对芯片 bring-up 和网络排障非常重要。例如,如果链路 up 但大量 CRC error,通常需要怀疑 PHY、SerDes、线缆、时钟或信号完整性问题。


4 CRC32/FCS:MAC 设计中的关键细节

       FCS(Frame Check Sequence)是以太网帧尾部的 4 Byte 校验字段,通常使用 Ethernet CRC32。虽然 CRC 在概念上不复杂,但在硬件实现中很容易因为 bit order、byte order、初值和异或方式出错。

4.1 Ethernet CRC32 基本参数

项目 Ethernet CRC32
多项式 0x04C11DB7
初始值 0xFFFFFFFF
输入 bit 顺序 LSB first
输出处理 final xor
FCS 长度 4 Bytes
校验范围 Destination MAC 到 Payload/Padding,不包括 Preamble/SFD 和 FCS 自身

       在 RTL 中,CRC 可以串行计算,也可以并行计算。低速 MAC 可以每拍处理 8 bit,高速 MAC 通常需要每拍处理 32/64/128/256/512 bit 甚至更宽。

4.2 并行 CRC

       并行 CRC 是以太网 MAC RTL 中非常常见的模块。它的输入数据宽度通常与内部 datapath 宽度一致。

Datapath 宽度 常见场景
8 bit 10/100M、简单教学 MAC
32 bit GMII 相关低速设计
64 bit 10G XGMII
256 bit 中高端交换芯片内部 datapath
512 bit 高吞吐 Switch ASIC pipeline

       并行 CRC 设计要处理 EOP 最后一拍的有效 byte 数,因此常与 tkeepemptybyte_valid 信号配合使用。

Ethernet CRC32 硬件计算示意图

4.3 常见错误点

学习和实现 Ethernet CRC 时,需要特别注意:


5 MAC-PHY 接口:从并行总线到高速串行接口

       MAC 和 PHY/PCS 之间需要通过标准接口传输数据。不同速率、不同应用场景会使用不同接口。

5.1 常见接口总览

接口 典型速率 数据形式 典型应用
MII 10/100M 4-bit 并行 早期低速以太网
RMII 10/100M 2-bit 并行 低引脚数 MCU/SoC
GMII 1G 8-bit 并行 千兆 MAC/PHY
RGMII 1G 4-bit DDR 低引脚数千兆接口
SGMII 1G 串行 MAC 与 PHY 间高速串行
XGMII 10G 32/64-bit 并行 10G MAC 与 PCS
XLGMII 40G 宽并行 40G Ethernet
CGMII 100G 宽并行 100G Ethernet

5.2 GMII

       GMII 是千兆以太网中常见的 MAC-PHY 接口,每个方向 8 bit 数据,配合独立时钟和控制信号。

典型 GMII 信号包括:

信号 方向 说明
GTX_CLK MAC -> PHY TX 125 MHz clock
TXD[7:0] MAC -> PHY 发送数据
TX_EN MAC -> PHY 发送数据有效
TX_ER MAC -> PHY 发送错误
RX_CLK PHY -> MAC RX recovered clock
RXD[7:0] PHY -> MAC 接收数据
RX_DV PHY -> MAC 接收数据有效
RX_ER PHY -> MAC 接收错误

5.3 RGMII

       RGMII 使用 4 bit DDR 数据总线,在时钟上升沿和下降沿各传 4 bit,从而减少引脚数量。RGMII 在 FPGA 和嵌入式 SoC 中非常常见。

RGMII 学习重点:

5.4 SGMII

       SGMII 是串行千兆接口,常用于 MAC 与 PHY 或交换芯片内部模块之间。它通常基于 1.25 Gbps 串行链路,并包含自协商能力。

SGMII 学习重点:

5.5 XGMII

       XGMII 用于 10G Ethernet MAC 与 PCS 之间,通常为 32 bit 数据 + 4 bit control,或扩展为 64 bit 形式。

XGMII 引入了 data/control 字符的概念:

字符 含义
Idle 空闲字符
Start 帧开始
Terminate 帧结束
Error 错误字符
Data 正常数据字节

       在 10G 及以上以太网中,MAC 不再简单地通过 TX_EN/RX_DV 表示有效数据,而是通过 control character 标记 packet 边界和空闲状态。

MAC-PHY 接口演进图


6 PCS、PMA、PMD 与 SerDes

       在高速以太网中,MAC 后面通常不直接连接模拟物理介质,而是经过 PCS、PMA、PMD 等子层。

MAC
  -> Reconciliation Sublayer
  -> PCS
  -> FEC
  -> PMA
  -> PMD
  -> Medium

6.1 PCS

       PCS 是 Physical Coding Sublayer,主要负责将 MAC 侧的数据转换为适合高速传输和恢复的编码流。

PCS 常见功能包括:

6.2 PMA

       PMA 是 Physical Medium Attachment,更靠近 SerDes。它通常负责:

6.3 PMD

       PMD 是 Physical Medium Dependent,和具体介质强相关,例如铜缆、背板、光模块。它处理的是更接近真实物理世界的问题:

6.4 SerDes

       SerDes 是高速以太网芯片中的关键 IP。低速以太网可以使用并行接口,但 10G、25G、50G、100G、400G、800G 系统通常依赖高速 SerDes lane。

SerDes 学习重点:

主题 说明
NRZ 两电平信号,每个 symbol 表示 1 bit
PAM4 四电平信号,每个 symbol 表示 2 bit
CDR Clock Data Recovery,从接收数据中恢复时钟
PLL 为高速串行链路提供时钟
CTLE 连续时间线性均衡
DFE 判决反馈均衡
Pre-emphasis 发送端预加重
Eye Diagram 观察链路裕量
BER Bit Error Rate,误码率
Link Training 链路训练,自动调整均衡参数

高速以太网 PHY 分层图


7 编码、扰码和 FEC

       随着以太网速率提升,物理层编码和纠错变得越来越重要。不同速率标准可能使用不同编码方式。

7.1 常见编码方式

编码 常见场景 作用
Manchester 早期低速以太网 时钟恢复简单,但效率低
4B/5B 100BASE-TX 保证足够跳变
8B/10B 1000BASE-X、SGMII DC balance、comma 对齐
64B/66B 10GBASE-R 等 高效率块编码
256B/257B 更高速率场景 降低编码开销
PAM4 50G lane 及以上 每个 symbol 传 2 bit

7.2 Scrambler

       扰码器用于打散数据模式,避免长时间连续 0 或连续 1,帮助时钟恢复并降低 EMI。扰码不是加密,而是让数据在统计上更随机。

学习重点:

7.3 FEC

       FEC(Forward Error Correction)在高速以太网中非常重要。随着 PAM4 和高速 SerDes 的使用,链路原始误码率升高,需要通过 FEC 将误码率降低到系统可接受水平。

常见 FEC 相关概念:

       对芯片设计来说,FEC 不只是算法问题,还涉及面积、功耗、延迟和 throughput。


8 高速以太网速率演进

       以太网速率演进不是简单地把时钟提高,而是通过多 lane 聚合、更高阶调制、更复杂编码和 FEC 共同实现。

标准 典型 lane 组合 说明
1G Ethernet 1 lane 千兆以太网
10G Ethernet 1 × 10G 10GBASE-R
25G Ethernet 1 × 25G 服务器常见
40G Ethernet 4 × 10G 多 lane 聚合
100G Ethernet 4 × 25G 或 2 × 50G 数据中心常见
200G Ethernet 4 × 50G PAM4 常见
400G Ethernet 8 × 50G 或 4 × 100G 高端交换机
800G Ethernet 8 × 100G AI 集群和高端数据中心

       学习高速以太网时,需要把“端口速率”和“lane 速率”区分开。例如一个 400G 端口可能由 8 条 50G lane 或 4 条 100G lane 组成。

8.1 Lane Alignment

       多 lane 传输时,不同 lane 到达接收端的时间可能不同,因此 PCS 需要做 lane alignment。

核心概念:

8.2 Gearbox

       Gearbox 用于在不同数据宽度或不同时钟频率之间转换。例如 PCS 内部可能需要在 66-bit block 和 SerDes 数据宽度之间转换。

Gearbox 学习重点:

400G Ethernet 多 lane 架构图


9 内部 Packet Stream 接口

       MAC 与芯片内部模块之间通常不会直接传输 MII/GMII 信号,而是使用更适合芯片内部的 packet stream 接口。

9.1 常见信号

一个典型 packet stream 接口可能包含:

信号 含义
data 数据总线,例如 64/128/256/512 bit
valid 当前 beat 有效
ready 下游可接收
sop Start of Packet
eop End of Packet
keep / empty 最后一拍哪些 byte 有效
error 当前 packet 是否异常
user / metadata 端口号、VLAN、QoS、timestamp 等附加信息

9.2 SOP/EOP 与变长包

       以太网 packet 是变长的,而芯片内部 datapath 是定宽的。因此需要用 SOP/EOP 标记 packet 边界,用 keep/empty 表示最后一拍有效字节数。

Beat 0: SOP, data[511:0]
Beat 1:      data[511:0]
Beat 2: EOP, data[511:0], keep = 64'b0000...1111

9.3 Backpressure

       内部 packet stream 必须考虑反压。如果下游 FIFO 满、buffer 不足或 scheduler 暂停,上游需要停止发送或缓存 packet。

反压设计需要注意:

9.4 CDC

       MAC、PHY、SerDes 和系统逻辑可能运行在不同 clock domain,因此 CDC 是以太网硬件设计的重点。

常见 CDC 场景:

常见解决方法:


10 Ethernet MAC RTL 实现学习路线

       如果目标是能够自己写一个简化 Ethernet MAC,建议按下面顺序实现。

10.1 第一阶段:8-bit 简化 MAC TX

目标:

输入一段 Ethernet frame body
  -> 自动插入 Preamble/SFD
  -> 自动计算 FCS
  -> 输出完整 PHY byte stream

需要实现:

10.2 第二阶段:8-bit 简化 MAC RX

目标:

从 PHY byte stream 接收数据
  -> 检测 SFD
  -> 提取 frame body
  -> 校验 FCS
  -> 输出 packet stream

需要实现:

10.3 第三阶段:支持 VLAN 和 Jumbo Frame

继续增加:

10.4 第四阶段:支持宽数据总线

将 8-bit datapath 扩展为:

重点解决:

10.5 第五阶段:接入真实 PHY 或 FPGA IP

实验方向:

Ethernet MAC RTL 实现路线图


11 Switch ASIC 数据通路

       当学习目标从单个 MAC 扩展到交换芯片时,重点就从“如何收发一帧”变成“如何在多端口、多队列、高吞吐下转发大量 packet”。

一个简化 Switch ASIC pipeline 如下:

RX SerDes
  -> PCS / FEC
  -> MAC RX
  -> Parser
  -> VLAN Classification
  -> L2 Lookup
  -> L3 Lookup
  -> ACL
  -> QoS Classification
  -> Packet Buffer
  -> Queue Manager
  -> Scheduler
  -> Egress Modification
  -> MAC TX
  -> PCS / FEC
  -> TX SerDes

Switch ASIC packet pipeline 图

11.1 Parser

       Parser 用于从 packet 中提取字段,生成后续查表和处理所需的 metadata。

常见解析字段:

11.2 Lookup

       Lookup 决定 packet 如何转发。不同表项可能使用不同硬件结构。

作用 常见实现
MAC Table L2 转发 Hash / CAM
VLAN Table VLAN 成员关系和属性 SRAM
LPM Table IP 路由最长前缀匹配 TCAM / Trie / Algorithmic
ACL Table 访问控制、重定向、统计 TCAM
Neighbor Table 下一跳 MAC 信息 SRAM / Hash
ECMP Table 多路径选择 SRAM + Hash

11.3 ACL 和 QoS

ACL 和 QoS 通常位于 ingress pipeline 中,用于决定 packet 是否允许、是否重定向、进入哪个队列、使用什么优先级。

常见动作包括:


12 Packet Buffer、Queue 与 Scheduler

       Switch ASIC 中最复杂的部分之一是 buffer 和调度。原因是以太网 packet 是突发的,多端口同时输入输出,出口可能发生拥塞。

12.1 Packet Buffer

Packet Buffer 可以采用不同架构:

架构 特点
Input Buffer 实现简单,但容易 HOL blocking
Output Buffer 性能好,但对存储带宽要求极高
Shared Buffer 多端口共享,提高利用率
VOQ Virtual Output Queue,缓解队头阻塞
Cell Buffer 将变长 packet 切成固定大小 cell 管理

       商用交换芯片通常会把 packet 切成 cell,并用 descriptor 记录 packet 的元信息。这样可以简化 buffer 分配和释放。

12.2 Descriptor

Descriptor 通常包含:

12.3 Queue Manager

Queue Manager 负责把 packet descriptor 放入正确队列,并在 packet 发送完成后释放资源。

重点机制:

12.4 Scheduler

Scheduler 决定哪个 queue 可以发送下一个 packet。

常见调度算法:

算法 特点
SP Strict Priority,低延迟但可能饿死低优先级
RR Round Robin,简单公平
WRR Weighted Round Robin,支持带宽比例
DRR Deficit Round Robin,适合变长 packet
WFQ Weighted Fair Queueing,更精细但复杂
Hierarchical Scheduler 多级调度,适合端口/业务/队列层级

Switch ASIC buffer、queue 和 scheduler 架构图


13 流控与拥塞控制硬件

       以太网芯片设计不仅要能转发 packet,还要在拥塞时决定如何暂停、丢弃、标记或调度流量。

13.1 802.3x Pause

Pause Frame 是链路级流控。接收端 buffer 接近满时,可以通知对端暂停发送。

硬件需要支持:

缺点是 Pause 会暂停整个链路,可能导致 Head-of-Line Blocking。

13.2 PFC

PFC 是 Priority-based Flow Control,可以按优先级暂停特定 traffic class,常用于无损以太网。

硬件需要支持:

13.3 ECN

ECN 是显式拥塞通知。与直接丢包不同,ECN 可以在拥塞时标记 packet,让端系统降低发送速率。

硬件需要支持:

13.4 RoCE 相关硬件考虑

在 AI 集群和 HPC 中,RoCE 对以太网芯片提出了更高要求:


14 Egress Pipeline 与 Packet 修改

       Ingress pipeline 决定 packet 如何处理,Egress pipeline 则在 packet 发出前完成最终修改。

常见 egress 操作包括:

       需要注意,任何修改 Ethernet frame body 的操作都会影响 FCS。因此 MAC TX 通常会重新计算 FCS,而不是沿用原来的 FCS。

14.1 Cut-through 与 Store-and-forward

模式 特点
Store-and-forward 收完整包并校验 FCS 后再转发,可靠但延迟较高
Cut-through 收到头部并完成查表后即可开始转发,延迟低但错误包可能被转发
Fragment-free 至少接收前 64 Bytes 后再转发,折中方案

       高性能交换芯片常需要在低延迟和可靠性之间做取舍。


15 管理接口、寄存器与调试

       以太网硬件模块不能只设计 datapath,还需要可配置、可观测、可调试。

15.1 MDIO

MDIO 是 MAC/控制器访问 PHY 寄存器的常见管理接口。

学习重点:

15.2 MAC/Switch 寄存器

常见寄存器包括:

15.3 Loopback

硬件 bring-up 时,loopback 非常重要。

常见 loopback 层次:

Loopback 用途
MAC internal loopback 验证 MAC TX/RX
PHY digital loopback 验证 MAC-PHY 接口
SerDes near-end loopback 验证 PCS/PMA 侧
SerDes far-end loopback 验证链路和对端
External cable loopback 验证完整物理链路

15.4 调试指标

常见调试观察项:

以太网芯片 bring-up 调试层次图


16 验证方法

       以太网硬件验证需要同时覆盖协议正确性、数据完整性、异常场景、吞吐率和拥塞行为。

16.1 MAC 验证

MAC 验证用例包括:

16.2 Packet Stream 验证

重点验证:

16.3 Switch Pipeline 验证

重点验证:

16.4 性能验证

性能指标包括:


17 推荐学习路线

       如果只关注硬件/芯片方向,推荐按下面路线学习:

以太网帧格式
  -> CRC32/FCS
  -> MAC TX/RX
  -> GMII/RGMII/SGMII/XGMII
  -> PHY/PCS/PMA/SerDes
  -> AXI-Stream/FIFO/CDC
  -> Packet Parser
  -> Switch ASIC Pipeline
  -> Buffer/Queue/Scheduler
  -> QoS/PFC/ECN
  -> RoCE/Data Center Ethernet

17.1 第一阶段:MAC 基础

学习内容:

目标:

能够自己设计一个简化 8-bit Ethernet MAC TX/RX,并用仿真验证收发流程。

17.2 第二阶段:接口和 PHY

学习内容:

目标:

能够解释 MAC 到 PHY 之间的数据如何传输,并能在 FPGA 上完成 RGMII 或 SGMII bring-up。

17.3 第三阶段:高速物理层

学习内容:

目标:

能够理解高速以太网端口为什么需要 PCS/FEC/SerDes,以及多 lane 端口如何组合成 100G/400G。

17.4 第四阶段:Switch ASIC Pipeline

学习内容:

目标:

能够画出一个简化交换芯片的 ingress/egress pipeline,并解释 packet 如何从入端口被转发到出端口。

17.5 第五阶段:Buffer、Queue 和 Scheduler

学习内容:

目标:

能够理解交换芯片如何在拥塞场景下缓存、排队、丢包、暂停或标记流量。

17.6 第六阶段:数据中心以太网

学习内容:

目标:

能够理解高端数据中心交换芯片为什么需要大 buffer、低延迟、高速 SerDes、精细 QoS 和拥塞控制。

18 建议的练习项目

       学习以太网硬件最好不要只看协议文档,建议配合 RTL 或 FPGA 项目逐步练习。

18.1 项目一:CRC32 模块

目标:

18.2 项目二:简化 MAC TX

目标:

18.3 项目三:简化 MAC RX

目标:

18.4 项目四:ARP + ICMP Ping FPGA Demo

目标:

18.5 项目五:简化二层交换机

目标:

18.6 项目六:简化 QoS Scheduler

目标:


19 总结

       以太网硬件与芯片设计的学习重点,不是简单背诵 Ethernet frame 格式,而是理解一帧数据在硬件中的完整生命轨迹:

从 MAC RX 收到字节流
  -> 校验 FCS
  -> 形成内部 packet stream
  -> 被 parser 提取字段
  -> 被 lookup 决定转发路径
  -> 被 buffer 暂存
  -> 被 queue manager 管理
  -> 被 scheduler 选中
  -> 被 egress pipeline 修改
  -> 被 MAC TX 重新发送
  -> 经过 PCS/FEC/SerDes 回到物理链路

       对于 RTL/ASIC 工程师,建议优先掌握以下模块:

  1. CRC32/FCS:理解数据完整性校验;
  2. Ethernet MAC TX/RX:理解帧收发的硬件实现;
  3. GMII/RGMII/SGMII/XGMII:理解 MAC 与 PHY/PCS 的接口;
  4. PCS/FEC/SerDes:理解高速以太网物理层;
  5. Packet Stream/FIFO/CDC:理解芯片内部 packet 数据通路;
  6. Parser/Lookup/ACL/QoS:理解交换芯片 pipeline;
  7. Buffer/Queue/Scheduler:理解高性能交换芯片的核心架构;
  8. PFC/ECN/RoCE:理解数据中心无损以太网和拥塞控制。

       当能够从 RTL 角度讲清楚“一帧 Ethernet packet 如何进入芯片、被校验、被解析、被查表、被缓存、被调度并最终从另一个端口发出”时,以太网硬件与芯片设计的主线就已经建立起来了。


20 参考资料

  1. IEEE 802.3 Ethernet Working Group
    https://www.ieee802.org/3/

  2. IEEE 802.1 Working Group
    https://www.ieee802.org/1/

  3. IEEE 802.1Q - Bridges and Bridged Networks
    https://standards.ieee.org/standard/802_1Q-2022.html

  4. IEEE 802.1AX - Link Aggregation
    https://standards.ieee.org/standard/802_1AX-2020.html

  5. IEEE 802.3x Flow Control

  6. IEEE 802.1Qbb Priority-based Flow Control

  7. IEEE 802.1Qaz Enhanced Transmission Selection

  8. AMD/Xilinx Ethernet MAC IP Documentation

  9. Intel FPGA Triple-Speed Ethernet IP Documentation

  10. Intel Ethernet Controller Datasheets

  11. Broadcom Ethernet Switch Architecture Public Materials

  12. Wireshark User’s Guide
    https://www.wireshark.org/docs/wsug_html_chunked/

  13. The TCP/IP Guide - Ethernet
    http://www.tcpipguide.com/free/t_Ethernet.htm

Back to Archive
WeChat QR Code

Scan to connect