Forum: Platinen Gigabit Ethernet Layout


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe für einen Raspberry Pi Compute Module 4 ein Adapterboard 
gemacht, um damit Ethernet zu nutzen. Ich habe extra ein Breakout Board 
gemacht, das nur Ethernet enthält, weil ich schauen wollte, wie heikel 
das mit dem Layout ist.
Der Stecker vom Raspi ist ziemlich blöd zum Löten von Hand, aber es 
geht.
Ich habe dann mein Board getestet und die Ethernetverbindung 
funktioniert, aber die Autonegotiation schaltet immer auf 100MBits um. 
Wenn ich das original Raspberry Pi IO Board benutze, geht aber 1GBit.

Folgendes habe ich beim Layout des Ethernet beachtet:

a) Länge der Traces: müssen length matched sein. Ich habe +/- 1mm 
dieselbe Länge.
b) differentielle Impedanz: sollte 100 Ohm sein, ich habe laut meinen 
Berechnungen etwas mehr (120 Ohm) weil der Buildup im Pool etwas 
ungünstig ist - mit 120 Ohm sollte die Anpassung aber immer noch rund 
-20 dB sein.
b) Die Länge der Einzelnen Leitungen der differentiellen Paare ist auch 
gematcht, sodass die Plus- und die Minusleitung auch gleich lang sind, 
auch ca. +/- 1mm.

Meiner Meinung nach müsste das Layout +/- OK sein, wenn auch sicher ein 
wenig gewagt. Wenn ich es mit dem Raspberry IO Board vergleiche, dann 
sieht man da auch wilde Kurven, um die Länge anzupassen.

Ich verwende diesen Ethernetstecker mit eingebauten Übertragern:

https://www.molex.com/content/dam/molex/molex-dot-com/products/automated/en-us/salesdrawingpdf/936/93627/936273601_sd.pdf

Pin 2 habe ich offen gelassen (siehe Screenprint), Pin 1 ist mit Masse 
verbunden.

Was könnte der Grund sein, dass Autoneg auf 100MB schaltet?
kann man da irgendwie etwas diagnostizieren?

Grüsse
Tobias

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ist das PCB von dir nur 2lagig?

Gruss
WK

von Tobias P. (hubertus)


Lesenswert?

ne, sind 4 Lagen, aber im Screenprint habe ich nur Top und Bottom 
angezeigt.
Die inneren Lagen sind Masse bzw. VCC.

Ach ja: die Länge der Leitungen ist ca. 40mm.

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Moin,

Dann wuerde ich mit der Masse auf'm Aussenlayer mehr Abstand zu den 
Leitungen halten und - wichtig - beim Lagenwechsel der Signale in 
unmittelbarer Naehe immer Massevias setzen. Moeglichst 2..4 pro 
Signalpaar.
Und bei den Vias der Signale die Massefreistellung auf den Masselagen 
ordentlich gross waehlen.

Gruss
WK

von Frank K. (fchk)


Angehängte Dateien:

Lesenswert?

Ich sehe da jetzt auf die Schnelle nichts.

Anbei mein Design. Das funktioniert einwandfrei, davon gibts etwa 100 
aufgebaute Boards. LAN-Buchse ist diese hier:

https://www.we-online.com/components/products/datasheet/7499111446.pdf

fchk

von Tobias P. (hubertus)


Lesenswert?

Frank K. schrieb:
> Ich sehe da jetzt auf die Schnelle nichts.
>
> Anbei mein Design. Das funktioniert einwandfrei, davon gibts etwa 100
> aufgebaute Boards. LAN-Buchse ist diese hier:
>
> https://www.we-online.com/components/products/datasheet/7499111446.pdf
>
> fchk

danke, dein Layout sieht sehr hübsch aus!
ich bin wirklich irritiert, warum meines nicht funktioniert. OK 
vielleicht sind die Mäander zu gewagt. Andererseits hätte ich erwartet, 
dass es nicht so kritisch sein kann, die Frequenz ist ja doch nur 125 
MHz.
Lohnt es sich, allenfalls noch eine andere Buchse zu testen? eigentlich 
sollten die keinen grossen Einfluss haben, die Induktivität und das 
Übersetzungsverhältnis sind ja eigentlich immer gleich.


Edit:
ich sehe grad einen kleinen Unterschied: bei deinem Layout hast du "VCC" 
über den Kondensator auf Masse gelegt. Ich hingegen habe VCC offen 
gelassen und "GND" auf Masse gehängt. Vielleicht kann dies eine 
Auswirkung haben?

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Moin,

Tobias P. schrieb:
> ich bin wirklich irritiert, warum meines nicht funktioniert. OK
> vielleicht sind die Mäander zu gewagt.

