MII, RMII, GMII, RGMII: parallele Schnittstellen zum PHY · Elektrische Schnittstellen: MII-Familie und AUIs · Netzwerkkarten und Switches · Dokumentation · CodingBox
CodingBox Dokumentation

MII, RMII, GMII, RGMII: parallele Schnittstellen zum PHY

Die parallelen medienunabhängigen Schnittstellen verbinden einen MAC mit einem Kupfer-PHY-Chip über eine Handvoll Zentimeter Leiterplatte — in Routern, kleinen Switches, Access Points, Industriesteuerungen und jedem eingebetteten Board mit einem RJ45. Sie erreichen nie einen Transceiver-Käfig, sind aber der Bezugspunkt für alles, was es dorthin schafft: SGMII ist „serialisiertes GMII“, XGMII ist „GMII bei 10G“, und der PHY in einem Kupfer-SFP spricht intern eine von ihnen. Diese Seite nennt Pins, Takte und Timing für MII, RMII, GMII und RGMII, das RGMII-Delay-Problem, In-Band-Status, MDIO-Management und die Fehler, die jede Schnittstelle erzeugt.

MII (IEEE 802.3 Clause 22)

PunktWert
Raten10 und 100 Mb/s
Daten4-Bit TXD[3:0], 4-Bit RXD[3:0]
TakteTX_CLK und RX_CLK vom PHY: 25 MHz (100M), 2,5 MHz (10M)
SteuerungTX_EN, TX_ER, RX_DV, RX_ER, CRS (Carrier Sense), COL (Kollision)
ManagementMDC, MDIO (gemeinsam genutzt)
Signalanzahl16 Daten/Steuerung + 2 Management
Pegel5 V/3,3 V TTL
Reichweitewenige cm; ein PHY pro MAC

Noch auf Mikrocontrollern und FPGAs zu finden; bei der Pin-Anzahl von RMII abgelöst.

RMII (RMII-Consortium-Spezifikation v1.2)

PunktWert
Raten10 und 100 Mb/s
Daten2-Bit TXD[1:0], RXD[1:0]
Taktein einzelner REF_CLK 50 MHz, gemeinsam genutzt von MAC und PHY; erzeugt von einem Oszillator, dem MAC oder dem PHY (Modus PHY-Clock-Out)
SteuerungTX_EN, CRS_DV (Carrier Sense + Data Valid gemultiplext), RX_ER (optional)
Signalanzahl7–9
10-Mb/s-Modusjedes Nibble wird bei 50 MHz 10× wiederholt
Reichweitecm

Die 50-MHz-Referenztakt-Topologie ist der klassische RMII-Bug: Erwartet ein PHY einen externen Takt, während das SoC erwartet, dass der PHY ihn liefert, ergibt das eine tote Schnittstelle bei gesunder Link-LED.

GMII (Clause 35)

PunktWert
Raten1000 Mb/s; fällt für 10/100 auf MII-Signalisierung zurück
Daten8-Bit TXD[7:0], RXD[7:0]
TakteGTX_CLK 125 MHz vom MAC für Transmit; RX_CLK 125 MHz vom PHY für Receive; TX_CLK vom PHY nur im 10/100-Fallback verwendet
SteuerungTX_EN, TX_ER, RX_DV, RX_ER, CRS, COL
Signalanzahl24 + Management
Pegel2,5 V (bei vielen 3,3-V-tolerant)
Reichweitecm; Timing-Budget bei 125 MHz Single-Data-Rate eng

Heute meist eine On-Chip- oder FPGA-Schnittstelle; auf Boards hat RGMII ihren Platz eingenommen.

RGMII (Reduced GMII, HP/Marvell-Spezifikation v1.3 und v2.0)

PunktWert
Raten10/100/1000
Daten4-Bit TXD[3:0] und RXD[3:0] Double Data Rate: niedriges Nibble bei steigender Flanke, hohes Nibble bei fallender Flanke
TakteTXC 125 MHz (vom MAC), RXC 125 MHz (vom PHY); 25/2,5 MHz für 100M/10M
SteuerungTX_CTL (TX_EN bei steigender Flanke, TX_EN XOR TX_ER bei fallender), RX_CTL (RX_DV / RX_DV XOR RX_ER)
Signalanzahl12
Pegel2,5 V (v1.3), 1,5 V HSTL oder 1,8 V (Option v2.0); bei manchen PHYs 3,3 V
Reichweite≤ 10–15 cm längenangepasste Leiterbahnen

Das Delay-Problem

RGMII verlangt, dass der Takt beim Empfänger 1,5–2,0 ns nach den Datenflanken eintrifft (Setup-/Hold-Fenster). Drei Wege, das zu erreichen:

ModusWer fügt das Delay hinzuDevice-Tree phy-modeHinweise
PCB-Delay (v1.3)~5 cm zusätzliche Taktleiterbahnrgmiiklassisch, fragil
Internes Delay im PHY (RGMII-ID, v2.0)PHY fügt 2 ns auf TX- und RX-Takt hinzurgmii-idheute am häufigsten
Internes Delay in MAC/SoCSoC fügt es hinzurgmii mit Delay-Register auf der MAC-Seite—
GemischtPHY nur in einer Richtungrgmii-txid, rgmii-rxidwenn nur eine Seite es unterstützt

Das Delay zweimal hinzuzufügen (PCB und PHY) oder gar nicht erzeugt den typischen RGMII-Fehler: Link bei 1G oben mit CRC-Fehlern oder ohne Traffic, während 100M funktioniert (100M hat eine Periode von 40 ns und toleriert den Versatz). Beheben durch Ändern des Delay-Registers im PHY oder des phy-mode.

