IEEE 802.3 自协商过程中的 **Next Page(下一页)机制** 是通过 **Clause 73** 实现的扩展能力交换机制,允许 PHY 之间在 Base Page(基础页)之后,继续交换更详细的协议信息,比如:
* 支持的速率(如 2.5G、5G、10G 等)
* 是否支持 FEC(前向纠错)
* 是否要求 Master 角色
* 是否支持 EEE(节能以太网)
* 厂商 OUI 和设备能力标识等
---
## 🧠 一、Next Page 的作用
Base Page 只提供了有限的位数(16 bit)用于传输信息,无法完全表达复杂 PHY 的能力,因此:
> **Next Page = Clause 73 中用于能力扩展的多页信息交换机制**
---
## 📄 二、Next Page 格式(Clause 73)
每个 Next Page 是一个 16 bit 的字,被称为 **Message Code Field** 或 **Unformatted Code Field**,具体格式如下:
### ✅ 标准 Next Page 数据格式(16 位)
| Bit 位置 | 字段名 | 含义说明 |
| ------ | -------------------------- | ----------------------- |
| 15 | NP | Next Page 指示位(1 表示后续还有) |
| 14 | ACK2 | 第二阶段握手确认位 |
| 13 | Toggle | 状态翻转位,检测是否有变化 |
| 12\~0 | Message Field 或 Code Field | 取决于此页类型 |
---
## 🧾 三、典型 Page 类型(Message Field)
### 📘 1. **Message Page**
* 指示这是一页功能能力描述
* `Message Field` 中的值会按照标准或私有定义赋值,比如:
* `0001 0000 0000 0001` → 表示设备支持 2.5GBASE-T
* `0001 0000 0000 0010` → 表示支持 5GBASE-T
标准定义了 Message Code 表(详见 IEEE 802.3 Clause 73 表 73-8):
| Code (13位) | 含义 |
| ---------------- | ---------------------------- |
| `0000 0000 0001` | IEEE standard device |
| `0000 0000 0010` | 2.5GBASE-T |
| `0000 0000 0011` | 5GBASE-T |
| `0000 0000 0100` | 10GBASE-T |
| `0000 0000 1001` | Vendor-specific page follows |
---
### 📗 2. **Unformatted Page**
* 用于传输厂商自定义信息(例如 OUI)
* 13 位字段没有特定格式,由厂商自定义解释
* 常用于:
* FEC 支持
* 是否强制为 Master
* OUI 厂商识别码
* 特定 PHY 的调试标志
---
## 🧪 四、Next Page 解析流程(图示)
```text
Base Page (Clause 73)
↓
Next Page #1 —— Message Code: 2.5G 支持
↓
Next Page #2 —— Message Code: 5G 支持
↓
Next Page #3 —— Unformatted Page: FEC = 1
↓
Next Page #4 —— Vendor OUI: 0x00-17-0C
↓
Next Page #5 —— Last Page: NP=0
```
> 协商过程持续交换 Next Pages,直到某页的 `NP=0`,表示结束。
---
## 🧰 五、常见使用情况(举例)
### ✅ 案例 1:支持 2.5G + FEC + 自动协商 + Master 角色
| Page | Code 位 | 说明 |
| ----------- | ------------------ | ----------- |
| Base Page | `NP=1` | 表示还有下一页 |
| Next Page 1 | Message Code: 2.5G | 设备支持 2.5G |
| Next Page 2 | Unformatted: FEC=1 | 支持 FEC |
| Next Page 3 | Unformatted: MS=1 | 请求成为 Master |
| Next Page 4 | NP=0 | 最后一页,结束交换 |
---
## 🔧 六、寄存器操作(Clause 45 MDIO)
### 🔍 常用寄存器地址(MMD = 7)
| 地址偏移 | 名称 | 用途 |
| --------------- | ---------------- | ---------------- |
| `0x0000` | Control | 启用 AN、重启 AN 等 |
| `0x0001` | Status | AN 是否完成,是否支持 NP |
| `0x0005` | AN Advertisement | Base Page 能力 |
| `0x0007` | AN Next Page | 当前要发送的 Next Page |
| `0x0010~0x0012` | Vendor OUI | 厂商自定义 Next Page |
通过写入这些寄存器,可以设置本地端发出的每一页内容。
---
## 📌 七、调试注意点
| 问题 | 可能原因 |
| ------------------ | ----------------------- |
| 对端不响应 Next Page | 对端未启用 Clause 73 或未开启 NP |
| 协商失败但 Base Page 成功 | Next Page 内容冲突或不兼容 |
| Master/Slave 角色未匹配 | MS 位设置不一致,PHY ID 冲突 |
| 对端强制速率 | Clause 73 整体无效,需统一配置方式 |
---
## ✅ 总结
Next Page 是 Clause 73 自动协商的核心扩展机制,作用包括:
* 传输 PHY 的高级能力(如 2.5G/5G/10G)
* 设置主从角色
* 表示是否支持 FEC、EEE
* 携带厂商 OUI、调试标识等
要解析 Next Page 内容,需:
* 查看每页的 `NP`、`Message/Code Field`
* 判断是标准页还是厂商页
* 根据位定义判断含义
---