MII, RMII, GMII, RGMII: interfejsy równoległe do PHY · Interfejsy elektryczne: rodzina MII i AUI · Karty sieciowe i przełączniki · Dokumentacja · CodingBox
CodingBox Dokumentacja

MII, RMII, GMII, RGMII: interfejsy równoległe do PHY

Równoległe interfejsy niezależne od medium łączą MAC z miedzianym układem PHY na dystansie kilku centymetrów ścieżek PCB — wewnątrz routerów, małych przełączników, punktów dostępowych, sterowników przemysłowych i każdej płytki wbudowanej z RJ45. Nigdy nie docierają do klatki transceivera, ale są punktem odniesienia dla wszystkiego, co do niej dociera: SGMII to „GMII zserializowane”, XGMII to „GMII przy 10G”, a PHY wewnątrz miedzianego SFP wewnętrznie posługuje się jednym z nich. Ta strona podaje piny, zegary i wymagania czasowe dla MII, RMII, GMII i RGMII, problem opóźnienia RGMII, status in-band, zarządzanie MDIO oraz usterki, jakie generuje każdy interfejs.

MII (IEEE 802.3 Clause 22)

PozycjaWartość
Szybkości10 i 100 Mb/s
Dane4-bitowe TXD[3:0], 4-bitowe RXD[3:0]
ZegaryTX_CLK i RX_CLK od PHY: 25 MHz (100M), 2,5 MHz (10M)
SterowanieTX_EN, TX_ER, RX_DV, RX_ER, CRS (wykrywanie nośnej), COL (kolizja)
ZarządzanieMDC, MDIO (współdzielone)
Liczba sygnałów16 dane/sterowanie + 2 zarządzanie
Poziomy5 V / 3,3 V TTL
Zasięgkilka cm; jeden PHY na MAC

Wciąż spotykany w mikrokontrolerach i FPGA; wyparty przez RMII ze względu na liczbę pinów.

RMII (specyfikacja RMII Consortium v1.2)

PozycjaWartość
Szybkości10 i 100 Mb/s
Dane2-bitowe TXD[1:0], RXD[1:0]
Zegarpojedynczy REF_CLK 50 MHz, współdzielony przez MAC i PHY; źródłem jest oscylator, MAC albo PHY (tryb PHY-clock-out)
SterowanieTX_EN, CRS_DV (wykrywanie nośnej + ważność danych multipleksowane), RX_ER (opcjonalny)
Liczba sygnałów7–9
Tryb 10 Mb/skażdy nibble powielony 10× przy 50 MHz
Zasięgcm

Topologia zegara odniesienia 50 MHz to klasyczny błąd RMII: PHY oczekujący zegara zewnętrznego, podczas gdy SoC oczekuje, że to PHY będzie go generować, daje martwy interfejs przy zdrowej diodzie łącza.

GMII (Clause 35)

PozycjaWartość
Szybkości1000 Mb/s; przy 10/100 wraca do sygnalizacji MII
Dane8-bitowe TXD[7:0], RXD[7:0]
ZegaryGTX_CLK 125 MHz od MAC dla nadawania; RX_CLK 125 MHz od PHY dla odbioru; TX_CLK od PHY używany tylko przy fallbacku do 10/100
SterowanieTX_EN, TX_ER, RX_DV, RX_ER, CRS, COL
Liczba sygnałów24 + zarządzanie
Poziomy2,5 V (wiele toleruje 3,3 V)
Zasięgcm; budżet czasowy napięty przy 125 MHz single-data-rate

Dziś to głównie interfejs on-chip albo FPGA; na płytkach jego miejsce zajęło RGMII.

RGMII (Reduced GMII, specyfikacja HP/Marvell v1.3 i v2.0)

PozycjaWartość
Szybkości10/100/1000
Dane4-bitowe TXD[3:0] i RXD[3:0] double data rate: młodszy nibble na zboczu narastającym, starszy na opadającym
ZegaryTXC 125 MHz (od MAC), RXC 125 MHz (od PHY); 25 / 2,5 MHz dla 100M / 10M
SterowanieTX_CTL (TX_EN na zboczu narastającym, TX_EN xor TX_ER na opadającym), RX_CTL (RX_DV / RX_DV xor RX_ER)
Liczba sygnałów12
Poziomy2,5 V (v1.3), 1,5 V HSTL albo 1,8 V (opcja v2.0); 3,3 V na niektórych PHY
Zasięg≤ 10–15 cm, ścieżki o dopasowanej długości

Problem opóźnienia

RGMII wymaga, żeby zegar docierał do odbiornika 1,5–2,0 ns po zboczach danych (okno setup/hold). Trzy sposoby, żeby to uzyskać:

TrybKto dodaje opóźnieniephy-mode w device treeUwagi
Opóźnienie na PCB (v1.3)~5 cm dodatkowej ścieżki zegarargmiiklasyczne, kruche
Opóźnienie wewnętrzne w PHY (RGMII-ID, v2.0)PHY dodaje 2 ns na zegarach TX i RXrgmii-iddziś najczęstsze
Opóźnienie wewnętrzne w MAC/SoCdodaje je SoCrgmii z rejestrem opóźnienia po stronie MAC—
MieszanePHY tylko w jednym kierunkurgmii-txid, rgmii-rxidgdy tylko jedna strona to obsługuje

Dodanie opóźnienia dwukrotnie (PCB i PHY) albo wcale daje charakterystyczną usterkę RGMII: łącze aktywne przy 1G z błędami CRC albo bez ruchu, podczas gdy 100M działa (100M ma okres 40 ns i toleruje przesunięcie). Napraw, zmieniając rejestr opóźnienia PHY albo phy-mode.

