MII, RMII, GMII, RGMII: parallelle interfaces naar de PHY · Elektrische interfaces: de MII-familie en AUI’s · Netwerkkaarten en switches · Documentatie · CodingBox
CodingBox Documentatie

MII, RMII, GMII, RGMII: parallelle interfaces naar de PHY

De parallelle mediaonafhankelijke interfaces verbinden een MAC met een koperen PHY-chip over enkele centimeters PCB, in routers, kleine switches, accesspoints, industriële controllers en elk embedded board met een RJ45. Ze bereiken nooit een transceivercage, maar zijn wel het referentiepunt voor alles wat dat doet: SGMII is ‘geserialiseerde GMII’, XGMII is ‘GMII op 10G’ en de PHY in een koperen SFP spreekt er intern een van. Deze pagina beschrijft pinnen, klokken en timing voor MII, RMII, GMII en RGMII, het RGMII-vertragingsprobleem, in-bandstatus, MDIO-beheer en de storingen die elke interface veroorzaakt.

MII (IEEE 802.3 Clause 22)

OnderdeelWaarde
Snelheden10 en 100 Mb/s
Data4-bit TXD[3:0], 4-bit RXD[3:0]
KlokkenTX_CLK en RX_CLK van de PHY: 25 MHz (100M), 2,5 MHz (10M)
BesturingTX_EN, TX_ER, RX_DV, RX_ER, CRS (carrier sense), COL (collision)
BeheerMDC, MDIO (gedeeld)
Aantal signalen16 data/besturing + 2 beheer
Niveaus5 V / 3,3 V TTL
Bereikenkele cm; één PHY per MAC

Komt nog voor op microcontrollers en FPGA's; voor het aantal pinnen vervangen door RMII.

RMII (RMII Consortium spec v1.2)

OnderdeelWaarde
Snelheden10 en 100 Mb/s
Data2-bit TXD[1:0], RXD[1:0]
Klokenkele REF_CLK 50 MHz, gedeeld door MAC en PHY; geleverd door oscillator, MAC of PHY (PHY-clock-outmodus)
BesturingTX_EN, CRS_DV (carrier sense + data valid gemultiplext), RX_ER (optioneel)
Aantal signalen7–9
10 Mb/s-moduselke nibble 10× herhaald bij 50 MHz
Bereikcm

De topologie met referentieklok van 50 MHz is de klassieke RMII-fout: een PHY die een externe klok verwacht terwijl de SoC verwacht dat de PHY die aanstuurt, geeft een dode interface met een gezonde link-LED.

GMII (Clause 35)

OnderdeelWaarde
Snelheden1000 Mb/s; valt terug op MII-signalering voor 10/100
Data8-bit TXD[7:0], RXD[7:0]
KlokkenGTX_CLK 125 MHz van de MAC voor zenden; RX_CLK 125 MHz van de PHY voor ontvangen; TX_CLK van de PHY alleen bij 10/100-terugval
BesturingTX_EN, TX_ER, RX_DV, RX_ER, CRS, COL
Aantal signalen24 + beheer
Niveaus2,5 V (bij veel tolerant voor 3,3 V)
Bereikcm; timingbudget krap bij 125 MHz single-data-rate

Tegenwoordig vooral een on-chip- of FPGA-interface; RGMII nam op boards zijn plaats in.

RGMII (Reduced GMII, HP/Marvell specification v1.3 en v2.0)

OnderdeelWaarde
Snelheden10/100/1000
Data4-bit TXD[3:0] en RXD[3:0] double data rate: lage nibble op stijgende flank, hoge nibble op dalende flank
KlokkenTXC 125 MHz (van MAC), RXC 125 MHz (van PHY); 25 / 2,5 MHz voor 100M / 10M
BesturingTX_CTL (TX_EN op stijgende flank, TX_EN xor TX_ER op dalende), RX_CTL (RX_DV / RX_DV xor RX_ER)
Aantal signalen12
Niveaus2,5 V (v1.3), 1,5 V HSTL of 1,8 V (v2.0-optie); 3,3 V op sommige PHY's
Bereik≤ 10–15 cm traces met gelijke lengte

Het vertragingsprobleem

RGMII vereist dat de klok 1,5–2,0 ns na de dataflanken bij de ontvanger arriveert (setup/hold-venster). Dit kan op drie manieren:

ModusWie voegt de vertraging toeDevice-tree phy-modeOpmerkingen
PCB-vertraging (v1.3)~5 cm extra kloktracergmiiklassiek, kwetsbaar
Interne vertraging in PHY (RGMII-ID, v2.0)PHY voegt 2 ns toe aan TX- en RX-klokkenrgmii-idtegenwoordig het meest gebruikelijk
Interne vertraging in MAC/SoCSoC voegt deze toergmii met register voor vertraging aan MAC-zijde—
GemengdPHY in slechts één richtingrgmii-txid, rgmii-rxidwanneer slechts één zijde dit ondersteunt

De vertraging tweemaal toevoegen (PCB en PHY) of helemaal niet geeft de kenmerkende RGMII-storing: link up bij 1G met CRC-fouten of zonder verkeer, terwijl 100M werkt (100M heeft een periode van 40 ns en verdraagt de skew). Los dit op door het vertragingsregister van de PHY of de phy-mode te wijzigen.

