Dieser Post ist Teil der EthTrcv-Serie und baut auf dem AUTOSAR Grundlagen-Post auf. Er richtet sich an Software-Entwickler die täglich EthTrcv konfigurieren, aber noch nie genau wissen wollten was dabei auf PCB-Ebene passiert.
Wer einen ARXML-Parameter wie EthTrcvBusIdx auf ETHTRCV_BUS_TYPE_RGMII setzt,
trifft eine Hardware-Entscheidung — auch wenn er das vielleicht nicht so empfindet.
Dieser Post macht sichtbar was hinter diesen Parametern steckt.
Der PHY-Chip als Mittler
Ein Ethernet PHY-Chip sitzt exakt in der Mitte zwischen zwei Welten:
SoC / Microcontroller Kabel
┌─────────────────┐ ┌────────┐
│ Ethernet MAC │◄── MII/RMII/RGMII ─►│ PHY │◄── MDI ──► Twisted Pair
│ │◄── MDIO ────────── ─►│ Chip │
└─────────────────┘ └────────┘Auf der linken Seite: digitale Interfaces zum MAC im SoC. Auf der rechten Seite: analoge Schnittstelle zum Kabel. In der Mitte: alles was die Konvertierung ausmacht — Encoding, Scrambling, Signal-Shaping.
EthTrcv_Init initialisiert diesen Chip.
Was genau dabei passiert, erklärt dieser Post von links nach rechts.
Die MAC-seitigen Interfaces (MII-Familie)
Die MAC-seitige Schnittstelle zwischen SoC und PHY ist standardisiert. IEEE 802.3 definiert mehrere Varianten — alle unter dem Oberbegriff MII-Familie.
MII — Media Independent Interface
Das Original aus IEEE 802.3u (1995). Heute in neuen Designs kaum noch anzutreffen, aber zum Verständnis der Nachfolger unverzichtbar.
Signale: TX_CLK, TXD[3:0], TX_EN, TX_ER
RX_CLK, RXD[3:0], RX_DV, RX_ER, CRS, COL
Takt: 25 MHz (100 Mbit/s) / 2,5 MHz (10 Mbit/s)
Datenbreite: 4 Bit parallel (Nibble)
Leitungen: ~16 Datenleitungen + Steuer-/TaktleitungenWarum es kaum noch gebaut wird: 16+ Leitungen auf dem PCB, hoher Routing-Aufwand, und bei modernen SoCs sind die GPIO-Pins zu wertvoll.
RMII — Reduced MII
Reduzierte Variante mit nur 9 Leitungen statt 16+. Typisch bei kleineren Mikrocontrollern wo GPIO-Pins knapp sind.
Signale: REF_CLK (50 MHz, vom PHY oder extern), TXD[1:0], TX_EN
RXD[1:0], CRS_DV, RX_ER
Takt: 50 MHz fix (ein Takt für beide Richtungen)
Datenbreite: 2 Bit parallel
Besonderheit: MAC und PHY teilen sich einen gemeinsamen 50 MHz ReferenztaktDer 50 MHz REF_CLK muss entweder vom PHY geliefert oder extern eingespeist werden. Wer den Takt vergisst oder falsch verdrahtet, hat kein Link und fragt sich warum. |
RGMII — Reduced Gigabit MII
Der heute dominierende Standard für Automotive Ethernet mit 1 Gbit/s und für viele moderne 100 Mbit/s Designs.
Signale: TXC, TXD[3:0], TX_CTL
RXC, RXD[3:0], RX_CTL
Takt: 125 MHz (1 Gbit/s) / 25 MHz (100 Mbit/s) / 2,5 MHz (10 Mbit/s)
Datenbreite: 4 Bit, DDR (Double Data Rate — Daten auf steigender UND fallender Flanke)
Leitungen: 12 Signale statt MII's 16+DDR bei 125 MHz liefert effektiv 8 Bit pro Taktzyklus → 1 Gbit/s. Das klingt elegant, hat aber einen Haken: RGMII Timing Delays.
Die Spezifikation schreibt vor dass Daten um 1,5–2 ns gegenüber dem Takt verzögert sein müssen. Diese Verzögerung kann im PHY, im MAC oder über PCB-Trace-Längen realisiert werden — und ist ein häufiger Grund für sporadische Übertragungsfehler wenn das PCB-Layout nicht stimmt.
In AUTOSAR sieht man das nicht direkt, aber der EthTrcvBusIdx-Parameter wählt unter anderem
ob interne PHY-Delays aktiviert werden oder ob der MAC-Treiber sie übernimmt.
SGMII / SerDes
Für Szenarien wo PHY und MAC weiter auseinanderliegen — typisch bei Switch-Chips die mehrere PHYs aggregieren.
Signale: TX+ / TX- (differenziell), RX+ / RX- (differenziell)
Takt: 1,25 GBaud seriell (8b/10b kodiert → 1 Gbit/s Nutzlast)
Leitungen: 4 (zwei differentielle Paare)
Vorteil: Längere PCB-Strecken möglich, weniger LeitungenBei EthSwt-Konfigurationen begegnet man SGMII häufiger als bei einfachen EthTrcv-Setups.
Entscheidungshilfe: Welches Interface wofür?
| Interface | Max. Geschwindigkeit | Leitungen | Typischer Einsatz | Automotive-Relevanz |
|---|---|---|---|---|
MII | 100 Mbit/s | 16+ | Legacy | Kaum noch neu |
RMII | 100 Mbit/s | 9 | Kleine MCUs | Mittel (Steuergeräte) |
RGMII | 1 Gbit/s | 12 | Application-SoCs, 1000BASE-T1 | Hoch (ADAS, Gateway) |
SGMII | 1 Gbit/s | 4 | Switch-Aggregation | Hoch bei Zonal Architecture |
Der MDIO-Bus
MDIO (Management Data Input/Output) ist der Steuerbus zum PHY.
Über ihn läuft EthTrcv_Init — nicht über MII/RGMII.
SoC
│
├── MDC (Management Data Clock) ────────────► PHY 1
└── MDIO (Management Data I/O, bidirektional) ─► PHY 1
► PHY 2 (gleiche Leitung)
► PHY 3 (gleiche Leitung)Elektrische Spezifikation
Spannung: typisch 3,3 V LVCMOS (oder 1,8 V bei modernen SoCs)
MDC-Frequenz: max. 2,5 MHz laut IEEE, viele PHYs tolerieren bis 25 MHz
Pull-up: MDIO benötigt einen Pull-up-Widerstand (typisch 1,5 kΩ – 4,7 kΩ)
Bus-Last: bis zu 32 PHY-Adressen pro MDIO-Bus möglichDer Pull-up ist kritisch: fehlt er, bleibt MDIO dauerhaft low und alle Register-Lesevorgänge
liefern 0xFF oder 0x00 — was genauso aussieht wie ein falsch konfigurierter PHY.
Clause 22 vs. Clause 45
IEEE 802.3 definiert zwei Frame-Formate für MDIO:
Clause 22 (klassisch):
ST | OP | PHYAD[4:0] | REGAD[4:0] | TA | DATA[15:0]
2 2 5 5 2 16 Bit32 PHY-Adressen, 32 Register pro PHY. Reicht für einfache PHYs.
Clause 45 (erweitert):
ST | OP | PRTAD[4:0] | DEVAD[5:0] | TA | ADDR/DATA[15:0]
2 2 5 5 2 16 BitClause 45 führt einen DEVAD (Device Address) ein — dadurch werden 32 Adressräume à 65536 Register möglich.
Pflicht für 1000BASE-T1-PHYs und alle PHYs mit Safety- oder MACsec-Features.
Manche SoC-MAC-Treiber unterstützen nur Clause 22 nativ. Clause 45 auf solchen Systemen erfordert einen Workaround via „Clause 22 Preamble Suppression" — ein häufiger Fallstrick bei neueren PHY-Chips. |
Timing und MDC-Frequenz
MDC ───┐ ┌──┐ ┌──┐ ┌──┐ ┌──
└──┘ └──┘ └──┘ └──┘
MDIO ════╪═════╪═════╪════
Setup↑ ↑HoldSetup-Zeit (MDIO vor steigender MDC-Flanke stabil): min. 10 ns
Hold-Zeit (MDIO nach steigender MDC-Flanke stabil): min. 10 ns
Bei zu hoher MDC-Frequenz oder langen PCB-Traces werden diese Zeiten verletzt. Symptom: Register-Reads liefern korrumpierte Werte, PHY reagiert nicht auf Init.
Mehrere PHYs an einem MDIO-Bus
Jeder PHY hat eine 5-Bit-PHY-Adresse (0–31), häufig per Hardware-Pins konfiguriert.
Im ARXML entspricht das dem Parameter EthTrcvPhyAddress.
SoC-MDIO-Bus
├── PHY @ Adresse 1 (PHYAD-Pins: 00001)
├── PHY @ Adresse 2 (PHYAD-Pins: 00010)
└── PHY @ Adresse 3 (PHYAD-Pins: 00011)Adresskonflikte (zwei PHYs mit gleicher Adresse) sind ein klassischer Hardware-Bug: beide PHYs antworten gleichzeitig, der Bus wird korrumpiert, alle MDIO-Reads liefern Unsinn.
Die leitungsseitigen Interfaces
Auf der anderen Seite des PHY-Chips: der Anschluss ans Kabel.
MDI — Medium Dependent Interface
MDI ist der physikalische Anschluss des PHY ans Übertragungsmedium. Der Name sagt: ab hier ist alles mediumabhängig — der PHY-Standard definiert die elektrischen Eigenschaften des Signals auf der Leitung.
100BASE-T1 — Das automotive Single-Pair Interface
Klassisches 100BASE-TX verwendet zwei verdrillte Aderpaare (TX und RX getrennt). 100BASE-T1 kommt mit einem einzigen verdrillten Aderpaar aus.
100BASE-TX: ──[TX+/TX-]── ──[RX+/RX-]── (2 Paare, ≈ RJ45 Stecker)
100BASE-T1: ──[T1+/T1-]── (1 Paar, differenziell, bidirektional)Bidirektionaler Betrieb auf einem Paar ist möglich weil das Signal Echo-Cancellation im PHY verwendet — der Chip subtrahiert das eigene Sendesignal um das Empfangssignal zu isolieren.
Kabelspezifikation:
Impedanz: 100 Ω (±15 %)
Maximale Länge: 15 m (Standard), bis 40 m mit geringerer Datenrate
Kabeltyp: Unshielded Twisted Pair (UTP), automotive-zugelassen
AWG: typisch AWG 22–241000BASE-T1
Gleiche Philosophie wie 100BASE-T1, aber mit 1 Gbit/s über ein Single-Pair-Kabel. Verwendet PAM3 mit höherer Symbolrate, kürzere maximale Kabellänge (ca. 15 m). In Fahrzeugen zunehmend für Backbone-Verbindungen (Zonal Controller → Domain Controller).
Steckverbinder im Fahrzeug
Das Kabel muss irgendwo angeschlossen werden. In der Automotive-Welt gibt es dafür etablierte Steckverbinder-Standards:
| Steckverbinder | Einsatz | Relevanz für Ethernet |
|---|---|---|
FAKRA | Hochfrequenz-Koaxial, klassisch für Antennen und Kameras | Nicht für Twisted-Pair Ethernet — häufige Verwechslung |
HSD (High Speed Data) | 4-poliger Steckverbinder, für Datenübertragung im Fahrzeug | Wird für 100BASE-T1 und USB verwendet, verbreitet |
MATEnet | TE Connectivity Standard speziell für Automotive Ethernet | Optimiert für 100BASE-T1 / 1000BASE-T1, niedrige Einfügedämpfung |
H-MTD | Kleiner, für enge Einbausituationen | Zunehmend für 1000BASE-T1 in kompakten Steuergeräten |
Der Steckverbinder beeinflusst die Signal-Integrität. Ein HSD-Stecker mit falscher Impedanzanpassung kann bei 1000BASE-T1 genauso gut Link-Probleme verursachen wie ein defektes Kabel. |
EMV-Aspekte
Software-Entwickler denken selten an EMV — Hardware-Entwickler immer. Die Schnittstelle liegt im Fahrzeug nahe an anderen Störquellen (Zündanlage, DC/DC-Wandler).
Common-Mode-Filter (CMF): Direkt am MDI-Anschluss verbaut. Unterdrückt Gleichtaktstörungen auf der Leitung. Falscher oder fehlender CMF → PHY hat erhöhtes Rauschen → sporadische Bitfehler.
ESD-Schutz: Transient Voltage Suppressor (TVS) oder ähnliche Bauelemente am Stecker. Schützt den PHY vor elektrostatischen Entladungen beim Stecken/Ziehen. In der Serienapplikation Pflicht — in Entwicklungsboards oft weggelassen.
PCB-Layout: Die differentielle Leitungsführung (T1+ / T1-) muss mit exakt gleicher Länge geroutet werden (Differential-Pair Matching). Längenunterschied > 150 mil → messbare Signal-Qualitätsverluste.
Energieversorgung und Spannungsebenen
Ein moderner Automotive PHY-Chip hat typischerweise mehrere Versorgungsdomänen:
VDD_IO 3,3 V — I/O-Pegel für MII/MDIO-Signale zur MAC/SoC
VDD_Core 1,8 V — Interne Core-Logik
VDD_PLL 1,8 V — PLL für Takterzeugung (oft separates Rail)
VDD_MDI 3,3 V — Analoge Seite, LeitungsankopplungPower Sequencing
Die Reihenfolge beim Einschalten ist im PHY-Datenblatt spezifiziert und muss eingehalten werden. Typische Sequenz:
1. VDD_Core einschalten
2. VDD_IO einschalten (≥ 100 µs nach Core)
3. VDD_MDI einschalten
4. Hardware-Reset (RST_N) deasserten
5. Warten auf PHY-Bootzeit (typisch 1–5 ms)
6. MDIO-Zugriff möglich → EthTrcv_Init kann startenVerletzung der Sequenz → PHY bootet in undefiniertem Zustand.
Symptom: EthTrcv_Init kehrt zurück, aber der Link kommt nie hoch.
WakeUp-Pin und INH-Pin
Zwei Pins die Software-Entwickler kennen sollten, auch wenn sie sie nie direkt ansteuern:
WakeUp-Pin (WU):
Eingang am PHY für einen externen WakeUp-Impuls.
Wenn das Steuergerät im Sleep ist und Ethernet-WakeUp unterstützt,
kann ein spezifischer Impuls auf diesem Pin das Steuergerät aufwecken.
AUTOSAR-seitig wird das in EthTrcv_CheckWakeup ausgewertet.
INH-Pin (Inhibit): Ausgang des PHY, der den Spannungsregler des Steuergeräts steuert. Wenn der PHY in Sleep geht, zieht er INH low → Spannungsregler schaltet ab → Steuergerät schläft. Wenn WakeUp erkannt wird, setzt der PHY INH aktiv → Spannungsregler startet → System wacht auf.
WakeUp-Impuls auf Leitung
→ PHY erkennt Impuls
→ PHY setzt INH aktiv
→ Spannungsregler startet
→ SoC bootet
→ EcuM ruft EthTrcv_CheckWakeup auf
→ AUTOSAR WakeUp-Validierung läuft durchVom Bit zum Signal — ein Frame durch den PHY
Zum Abschluss der vollständige Weg eines Ethernet-Frames durch den PHY-Chip, von der MAC-Übergabe bis zum differenziellen Signal auf der Leitung.
Schritt 1: MAC übergibt Frame via RGMII
SoC-MAC übergibt: TXD[3:0] = Nibble, TX_CTL = 1 (valid), TXC = 125 MHz
PHY empfängt 4 Bit pro Taktflanke (DDR) → 8 Bit pro Taktzyklus
Bei 125 MHz: 8 Bit × 125.000.000 = 1.000.000.000 Bit/s = 1 Gbit/sSchritt 2: PCS — Physical Coding Sublayer
Der PCS bereitet die Bits für die Übertragung vor:
Scrambling — Bitfolge pseudozufällig verwürfeln, verhindert Dauerpegel (DC-Balance)
Encoding — Bei 100BASE-T1: keine 8b/10b, stattdessen direkte PAM3-Abbildung mit Trellis-Code
Schritt 3: PMA — Physical Medium Attachment
Der PMA konvertiert die codierten Bits in physikalische Symbole:
PAM3 bei 100BASE-T1:
Drei Spannungspegel: +1 (positiv), 0 (null), -1 (negativ)
Symbolrate: 66,67 MBaud (66,67 Millionen Symbole/Sekunde)
Jedes Symbol: trägt ~1,58 Bit Information (log₂(3))
Nutzlast: 100 Mbit/s nach OverheadDrei Pegel statt zwei — das ist der Grund warum 100 Mbit/s über ein Single-Pair-Kabel mit nur 66 MBaud Symbolrate möglich ist.
Schritt 4: Echo-Cancellation
Da Senden und Empfangen auf demselben Leitungspaar stattfinden, muss der PHY das eigene Sendesignal vom Empfangssignal subtrahieren. Das passiert digital im PHY mit einem adaptiven Filter — und ist der Grund warum 100BASE-T1 PHYs deutlich komplexer sind als klassische PHYs.
Schritt 5: Signal auf der Leitung
Differenzielles Signal: T1+ und T1- mit 100 Ω Impedanz
Amplitude: typisch ±1 V (differenziell)
Frequenzbereich: DC bis ~66 MHz (Hauptenergie)Latenz durch den PHY
RGMII → PCS → PMA → Kabel: typisch 150–500 ns (abhängig von PHY-Chip und Implementierung)
Kabel (15 m @ ~0,6c): ca. 80 ns
Empfangsseite (Kabel → MAC): nochmal 150–500 nsGesamtlatenz für einen Frame: ca. 500 ns – 1,5 µs. Relevant für gPTP (Issue #14) wo Sub-Mikrosekunden-Genauigkeit gefordert ist.
Zusammenfassung
| Interface | Kernaussage für Software-Entwickler |
|---|---|
MII/RMII/RGMII | Wahl beeinflusst |
MDIO | Pull-up vergessen → alle Reads liefern Unsinn; Clause 45 für moderne PHYs prüfen |
MDI / 100BASE-T1 | Single-Pair, bidirektional durch Echo-Cancellation; Kabelimpedanz und Stecker sind Signal-Qualitätsfaktoren |
EMV | Common-Mode-Filter am Stecker ist Pflicht — fehlt er, zeigen sich Probleme erst im Fahrzeug-EMV-Test |
Power Sequencing | Falsche Reihenfolge → PHY antwortet nicht auf Init, kein offensichtlicher Fehlercode |
WakeUp/INH-Pin | Diese Pins steuern den Spannungsregler des Steuergeräts — AUTOSAR EcuM muss korrekt konfiguriert sein |
Weiter in der EthTrcv-Serie: EthTrcv Teil 1 — Grundlagen & Einordnung