Status in-band

W stanie bezczynności PHY wystawia stan łącza, prędkość i dupleks na RXD[3:0], dzięki czemu MAC może przekonfigurować swój dzielnik zegara bez odczytu MDIO: RXD[0] łącze, RXD[2:1] prędkość (00 = 10, 01 = 100, 10 = 1000), RXD[3] dupleks. Niektóre MAC to ignorują i polegają na odpytywaniu MDIO; niezgodne oczekiwania dają łącze aktywne na PHY, a nieaktywne na MAC.

TBI i RTBI

Ten-Bit Interface (interfejs dziesięciobitowy): zakodowane w 8b/10b symbole 1000BASE-X (10 bitów przy 125 MHz, RTBI w DDR z 5 bitami) między MAC/PCS a zewnętrznym SerDes albo optycznym PHY. Przestarzały na płytkach; jego szeregowym następcą jest 1000BASE-X/SGMII (SGMII i szeregowy gigabit).

Porównanie

InterfejsPiny (dane + sterowanie)ZegarMaks. szybkośćNapięcieTypowe zastosowanie
MII1625 MHz od PHY100M3,3/5 VMCU, starsze rozwiązania
RMII7–950 MHz współdzielony100M3,3 Vwbudowany SoC + PHY
SMII2–3/port125 MHz100M3,3 VPHY wieloportowe (Cisco)
GMII24125 MHz (MAC tx / PHY rx)1G2,5 VFPGA, on-chip
RGMII12125 MHz DDR1G2,5/1,8/1,5 VSoC ↔ PHY na płytkach
SGMII4 (2 pary)1,25 GBd wbudowany1G (10/100 przez powielanie)CMLSoC ↔ PHY, klatki SFP

Zarządzanie PHY: MDIO/MDC

PozycjaClause 22Clause 45
Adresowanie5-bitowy adres PHY, 5-bitowy rejestr (32 rejestry)5-bitowy port, 5-bitowe urządzenie (PMA/PMD, PCS, PHY XS, DTE XS, AN, vendor), 16-bitowy rejestr
Kluczowe rejestry0 sterowanie (reset, prędkość, włączenie AN, loopback), 1 status (łącze, AN zakończone), 2–3 PHY ID (OUI + model), 4 zgłoszenie AN, 5 zdolności partnera łącza, 9/10 sterowanie/status 1000BASE-T, 17+ producenta (opóźnienie RGMII, diody LED)1.x PMA, 3.x PCS, 7.x AN, 30.x/31.x producenta
PrędkośćMDC ≤ 2,5 MHz (w praktyce często szybciej)tak samo
Narzędzia Linuksamii-tool -v eth0, phytool read eth0/1/0, ethtool eth0; sterownik przez phylib, phylinkphytool read eth0/1:1/0

W przeciwieństwie do modułów wpinanych, którymi zarządza się przez I²C, a nie MDIO (Interfejs dwuprzewodowy). Wyjątkiem jest wewnętrzny PHY miedzianego SFP: jego rejestry MDIO są w wielu konstrukcjach dostępne przez I²C modułu pod drugim adresem, i tak właśnie producenci ustawiają zachowanie fallbacku 10/100 i autonegocjacji.

Popularne PHY i ich interfejsy

Rodzina PHYInterfejsyTypowa płytka
Marvell 88E1111 / 88E1512 / 88E1510GMII, RGMII, SGMII, TBIroutery, miedziane moduły SFP (88E1111)
Realtek RTL8211F / RTL8201RGMII / RMIISBC, routery konsumenckie
Microchip KSZ9031 / KSZ8081 / LAN8720RGMII / RMII / RMIIprzemysłowe, płytki MCU
TI DP83867 / DP83848RGMII, SGMII / MII, RMIIprzemysłowe
Broadcom BCM54xxxRGMII, SGMII, QSGMIIprzełączniki enterprise (poczwórne/ośmiokrotne PHY)
Marvell 88E1543 / 88E1548QSGMII poczwórny48-portowe przełączniki dostępowe

Usterki według interfejsu

ObjawInterfejsPrzyczyna
Łącze nigdy się nie podnosi, PHY ID odczytuje się poprawnieRMIIniezgodność kierunku/źródła REF_CLK
100M działa, 1G brak ruchu / CRCRGMIIzły albo podwójny tryb opóźnienia (ID)
Dioda łącza na PHY aktywna, MAC pokazuje brak łączaRGMII/SGMIIstatus in-band wyłączony po jednej stronie albo brak odpytywania MDIO
Połowa pakietów gubiona przy 1GGMII/RGMIIprzesunięcie długości ścieżek, zły poziom napięcia
PHY niewidoczny na MDIOdowolnyzły adres PHY (piny strapujące), brak pull-upu na MDIO
Prędkość zablokowana na 10/100dowolnyograniczony rejestr zgłoszenia AN, kabel albo phy-mode bez obsługi 1G

W CodingBox

Nic na tej stronie nie przechodzi przez EEPROM modułu — z wyjątkiem miedzianego SFP, którego wewnętrzny PHY (zwykle układ klasy 88E1111) siedzi za tym samym I²C, które odczytuje CodingBox. Gdy miedziany moduł działa przy 1G, ale nie przy 10/100, odpowiedź leży w konfiguracji tego PHY i trybie SGMII/1000BASE-X hosta, a nie w bajtach danych identyfikacyjnych A0h (Miedziany Ethernet i DAC, SGMII i szeregowy gigabit).


Jeśli znajdziesz nieścisłość lub błąd w tym materiale, zaznacz odpowiedni fragment i naciśnij Ctrl+Enter, aby .