PHY Interface
管理 PHY Interface 可使用 MII 或 MDIO(Management Data Input/Output)
1 2
| 10G 以下 MII (IEEE802.3 Clause22) 10G 以上 MDIO (IEEE802.3 Clause45)
|
1G 以下的 PHY 較簡單,MAC 透過 MII 管理 PHY 的 REG (只有標準的 32 個)
10G 以上的 PHY 較複雜,MAC 透過 MDIO 管理 PHY 的 REG
10G 以上的 PHY 還會分層,對應各自的 MMD Device(MDIOManageableDevice)
需要使用 Clause45 的 MDIO 來管理
MAC 屬於 data link,PHY 屬於 Physcial
以下是 MII 基本的 32 個 REG
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| 00 : Control 01 : Status 02,03 : PHYIdentifier 04 : Auto-NegotiationAdvertisement 05 : Auto-NegotiationLinkPartnerBasePageAbility 06 : Auto-NegotiationExpansion 07 : Auto-NegotiationNextPageTransmit 08 : Auto-NegotiationLinkPartnerReceivedNextPage 09 : MASTER-SLAVEControlRegister 10 : MASTER-SLAVEStatusRegister
11 : PSEControlregister 12 : PSEStatusregister 13 : MMDAccessControlRegister 14 : MMDAccessAddressDataRegister 15 : ExtendedStatus 16,31 : VendorSpecific
|
MDIO REG
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 00 : Reserve 01 : PMA/PMD 02 : WIS 03 : PCS 04 : PHYXS 05 : DTEXS 06 : TC 07 : Auto-Negotiation 08 : SeparatedPMA1(40G/100G PMA/PMD 分開) 09 : SeparatedPMA2 10 : SeparatedPMA3 11 : SeparatedPMA4 12,28 : Reserve 29 : Clause22 Expand 30,31 : VendorSpecific
|
管理 PHY 的 Frame
MAC 可管理 PHY 的 REG,所以需要送出特殊的訊號給 PHY
如果是使用 MII interface 的 frame 如下
1 2 3 4 5 6 7 8 9 10 11 12
| PRE ST OP PHYAD REGAD TA DATA Read : 1...1 01 10 AAAAA(5bit) RRRRR(5bit) Z0 DDDD DDDD DDDD DDDD(16bit = 2Byte) Write : 1...1 01 01 AAAAA(5bit) RRRRR(5bit) 10 DDDD DDDD DDDD DDDD(16bit = 2Byte)
1. PRE 即 Preamble,MAC 存取 PHY REG 之前,連續發送 32 個 1 用於和PHY進行同步 2. ST 即 Startofframe,是 2 個固定的 bit 01 3. OP 即 OperationCode,R/W 4. PHYAD 即 PHYaddress ,5 個 bit 的 PHY Addr。PHY Addr 由 HW 連接決定 5. REGAD 即 RegisterAddress,PHY 內的 REG Addr 也是 5 個 bit 6. TA 即 TurnAround。Read H->0,Write 1->0 7. DATA 為 16bit
|
如果是使用 MDIO interface 的 frame 如下
使用 MDIO 時,需要知道 port Addr、MMD Addr 和 REG Addr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| PRE ST OP PRTAD DEVAD TA ADDRESS / DATA Addr OP : 1...1 00 00 PPPPP EEEEE 10 AAAA AAAA AAAA AAAA Read : 1...1 00 11 PPPPP EEEEE Z0 DDDD DDDD DDDD DDDD Read-INCR : 1...1 00 10 PPPPP EEEEE Z0 DDDD DDDD DDDD DDDD Write : 1...1 00 01 PPPPP EEEEE 10 DDDD DDDD DDDD DDDD
MDIO 要存取一個 REG 需要兩步驟
1. 傳送 REG Addr 2. 才能進行 R/W
和 MII 差異如下
1. ST 即 Startofframe,MDIO 皆為 00 2. PRTAD 即 PortAddress,與 MII 的 PHYaddress 一致 3. DEVAD 即 DeviceAddress,MMD 設備的 5bit ID 對應 MII REGAD DEVAD 就是如 PMA/PMD、PCS、XGXS PHY、AUTO-NEG
|
實際 Frame 格式如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| 32 2 2 5 5 2 16 PRE | ST1 ST0 | CP1 CP0 | P4 P3 P2 P1 P1 | R4 R3 R2 R1 R0 | T A | D | DDDDDDDDDDDDDDD | IDLE 2b'00 2b'00 PRTAD[4:0] DEVAD[4:0] | REG ADDR[14:0] v IEEEE bit(0:IEEE 1:VendorSpecific) Ex: PRTAD DEVAD ADDRESS DATA mdio_write(0x03, 0x01, 0xca,0x10, 0x01, 0x8f);
PRE | ST1 ST0 | CP1 CP0 | P4 P3 P2 P1 P1 | R4 R3 R2 R1 R0 | T A | D | val 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 pos 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
D D D D D D D D D D D D D D D | IDLE val 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 pos 17 18 19 | 20 21 22 23 | 24 25 26 27 | 28 29 30 31
ST (0x00) CP (0x00) PRTAD (0x03) DEVAD (0x01) TA (0x10) A/D (0xCA10)
|
參考
MII
MDIO