在裸机环境下,两个 **支持 10GBASE-T** 的 PHY 芯片通过 Clause 73 协议完成自协商(Auto-Negotiation,AN),它们在 **无操作系统控制** 的条件下,完成以下 **完整的点对点数据交互流程**:

 

---

 

## 🎯 目标

 

让两个 PHY 互相通过线缆,自动协商出都支持的最高速率(如 10G / 5G / 2.5G / 1G),并同步启用相关功能(如 FEC、Master/Slave、DFE 等)。

 

---

 

## ⚙️ 术语说明(来自 IEEE 802.3 Clause 73)

 

| 缩写            | 含义                            |

| ------------- | ----------------------------- |

| **MP**        | Message Page(标准能力页)           |

| **NP**        | Next Page(是否还有下一页)            |

| **Toggle**    | 翻转位,每次页内容变化时翻转                |

| **ACK2**      | 确认页同步用                        |

| **Base Page** | 基础能力页(Clause 28 兼容页)          |

| **Next Page** | 后续页,用于传递 10G/5G/2.5G/FEC/厂商能力 |

| **LP**        | Link Partner,对端               |

 

---

 

## 📡 自协商阶段间交互过程

 

以下以两端:**Master(A)** 与 **Slave(B)** 为例,进行详解。

 

---

 

### 🧭 阶段 0:电缆连接 & PHY 通电

 

* 每端 PHY 检测线缆状态。

* 初始化 AN 状态机,准备发出 Base Page。

 

---

 

### 🔄 阶段 1:Base Page 交换(Clause 28)

 

* 双方发送 16-bit Base Ability(如 0x0020 表示 1000Base-KX,全双工)。

* Base Page 带有 `NP = 1` 表示后面还有页。

 

```

Master → 发送 Base Page: 0x3020 (NP=1, Toggle=1)

Slave  → 发送 Base Page: 0x3020 (NP=1, Toggle=1)

```

 

* 双方检测到对方页,返回 ACK。

* Base Page ACK 成功后,转入 Next Page 交换。

 

---

 

### 🔁 阶段 2:Next Page 交换(Clause 73)

 

每一页结构如下:

 

```

Bit 15: NP(1 表示后续还有页)

Bit 14: ACK2

Bit 13: Toggle(每页变化后翻转)

Bit 12: MP(1 = Message Page,0 = Vendor/Unformatted)

Bit 11~0: Payload(内容)

```

 

#### 📨 双方页交互如下:

 

```

Master 发送:0x9804  (MP=1, Message Code = 0x004 = 10G)

Slave  发送:0x9804

 

Master 发送:0x9803  (5G)

Slave  发送:0x9803

 

Master 发送:0x9802  (2.5G)

Slave  发送:0x9802

 

Master 发送:0x8402  (Vendor Page,含FEC或MS偏好)

Slave  发送:0x8402

 

Master 发送:0x0000  (NP=0,最后一页)

Slave  发送:0x0000

```

 

* 每个页都要通过对端返回 ACK2 位进行确认;

* 每一页都检测 Toggle 位变化来判断是否有效;

* NP=0 时表示页交换完毕。

 

---

 

### ✅ 阶段 3:协商结果一致 & 链路建立

 

* 双方比较对端页中能力,确定**最高共同支持速率**(如都支持 10G,则选用 10G)。

* 处理附加协商参数(FEC、Master/Slave、EEE、Training);

* 设置内部状态机为 `link_ready`,进入 Training(训练)阶段。

 

---

 

### 📉 阶段 4:Training & Link Up

 

* 双方启动 **PMA Training(PMA-Tx/Rx 调谐)**

 

  * DFE(判决反馈均衡器)系数交换

  * THP(前馈预加重)系数计算

  * 线对延迟测量

  * 回声/串扰抑制调整

* 完成后启用数据通道,链路正式 up。

 

---

 

## 🧠 总结:裸机自协商全过程的数据交互结构

 

| 阶段           | 交互类型         | 内容                         |

| ------------ | ------------ | -------------------------- |

| Base Page    | Clause 28页交换 | 全双工能力、是否支持下一页              |

| Next Page    | Clause 73页交换 | 10G/5G/2.5G能力、FEC/MS偏好、厂商页 |

| Toggle/ACK2  | 控制字段         | 确保页同步与有效性                  |