Die Mäander, um die Lanes untereinander gleich lange zu kriegen halte 
ich so ausm Bauch raus eher fuer ueberfluessig. Ein Lane-deskewing 
sollte ein PHY schon selber hinkriegen. Das fuer die +/- innerhalb eines 
Paars sollte reichen.
Wie ich schon schrub: Guck die die GND-Vias beim Lagenwechsel der 
Signale an. Die fehlen bei dir. Die sind wichtig.
Wie sehen denn deine Zwischenlagen aus? Nimmst du dann auch mal die +Vcc 
Plane als Referenz zu den Signalleitungen? Das waere auch nicht gut. 
Zumindest nicht ohne Vias und eine Handvoll 10..100n.

Gruss
WK

von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

Mit den Innenlagen eingeblendet sieht es halt so aus, dann erkennt man 
nicht so viel.

Der Stackup ist so:

Top -> Signal
Inner 1 -> GND Plane
Inner 2 -> VCC Plane (3.3V)
Bottom -> Signal

von Frank K. (fchk)


Lesenswert?

Tobias P. schrieb:

> Top -> Signal
> Inner 1 -> GND Plane
> Inner 2 -> VCC Plane (3.3V)
> Bottom -> Signal

Das heißt Deine Signale referenzieren Vcc anstelle GND. Kann man machen, 
braucht dann aber extra Stitching Capacitors. Bei mir ist unter den 
Differential Pairs immer GND.

Mit den Planes unter der Buchse wirst Du durch keinen EMV-Test kommen. 
Die Schirmung der Buchse darf auch nicht auf Signal Ground (GND), 
sondern muss auf Frame Ground (FG) oder PE. GND und PE nicht direkt 
miteinander verbinden, sondern über einen C oder einen R||C, z.B. 100n 
oder 100k||100n.

Und Du wirst es gemerkt haben: Die Pinbelegung des CM4 ist für Buchsen 
mit Tab down gedacht, nicht für Buchsen mit Tab up. Deine Wahl der 
Buchse war also doof.

fchk

von Michael K. (mab)


Lesenswert?

Tobias P. schrieb:

Hallo,

> a) Länge der Traces: müssen length matched sein. Ich habe +/- 1mm
> dieselbe Länge.
Relativ Sinnfrei; Die Pärchen können untereinander bis zu 50mm 
Abweichung haben. In der Praxis heisst das meistens, das ein Matching 
nicht notwendig ist.

> b) differentielle Impedanz: sollte 100 Ohm sein, ich habe laut meinen
> Berechnungen etwas mehr (120 Ohm) weil der Buildup im Pool etwas
> ungünstig ist - mit 120 Ohm sollte die Anpassung aber immer noch rund
> -20 dB sein.
Die 100r Diff sind einzuhalten, wenn es der Pool (was ich nicht glaube) 
hergibt -> Hersteller wechseln.

> b) Die Länge der Einzelnen Leitungen der differentiellen Paare ist auch
> gematcht, sodass die Plus- und die Minusleitung auch gleich lang sind,
> auch ca. +/- 1mm.
Anzustreben sind +/- 0.15mm.

Das Alles steht übrigens im CM4 Handbuch, Kapitel 2.2. Ethernet.
Warum wird das einfach ignoriert?

Frank K. schrieb:
> Und Du wirst es gemerkt haben: Die Pinbelegung des CM4 ist für Buchsen
> mit Tab down gedacht, nicht für Buchsen mit Tab up.
RICHTIG! Dadurch entsteht das ganze gewurste mit den Vias, welche auch 
noch falsch angewendet werden.

Gruß

von Jakob L. (jakob)


Lesenswert?

Ganz blöde Frage aber hast du genau überprüft ob alle Signale 
tatsächlich verbunden sind? Fertigungsfehler bei Platinen und kalte 
Lötstellen können durchaus vorkommen, besonders wenn der Stecker schon 
"ziemlich blöd zum Löten" ist kann da auch ein Fehler passieren. 100 
MBit braucht nur 2 Adernpaare, Gigabit braucht alle 4, ein einfacher 
Kontaktfehler könnte also den Fallback auf 100 MBit erklären.

Michael K. schrieb:
>> b) Die Länge der Einzelnen Leitungen der differentiellen Paare ist auch
>> gematcht, sodass die Plus- und die Minusleitung auch gleich lang sind,
>> auch ca. +/- 1mm.
> Anzustreben sind +/- 0.15mm.

Ist das wirklich so wichtig? Bei 100 MHz hat man eine Wellenlänge von 3m 
in Vakuum, mit Verkürzungsfaktor vielleicht 2m. 1mm ist also gerade mal 
ca. 1/2000 der Wellenlänge, kann mir nicht so recht vorstellen dass das 
schon zum Problem wird.

