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
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
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
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: > 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
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
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
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
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ß
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.
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.
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
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
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.
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.
Dergute W. schrieb: > wichtig - beim Lagenwechsel der Signale in > unmittelbarer Naehe immer Massevias setzen. Moeglichst 2..4 pro > Signalpaar.
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.
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ß
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.
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?
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.