In-Band-Status

Im Leerlauf legt der PHY Link, Speed und Duplex auf RXD[3:0], damit der MAC seinen Taktteiler ohne MDIO-Lesevorgang neu konfigurieren kann: RXD[0] Link, RXD[2:1] Speed (00 = 10, 01 = 100, 10 = 1000), RXD[3] Duplex. Manche MACs ignorieren das und verlassen sich auf MDIO-Polling; widersprüchliche Erwartungen ergeben einen Link, der am PHY oben und am MAC unten ist.

TBI und RTBI

Ten-Bit Interface: die 8b/10b-kodierten 1000BASE-X-Symbole (10 Bit bei 125 MHz, RTBI im DDR-Modus mit 5 Bit) zwischen einem MAC/PCS und einem externen SerDes oder optischen PHY. Auf Boards veraltet; sein serieller Nachfolger ist 1000BASE-X/SGMII (SGMII & serielles Gigabit).

Vergleich

SchnittstellePins (Daten + Steuerung)TaktMax. RateSpannungTypische Nutzung
MII1625 MHz vom PHY100M3,3/5 VMCUs, Legacy
RMII7–950 MHz gemeinsam genutzt100M3,3 Veingebettetes SoC + PHY
SMII2–3/Port125 MHz100M3,3 VMultiport-PHYs (Cisco)
GMII24125 MHz (MAC Tx / PHY Rx)1G2,5 VFPGA, On-Chip
RGMII12125 MHz DDR1G2,5/1,8/1,5 VSoC ↔ PHY auf Boards
SGMII4 (2 Paare)1,25 GBd eingebettet1G (10/100 per Replikation)CMLSoC ↔ PHY, SFP-Käfige

PHY-Management: MDIO/MDC

PunktClause 22Clause 45
Adressierung5-Bit-PHY-Adresse, 5-Bit-Register (32 Register)5-Bit-Port, 5-Bit-Device (PMA/PMD, PCS, PHY XS, DTE XS, AN, Vendor), 16-Bit-Register
Schlüsselregister0 Control (Reset, Speed, AN-Enable, Loopback), 1 Status (Link, AN Complete), 2–3 PHY-ID (OUI + Modell), 4 AN-Advertisement, 5 Link-Partner-Ability, 9/10 1000BASE-T Control/Status, 17+ Vendor (RGMII-Delay, LEDs)1.x PMA, 3.x PCS, 7.x AN, 30.x/31.x Vendor
GeschwindigkeitMDC ≤ 2,5 MHz (in der Praxis oft schneller)gleich
Linux-Toolsmii-tool -v eth0, phytool read eth0/1/0, ethtool eth0; Treiber über phylib, phylinkphytool read eth0/1:1/0

Im Gegensatz dazu werden steckbare Module über I²C verwaltet, nicht über MDIO (Zweidraht-Schnittstelle). Der interne PHY eines Kupfer-SFP ist die Ausnahme: Seine MDIO-Register sind bei vielen Designs über das I²C des Moduls unter einer sekundären Adresse erreichbar, worüber Hersteller das 10/100-Fallback- und Autonegotiation-Verhalten einstellen.

Gängige PHYs und ihre Schnittstellen

PHY-FamilieSchnittstellenTypisches Board
Marvell 88E1111 / 88E1512 / 88E1510GMII, RGMII, SGMII, TBIRouter, Kupfer-SFP-Module (88E1111)
Realtek RTL8211F / RTL8201RGMII / RMIISBCs, Consumer-Router
Microchip KSZ9031 / KSZ8081 / LAN8720RGMII / RMII / RMIIindustriell, MCU-Boards
TI DP83867 / DP83848RGMII, SGMII / MII, RMIIindustriell
Broadcom BCM54xxxRGMII, SGMII, QSGMIIEnterprise-Switches (Quad-/Oktal-PHYs)
Marvell 88E1543 / 88E1548QSGMII Quad48-Port-Access-Switches

Fehler nach Schnittstelle

SymptomSchnittstelleUrsache
Nie ein Link, PHY-ID liest korrektRMIIREF_CLK-Richtung/-Quelle stimmt nicht
100M funktioniert, bei 1G kein Traffic/CRCRGMIIDelay-Modus (ID) falsch oder doppelt
Link an der PHY-LED oben, MAC meldet untenRGMII/SGMIIIn-Band-Status auf einer Seite deaktiviert, oder MDIO-Polling fehlt
Hälfte der Pakete bei 1G verlorenGMII/RGMIIVersatz durch Leiterbahnlänge, falscher Spannungspegel
PHY nicht auf MDIO gefundenbeliebigfalsche PHY-Adresse (Strapping-Pins), MDIO-Pull-up fehlt
Geschwindigkeit bei 10/100 hängengebliebenbeliebigAN-Advertisement-Register eingeschränkt, Kabel, oder phy-mode ohne 1G-Unterstützung

In CodingBox

Nichts auf dieser Seite läuft über das EEPROM des Moduls — außer dem Kupfer-SFP, dessen interner PHY (typischerweise ein Bauteil der 88E1111-Klasse) hinter demselben I²C sitzt, das CodingBox liest. Funktioniert ein Kupfermodul bei 1G, aber nicht bei 10/100, liegt die Antwort in der Konfiguration dieses PHY und im SGMII-/1000BASE-X-Modus des Hosts, nicht in den A0h-Identitätsbytes (Kupfer-Ethernet & DAC, SGMII & serielles Gigabit).


Wenn Sie in diesem Artikel eine Ungenauigkeit oder einen Fehler finden, markieren Sie die betreffende Stelle und drücken Sie Ctrl+Enter, um .