在裸機環境下,兩個?**支持?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`?中每次讀取確認。
?