In-bandstatus

Wanneer de interface inactief is, stuurt de PHY link, snelheid en duplex op RXD[3:0], zodat de MAC zijn klokdeler zonder MDIO-leesactie kan herconfigureren: RXD[0] link, RXD[2:1] snelheid (00 = 10, 01 = 100, 10 = 1000), RXD[3] duplex. Sommige MAC's negeren dit en gebruiken MDIO-polling; niet-overeenkomende verwachtingen geven een link die op de PHY up en op de MAC down is.

TBI en RTBI

Ten-Bit Interface: de 8b/10b-gecodeerde 1000BASE-X-symbolen (10 bits bij 125 MHz, RTBI met 5 bits bij DDR) tussen een MAC/PCS en een externe SerDes of optische PHY. Verouderd op boards; zijn seriële opvolger is 1000BASE-X/SGMII (SGMII & seriële gigabit).

Vergelijking

InterfacePinnen (data + ctrl)KlokMax. snelheidSpanningGebruikelijk gebruik
MII1625 MHz van PHY100M3,3/5 VMCU's, legacy
RMII7–950 MHz gedeeld100M3,3 Vembedded SoC + PHY
SMII2–3/poort125 MHz100M3,3 Vmultiport-PHY's (Cisco)
GMII24125 MHz (MAC tx / PHY rx)1G2,5 VFPGA, on-chip
RGMII12125 MHz DDR1G2,5/1,8/1,5 VSoC ↔ PHY op boards
SGMII4 (2 paren)1,25 GBd ingebed1G (10/100 door replicatie)CMLSoC ↔ PHY, SFP-cages

PHY-beheer: MDIO/MDC

OnderdeelClause 22Clause 45
Adressering5-bit PHY-adres, 5-bit register (32 registers)5-bit poort, 5-bit apparaat (PMA/PMD, PCS, PHY XS, DTE XS, AN, fabrikant), 16-bit register
Belangrijke registers0 besturing (reset, snelheid, AN inschakelen, loopback), 1 status (link, AN voltooid), 2–3 PHY-ID (OUI + model), 4 AN-advertentie, 5 linkpartnercapaciteit, 9/10 1000BASE-T-besturing/status, 17+ fabrikant (RGMII-vertraging, LED's)1.x PMA, 3.x PCS, 7.x AN, 30.x/31.x fabrikant
SnelheidMDC ≤ 2,5 MHz (in de praktijk vaak sneller)zelfde
Linux-toolsmii-tool -v eth0, phytool read eth0/1/0, ethtool eth0; driver via phylib, phylinkphytool read eth0/1:1/0

Dit verschilt van insteekmodules, die via I²C en niet MDIO worden beheerd (Tweedraadsinterface). De interne PHY van een koperen SFP is de uitzondering: bij veel ontwerpen zijn zijn MDIO-registers via I²C op een secundair adres door de module bereikbaar. Zo stellen fabrikanten 10/100-terugval en autonegotiatiegedrag in.

Gangbare PHY's en hun interfaces

PHY-familieInterfacesTypisch board
Marvell 88E1111 / 88E1512 / 88E1510GMII, RGMII, SGMII, TBIrouters, koperen SFP-modules (88E1111)
Realtek RTL8211F / RTL8201RGMII / RMIISBC's, consumentenrouters
Microchip KSZ9031 / KSZ8081 / LAN8720RGMII / RMII / RMIIindustrieel, MCU-boards
TI DP83867 / DP83848RGMII, SGMII / MII, RMIIindustrieel
Broadcom BCM54xxxRGMII, SGMII, QSGMIIenterprise-switches (quad/octal-PHY's)
Marvell 88E1543 / 88E1548QSGMII quadaccess-switches met 48 poorten

Storingen per interface

SymptoomInterfaceOorzaak
Nooit link, PHY-ID leest goedRMIIrichting/bron van REF_CLK komt niet overeen
100M werkt, 1G geen verkeer / CRCRGMIIvertragingsmodus (ID) onjuist of dubbel
Link up op PHY-LED, MAC zegt downRGMII/SGMIIin-bandstatus aan één zijde uitgeschakeld, of MDIO-polling ontbreekt
Helft van pakketten verloren bij 1GGMII/RGMIIskew van tracelengte, verkeerd spanningsniveau
PHY niet gevonden op MDIOalleverkeerd PHY-adres (strapping-pinnen), MDIO-pull-up ontbreekt
Snelheid blijft op 10/100alleAN-advertentieregister beperkt, kabel, of phy-mode zonder 1G-ondersteuning

In CodingBox

Niets op deze pagina loopt via de EEPROM van de module, behalve de koperen SFP, waarvan de interne PHY (doorgaans een onderdeel uit de 88E1111-klasse) zich achter dezelfde I²C bevindt die CodingBox leest. Wanneer een koperen module op 1G werkt maar niet op 10/100, ligt het antwoord in de configuratie van die PHY en de SGMII/1000BASE-X-modus van de host, niet in de identiteitsbytes van A0h (Koper en DAC, SGMII & seriële gigabit).


Vindt u een onjuistheid of fout in dit materiaal? Selecteer het betreffende fragment en druk op Ctrl+Enter om .