PHY 管理簡介

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