| Finalization | 结果确认         | 双方确定最终速率与FEC配置             |

| Training     | 模拟自适应        | 通道补偿、均衡器设置、误码调整            |

 

---

 

## 📌 附加建议

 

* **调试建议**:

 

  * 在裸机下可每隔 Xms 打印 `0x07.0x14/0x18` 读取到的页;

  * 若 Toggle 不变说明对方页没更新;

  * 若 AN 无法完成,注意对端是否缺页、Toggle未翻转、或 ACK2 不匹配。

 

* **抓包调试工具**:

 

  * Marvell/Aquantia PHY 可通过 MDIO trace 或开发工具查看页交互;

  * Clause 73 数据页通常可在 `0x07.0x18` 中每次读取确认。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/911757.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/911757.shtml
英文地址,请注明出处:http://en.pswp.cn/news/911757.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法 day09】LeetCode 232.用栈实现队列 | 225. 用队列实现栈 | 20. 有效的括号 |1047. 删除字符串中的所有相邻重复项

232.用栈实现队列 题目链接 | 文档讲解 |视频讲解 : 链接 1.思路&#xff1a; 使用2个栈去实现队列 先将元素放入栈1中&#xff0c;然后在将栈1中的元素出栈到栈2中&#xff0c;栈2的元素出栈顺序就和队列的出队一样 2.代码&#xff1a; class MyQueue {Stack<Integer…

大模型项目实战:业务场景和解决方案

你的这张图已经涵盖了很多主流的大模型实战项目&#xff0c;非常全面&#xff01;下面我会补充更多市面上常见的AI大模型实战项目&#xff0c;并且简要说明每个项目的核心内容、实现思路和主流技术栈&#xff0c;方便你参考和扩展。 1. 智能问答/知识库系统 核心内容&#xff…

vscode + Jlink 一键调试stm32 单片机程序(windows系统版)

vscode Jlink 一键调试stm32 单片机程序 安装交叉编译工具链安装 x-pack 构建工具安装 JLink 工具gnu-debuger 插件编译一键启动调试 安装交叉编译工具链 stm32采用 交叉编译工具链 arm-none-eabi-xxx, 下载之后解压&#xff0c;压缩包内部结构如下图&#xff1a; 目录下的bi…

Linux线程概念和控制

Linux线程概念 Linux中线程如何理解 线程<执行流<进程 Linux中的线程模拟进程实现&#xff08;线程就是轻量级进程&#xff09; 与独立的进程相比&#xff0c;线程创建和销毁的开销较小&#xff0c;因为它们共享相同的内存空间和资源。 线程是进程内的执行分支&…

服务器出现问题,连接服务器出现3680 并删除数据库出现1192,请查看详细问题(运维)

mysql连接服务器时&#xff0c;出现这个问题&#xff1a;3680 - Failed to create schema directory xxxx (errno: 28 - No space left on device) 第一步&#xff1a;诊断问题类型 检查磁盘空间 运行以下命令&#xff1a; bash df -h # 查看磁盘使用情况 如果输出中 Use% 接…

uniapp:微信小程序胶囊「复制链接」灰色处理

在原生开发的小程序中默认是支持复制的 &#x1f424; 但是在 uniapp 开发的小程序中无法复制&#xff08;体验版与开发版都可以进行复制&#xff0c;但发布后不可&#xff09; 解决方法&#xff1a; methods: {onShareAppMessage: function() {// return custom share data …

差分数组c++

温度波动记录 每天记录温度&#xff0c;支持区间温度调整和单日查询 输入&#xff1a; 第一行&#xff1a;一个整数n表示有n个温度 第二行&#xff1a;n个数表示具体温度 第三行&#xff1a;三个整数&#xff1a;S&#xff0c;e&#xff0c;c&#xff0c;表示从…

Vue.js 列表过滤实现详解(watch和computed实现)

Vue.js 列表过滤实现详解 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthd…

性能测试-jmeter实战4

课程&#xff1a;B站大学 记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师 性能测试-jmeter实战4 jmeter环境搭建1. 安装Java环境&#xff08;必需&#xff09; JMeter环境搭建完整指南1. 安装Java&#xff0…

GPPT(Graph Pre-training and Prompt Tuning)项目复现