von Tobias P. (hubertus)


Lesenswert?

Jakob L. schrieb:
> Ist das wirklich so wichtig? Bei 100 MHz hat man eine Wellenlänge von 3m
> in Vakuum, mit Verkürzungsfaktor vielleicht 2m. 1mm ist also gerade mal
> ca. 1/2000 der Wellenlänge, kann mir nicht so recht vorstellen dass das
> schon zum Problem wird.

da zweifle ich eben auch stark dran, zumal moderne PHYs den Skew 
elektronisch kompensieren können.
Ausserdem bezweifle ich, dass ein billiges Ethernetkabel diese 
Anforderungen auch so genau einhalten kann.

von Joe (ujoe)


Lesenswert?

Frank K. schrieb:
> Das funktioniert einwandfrei,

Würde auch ein derartiges Design empfehlen, gerade aufgrund der 
Schutzschaltung (außer die ist in deiner Buchse, das hab ich jetzt nicht 
geprüft).

Siehe Seite 8, einfach funktionierendes übernehmen:

https://files.seeedstudio.com/wiki/102110497/RapberryPi-CM4-Dual-GbE-Carrier-Board-V1.1_SCH.pdf

Oder natürlich am besten direkt vom Hersteller übernehmen, für das CM4 
Carrier Board gibt es dort nicht nur ein Datenblatt mit Schaltplan 
sondern sogar die Kicad Dateien.

https://www.raspberrypi.com/products/compute-module-4-io-board/

Was für ein OS und Device Tree/config hast du aktiv?

: Bearbeitet durch User
von Michael K. (mab)


Lesenswert?

Tobias P. schrieb:

Hallo,

> da zweifle ich eben auch stark dran, zumal moderne PHYs den Skew
> elektronisch kompensieren können.
> Ausserdem bezweifle ich, dass ein billiges Ethernetkabel diese
> Anforderungen auch so genau einhalten kann.

Ich zitiere mal aus dem Pdf des CM4 Herstellers:

'The differential Ethernet signals should be routed as 100Ω differential 
pairs, with suitable clearances. Length matching between pairs should be 
better than 50mm, so in the typical case no length matching is required. 
However the signals within a pair need to be length matched, ideally to 
better than 0.15mm.'

Nun stellt sich die Frage: Denke ich nun eine halbe Ewigkeit darüber 
nach wie weit ich diese Vorgaben strecken kann oder setze ich mich mal 1 
bis 2 Stunden hin und erfülle die Vorgaben?
Man kann sich das Leben auch sinnlos schwer machen.

Gruß

PS: Die ESD Dioden fehlen auch noch

von Tobias P. (hubertus)


Lesenswert?

Michael K. schrieb:
> Nun stellt sich die Frage: Denke ich nun eine halbe Ewigkeit darüber
> nach wie weit ich diese Vorgaben strecken kann oder setze ich mich mal 1
> bis 2 Stunden hin und erfülle die Vorgaben?
> Man kann sich das Leben auch sinnlos schwer machen.

das habe ich ja - meine differentiellen Paare sind gleich lang.

von Tobias P. (hubertus)


Lesenswert?

Nachtrag:

ich weiss nicht, was genau das Problem war: mit der Lupe hat es so 
ausgesehen, als sei jeder Pin ordentlich gelötet gewesen.
Ich habe jetzt etwa zum 3. Mal alle Pins nochmal ordentlich mit 
Flussmittel benetzt und nachgelötet, und JETZT funktioniert es:
1
[   10.620946] bcmgenet fd580000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off

offenbar war irgend eine der Lötstellen nicht in Ordnung. Der Pinabstand 
ist aber so klein, dass ich mit meinen Prüfspitzen da nicht so recht ran 
komme und das deshalb nicht gut ausklingeln kann.

von Gustl B. (-gb-)


Lesenswert?

Dergute W. schrieb:
> wichtig - beim Lagenwechsel der Signale in
> unmittelbarer Naehe immer Massevias setzen. Moeglichst 2..4 pro
> Signalpaar.

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Michael K. schrieb:
> Die Pärchen können untereinander bis zu 50mm
> Abweichung haben.

Und dazu kommt es sehr leicht. Auf 100m Gesamtkabellänge genügt dafür 
schon eine geringfügig unterschiedliche Verseilung der einzelnen 
Adernpaare.

Früher war eine exakt gleiche Verseilung der Paare auch nicht gewünscht, 
da dadurch das Übersprechen (NEXT) erhöht würde. Dies lässt sich heute 
nur noch durch Abschirmung der Paare vermeiden.