GPPT(Graph Pre-training and Prompt Tuning)项目复现 项目概述 GPPT是一种创新的图神经网络预训练与提示调整框架,由MingChen-Sun等人提出。该项目通过将自然语言处理中的提示学习概念引入图领域,解决了图预训练模型在下游任务中的适应性问题。 环境配置 # 创建Python…

anchor 智能合约 IDL 调用

简介&#xff1a;通过 IDL 生成代码 调用 anchor 智能合约。 全网首发 使用 anchor 可以快速开发 solana 上面的智能合约 &#xff0c; 在本案例中我们 先使用 anchor 创建一个只能合约&#xff08; 多个函数方法&#xff09;。 部署到 dev 链上。 通过 anchor 的 IDL 生成 代码…

【Clickhouse系列】事务

目录 1. 标准 ACID 支持场景 (MergeTree 引擎家族) 2. 非 ACID 场景 3. 实验性事务功能 (非云环境) 总结 参考文档 事务性 (ACID) 支持 | ClickHouse Docs ClickHouse ACID 支持核心要点 1. 标准 ACID 支持场景 (MergeTree 引擎家族) • 单分区插入 (原子块) • ✅ 原子性…

在cursor中,配置jdk和maven环境,安装拓展插件

目录 1.手动配置jdk和maven 2.安装java拓展插件 1.手动配置jdk和maven 第一步&#xff1a;按ctrl shift p, 搜索“Preferences: Open User Settings (JSON)” 并回车&#xff0c;打开 settings.json 文件 。然后添加或修改以下内容&#xff1a; "java.home": &qu…

(线性代数最小二乘问题)Normal Equation(正规方程)

Normal Equation&#xff08;正规方程&#xff09; 是线性代数中的一个重要概念&#xff0c;主要用于解决最小二乘问题&#xff08;Least Squares Problem&#xff09;。它通过直接求解一个线性方程组&#xff0c;找到线性回归模型的最优参数&#xff08;如权重或系数&#xff…

在架构设计中平衡动态语言与静态语言部署差异的策略分析

在软件架构设计过程中&#xff0c;语言的选型不仅仅关乎开发效率&#xff0c;更直接影响系统的部署速度、运行性能与维护成本。动态语言&#xff08;如 Python、Node.js&#xff09;部署快、开发灵活&#xff1b;静态语言&#xff08;如 Go、Java、Rust&#xff09;性能强、类型…

我的VSCode中那些插件

前言 最近在研究VUE.JS&#xff0c;而VUE官方推荐使用VSCode作为开发工具&#xff0c;因此最近才开始大量使用这个工具。在使用过程中&#xff0c;总会遇到一些视频博主推荐某某插件&#xff0c;于是我都将其安装在我的VSCode上。这里记录一下&#xff0c;仅供参考。 插件列表…

C# 时间格式日期格式使用合集

一、常用整理 C#时间使用整理,DateTime 使用整理_c#时间格式-CSDN博客 C# 本地时间格式&#xff0c;UTC时间格式&#xff0c;GMT时间格式处理 二、 C#如何获取今天零点的时间 C# 获取周一、周日 三、 C#计算两个时间年份月份差 C#时间点字符串转换为日期&#xff0c;当…

Ribbon负载均衡的具体实现原理

Ribbon 是 Netflix 开源的一款客户端负载均衡工具&#xff0c;广泛应用于微服务架构中&#xff0c;用于在客户端选择目标服务实例。 以下是 Ribbon 负载均衡的具体实现原理&#xff1a; 1. 什么是 Ribbon Ribbon 是一个客户端负载均衡器&#xff0c;负责从服务注册中心&#…

iOS APP上架App Store实践:通过自动化流程和辅助工具高效提

在现代开发流程中&#xff0c;持续集成&#xff08;CI&#xff09;已经成为必不可少的环节。对于iOS应用的开发与发布&#xff0c;持续集成不仅限于构建过程&#xff0c;还应该涵盖从代码提交到版本发布的整个生命周期。然而&#xff0c;由于iOS平台对开发环境的限制&#xff0…

3443. K 次修改后的最大曼哈顿距离

3443. K 次修改后的最大曼哈顿距离 题目链接&#xff1a;3443. K 次修改后的最大曼哈顿距离 代码如下&#xff1a; class Solution { public:int maxDistance(string s, int k) {int res 0;// 定义一个大小为 X&#xff08;88&#xff09;的数组&#xff0c;并初始化为 0int…