von Michael K. (mab)


Lesenswert?

Gustl B. schrieb:

Hallo,

>> wichtig - beim Lagenwechsel der Signale in
>> unmittelbarer Naehe immer Massevias setzen. Moeglichst 2..4 pro
>> Signalpaar.

Das verstehe ich nicht, Massevias (auch Stitchingvias genannt) verbinden 
doch minimum 2 Masselagen. In dem Beispiel hier geht es um eine 4 Lagen 
LP mit einer Masselage, was genau sollen denn diese Vias dann verbinden?

Gruß

von Tobias P. (hubertus)


Lesenswert?

Michael K. schrieb:
> Das verstehe ich nicht, Massevias (auch Stitchingvias genannt) verbinden
> doch minimum 2 Masselagen. In dem Beispiel hier geht es um eine 4 Lagen
> LP mit einer Masselage, was genau sollen denn diese Vias dann verbinden?

sehe ich auch so.
Wichtig ist halt, dass VCC AC-mässig gut mit GND verbunden ist.
Das passiert einerseits über die Entkopplungskondensatoren, und 
andererseits weil die VCC-Fläche auch einen hübschen Plattenkondensator 
gegenüber GND bildet.
Ich habe noch die Bottom-Seite mit Kupfer gefüllt, das wäre der einzige 
Ort, wo die Stitching-Vias Sinn machen würden, aber wenn man die 
Massefüllung auf der Rückseite weglässt, machen sie wirklich keinen 
Sinn.

von Manuel H. (manu77)


Lesenswert?

Frank K. schrieb:
> Ich sehe da jetzt auf die Schnelle nichts.
>
> Anbei mein Design. Das funktioniert einwandfrei, davon gibts etwa 100
> aufgebaute Boards. LAN-Buchse ist diese hier:
>
> https://www.we-online.com/components/products/datasheet/7499111446.pdf
>
> fchk

Frank K. schrieb:
> Anbei mein Design. Das funktioniert einwandfrei, davon gibts etwa 100
> aufgebaute Boards.

Wieso du die GND unter den Diff-Pairs einschneidest erschließt sich mir 
nicht. Man liest überall, dass man die GND unter den Diffs nicht teilen 
soll. Was übersehe ich?

von Frank K. (fchk)


Lesenswert?

Manuel H. schrieb:

> Frank K. schrieb:
>> Anbei mein Design. Das funktioniert einwandfrei, davon gibts etwa 100
>> aufgebaute Boards.
>
> Wieso du die GND unter den Diff-Pairs einschneidest erschließt sich mir
> nicht. Man liest überall, dass man die GND unter den Diffs nicht teilen
> soll. Was übersehe ich?

Den Lagenaufbau. Ist aber auch nicht einfach zu sehen.

Der Großteil der Diffpairs ist auf Top. Der Layer darunter ist 
durchgehend GND. Der Layer drunter ist großteils 3.3/5V. Da ein kleiner 
Teil eines Diffpairs auf Bottom laufen muss, habe ich hier die VCC-Plane 
geteilt und GND unter das Stück und den Connector gelegt. Das ist das 
was Du als Trennstelle siehst. Die Referenzplane unter und neben jedem 
Diffpair ist aber tatsächlich durchgehend GND. Damit ist alles ok.

fchk

von Manuel H. (manu77)


Angehängte Dateien:

Lesenswert?

Frank K. schrieb:
> Den Lagenaufbau. Ist aber auch nicht einfach zu sehen.
>
> Der Großteil der Diffpairs ist auf Top. Der Layer darunter ist
> durchgehend GND. Der Layer drunter ist großteils 3.3/5V. Da ein kleiner
> Teil eines Diffpairs auf Bottom laufen muss, habe ich hier die VCC-Plane
> geteilt und GND unter das Stück und den Connector gelegt. Das ist das
> was Du als Trennstelle siehst. Die Referenzplane unter und neben jedem
> Diffpair ist aber tatsächlich durchgehend GND. Damit ist alles ok.
>
> fchk

Ah, jetzt wird nen Kreis draus. Danke für deine schnelle Antwort.
War das Teil im Labor? Hab mich noch gewundert, wieso du überhaupt den 
Weg über die VIAs gemacht hast und nicht außen lang bist, so wie hier.

von Frank K. (fchk)


Lesenswert?

Manuel H. schrieb:

> Hab mich noch gewundert, wieso du überhaupt den
> Weg über die VIAs gemacht hast und nicht außen lang bist, so wie hier.

Stimmt, bei dieser Version hätte ich das machen können. Bei der 
Vorversion war mir da was anderes im Wege.

fchk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.