Forum: Mikrocontroller und Digitale Elektronik Probleme mit USB Signalqualität auf PCB


von Florian G. (suffix90)


Lesenswert?

Hallo zusammen,

für eine Steuereinheit im Rackformat habe ich eine "Haupt"-Signalplatine 
designt, die alle Anschlüsse zur Aussenwelt vereint und übereinander 
anordnet, darunter auch eine USB B-Buchse. Da ich den USB aber nur im 
Gerät weiterverteile (via Hub an div. Controller, Sensoren etc.) habe 
ich auf der anderen Seite der Signalplatine (Europakartenformat) eine 
USB A Buchse platziert, sodass hier ganz normal wie am PC der Hub 
angeschlossen werden kann.

Leider habe ich beim Pinout statt Buchse Stecker als Referenz genommen 
und so die einzelnen Signale vertauscht.. Zum Debuggen habe ich daher 
einfach mal mit normaler Litze die beiden USB-Ports miteinander 
verbunden (an die Lötstifte auf der Unterseite der Platine gelötet) und 
die bestehenden Tracks auf beiden Seiten der Platine direkt hinter den 
Ports durchtrennt.

Das Problem: Das einzige USB-Gerät, was ich so zum Laufen bringe ist 
eine alte, wohl USB 1.1, Microsoft-Maus, sämtliche 2.0 Geräte werden vom 
PC nicht erkannt, Windows bringt die Meldung "USB Device could not be 
recognized".
Daher habe ich meine einzelnen Drähte durch ein Stück gekauftes 
USB-Kabel ersetzt, also geschirmt, twisted pair etc. - Leider immer noch 
dasselbe Problem.

Hier meine 2 Fragen:
- Wieso funktioniert meine Bastellösung nicht (das würde für den Moment 
reichen). Ist USB bzgl der Signalqualität so heikel, dass an den 
Lötstellen von den Ports zum Kabel so viel verloren geht, eingekoppelt 
wird, wie auch immer?

- Habe ich eine Chance die ursprüngliche Lösung bei richtiger Verbindung 
in einer zukünftigen Version des PCB's zum Laufen zu bringen? Ich kenne 
die Empfehlungen zum PCB-Design in der offiziellen USB-Spec. Dort wird 
davon abgeraten, D+ und D- über einen so langen Weg wie bei mir (quer 
über eine Europakarte, also fast 160mm) zu führen, die restlichen 
Empfehlungen habe ich mehr oder weniger umgesetzt.

Danke für eure Hilfe!

von Frank K. (fchk)


Lesenswert?

Nimm mal Google oder ein gutes Buch und lies Dich zum Thema 
Wellenwiderstand schlau. Deine Leiterbahnen sind eben keine 0 Ohm 
Brücken, sondern haben Widerstand, Induktivität und Kapazität, und das 
frequenzabhängig. Und da Du eben nicht mehr im Gleichstrombereich bist, 
müssen Quelle, Leitung und Senke impedanzmäßig aufeinander abgestimmt 
sein. Ist das wie bei Dir nicht der Fall, gibts an den Stoßstellen 
Signalreflektionen, und die vermiesen Dir das Geschäft.

Das etwas vereinfacht, Details gibts hier:

http://de.wikipedia.org/wiki/Wellenwiderstand

Also halte Dich an die USB-Standards.

Hier

http://www.usb.org/developers/docs/hs_usb_pdg_r1_0.pdf

gibts detaillierte Empfehlungen. Das heißt dann: 4 Lagen. Hast Du sicher 
nicht gemacht.

fchk

von Florian G. (suffix90)


Lesenswert?

Danke für deine Antwort. Mir ist klar, dass ich bei diesen 
Geschwindigkeiten nicht mehr mit einfachem Strom sondern es mit 
elektromagnetischen Wellen zu tun habe; damit und u.a. mit der 
Wellenimpedanz bin ich zumindest theoretisch bekannt (6. Sem. ET ETH 
Zürich), wie man das in die Praxis umsetzt naja das weiß ich eher nicht 
so :P

Aber danke für das pdf mit den Empfehlungen, das ist ja super 
ausführlich und hilfreich und da ist eine Menge aufgelistet an was ich 
nicht gedacht habe..  Einzig mit den 4 Layern habe ich etwas 
Bauchschmerzen, das geht aus Kostengründen nicht; Wenn ich es richtig 
verstanden habe wurde das aber lediglich bei diesem Refernzdesign so 
gemacht, es kommt aber darauf an dass unter den USB-Traces eine solide 
GND-Plane ist die übertrieben gesagt weit und breit nicht unterbrochen 
wird? Das kann ich bei meinem Design auch mit 2 Layern sicherstellen.

Was meinst du zu meiner Bastellösung? Keine Chance da was zum Laufen zu 
bringen, nehme mal an an den Löststellen gibts zu heftigen Mismatch und 
zumindest die D+ und D- Adern müssten exakt gleich lang sein?

von testefix (Gast)


Lesenswert?

hast du mal probiert, anstelle der "normalen litze" ein stück 
twisted-pair kabel einzulöten, idealerweise sogar geschirmt?

ich konnte solch ein phänomen mal (zumindest provisorisch) durch 
einfaches umwickeln mit alufolie (einseitig auf gnd gelegt) lösen.

es ging um ca. 25 cm. ohne folie -> usb gerät wurde "bemerkt", jedoch 
nicht erkannt, mit alufolie -> webcam lief 1A!

wie "emv-verseucht" die umgebung tatsächlich war, vermag ich nicht zu 
beurteilen. neonröhren, telefonanlage und labornetzteile waren 
jedenfalls reichlich zugegen.

von testefix (Gast)


Lesenswert?

ok, nochmal den ganzen text gelesen -> wenns mit echtem usb kabel nicht 
geht, vielleicht mal nen anderen hub probieren, bzw. den vorhandenen 
wenn möglich extern mit spannung versorgen.

von foobar (Gast)


Lesenswert?

Wie im oben verlinkten PDF auf Seite 5 (Vergleich zwischen langen und 
kurzen PCB-Traces):
"Signal quality measurements, impedance measurements and EMI/ESD testing 
were performed using both
routing scenarios to investigate the effects of vias, trace length, 
component placement and routing paths.
Both routing scenarios passed all testing."

Halte dich also an die in dem PDF genannten Designregeln und es wird 
funktionieren.

von Frank K. (fchk)


Lesenswert?

Florian G. schrieb:

> Aber danke für das pdf mit den Empfehlungen, das ist ja super
> ausführlich und hilfreich und da ist eine Menge aufgelistet an was ich
> nicht gedacht habe..  Einzig mit den 4 Layern habe ich etwas
> Bauchschmerzen, das geht aus Kostengründen nicht; Wenn ich es richtig
> verstanden habe wurde das aber lediglich bei diesem Refernzdesign so
> gemacht, es kommt aber darauf an dass unter den USB-Traces eine solide
> GND-Plane ist die übertrieben gesagt weit und breit nicht unterbrochen
> wird? Das kann ich bei meinem Design auch mit 2 Layern sicherstellen.

Nein. Wie gesagt, Du musst den richtigen Wellenwiderstand treffen, und 
deine beiden Leiterbahnen bilden mit der Groundplane eine 
Microstrip-Leitung, deren Impedanz von den Geometrien und dem epsilon_r 
des Leiterplattenmaterials abhängt. Und dazu gehört auch der Abstand 
zwischen den Leiterbahnen und der Groundplane von 4.5 mils=114µm. Bei 
einer normalen Leiterplatte mit 1.6mm Dicke hast Du eine völlig andere 
Impedanz, und dann funktioniert es eben nicht.

Die Hochfrequenztechniker haben spezielle Tools zum Designen von 
Microstrip-Leitungen.

http://de.wikipedia.org/wiki/Streifenleitung

fchk

von einspruch (Gast)


Lesenswert?

aber hat hier irgendjemand eine erklärung dafür, dass es auch mit einem 
kabel nicht geht?! die ganze leiterbahnen diskussion ist ja gut und 
richtig, dennoch würde ich erwarten, dass selbst usb so robust ist, dass 
es angelötete buchsen toleriert!?

von Florian G. (suffix90)


Angehängte Dateien:

Lesenswert?

einspruch schrieb:
> aber hat hier irgendjemand eine erklärung dafür, dass es auch mit einem
> kabel nicht geht?! die ganze leiterbahnen diskussion ist ja gut und
> richtig, dennoch würde ich erwarten, dass selbst usb so robust ist, dass
> es angelötete buchsen toleriert!?

Das frage ich mich auch.. entweder es liegt an den Lötstellen 
Kabel/Buchse oder die Reste der Tracks die ich nicht abtrennen konnte 
verursachen weiterhin munter Mismatch.. das ganze sieht momentan so aus:

Nochmal zum Thema Wellenimpedanz: Klar, der Abstand Track <-> Plane 
beeinflusst die Impedanz und die muss 90 Ohm sein. Dazu gibt es doch 
aber mehrere Wege, da eben Breite Dicke und Abstand der Tracks (und nat. 
die epsilons) dazu beitragen.. Ich würde gerne die 4Layer Lösung 
vermeiden, da das Board ansonsten sehr gut funktioniert und 4 Lagen eben 
nur für den USB gebraucht werden würden.. ich designe das Ganze in 
Altium und das hat extra eine Funktion um High Speed Controlled 
Impedance Tracks zu machen.. Wenn ich die sonstigen Regeln zu Geometrie 
etc. einhalte und mit Altium sicher stelle dass alles 90 Ohm hat sollte 
es auch funktionieren oder?

von Gerd E. (robberknight)


Lesenswert?

Solange Du nicht die USB-Modi Highspeed und Superspeed verwendest, ist 
das mit den USB-Leitungen meiner Erfahrung nach alles nicht so kritisch. 
Geht also auch ohne 4 Layer, Microstrips und ähnliches.

Ich vermute also eher daß Du nen anderen Fehler in Deinem Design hast.

Mir wird allerdings noch nicht ganz klar was Du da eigentlich genau wie 
verbunden hast. Zeige einen Schaltplan von 
genau_dem_was_Du_momentan_hast. Dann sehen wir weiter.

von Florian G. (suffix90)


Lesenswert?

Gerd E. schrieb:
> Solange Du nicht die USB-Modi Highspeed und Superspeed verwendest, ist
> das mit den USB-Leitungen meiner Erfahrung nach alles nicht so kritisch.
> Geht also auch ohne 4 Layer, Microstrips und ähnliches.
>
> Ich vermute also eher daß Du nen anderen Fehler in Deinem Design hast.
>
> Mir wird allerdings noch nicht ganz klar was Du da eigentlich genau wie
> verbunden hast. Zeige einen Schaltplan von
> genau_dem_was_Du_momentan_hast. Dann sehen wir weiter.

USB 1.1 geht, das ist nicht das Problem. Es geht explizit um den 
Highspeed Mode von USB2.0. Schaltplan ist eine 1:1 Verbindung von den 2 
Buchsen, wie gesagt im ursprünglichen Design falsch verbunden, jetzt mit 
dem Kabel richtig (100 mal überprüft und USB1.1 funktioniert tadellos)

von Gerd E. (robberknight)


Lesenswert?

Florian G. schrieb:
> Gerd E. schrieb:
> USB 1.1 geht, das ist nicht das Problem. Es geht explizit um den
> Highspeed Mode von USB2.0.

Ah, ok. Ja, dann kann es wirklich ein Problem mit den Impedanzen, 
Übersprechen etc. zwischen Kabel und Leiterbahnen sein.

Schneid mal die ganzen bestehenden USB-Verbindungen auf Deinem Board 
möglichst nah an der Buchse gut mit dem Cuttermesser durch. Geht es 
dann?

Übrigens sind die Bezeichnungen "USB 1.1" und "USB 2.0" alles andere als 
eindeutig, z.B. kennt der USB 2.0-Standard auch weiterhin Lowspeed und 
Fullspeed. Daher also immer den wirklichen Namen der Verbindungsart 
angeben, auch wenn die usb.org die wirklich verwirrend gewählt hat.

von Phil J. (sunflower_seed)


Lesenswert?

Alle Theorie schön und gut, leider wird man an Hochschulen immer als 
Bastler verschrien, sobald man sich mit der praktischem Umsetzung der 
Theorie beschäftigt.

Ich würde dir raten strukturiert vorzugehen:

- fertiges USB Kabel einfach über die Platine legen und probieren ob es 
funktioniert
- Buchsen / Stecker auslöten und Kabel dran und testen ob es 
funktioniert

und spätestens dann dürftest du schon ein ganzes Stück schlauer sein.
Und darf man fragen, was U2 ist?
Eine Spannungsquelle mit Schaltregler der da wild rumtaktet?
Oder ein Funkmodul oder sowas in der Art?

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

du fährst also vom Hub per Leiterbahn zu einer B-Buchse und von dort 
dann per Kabel weiter zu einer A-Buchse? Das lässt sich nicht korrekt 
lösen, den Fall gibt es auch in keiner Spezifikation.

Was soll das denn sein, Upstream oder Downstream?

Gruss Reinhard

von Florian G. (suffix90)


Lesenswert?

Phil J. schrieb:
> Alle Theorie schön und gut, leider wird man an Hochschulen immer als
> Bastler verschrien, sobald man sich mit der praktischem Umsetzung der
> Theorie beschäftigt.

Ohja das kenne ich..

> Ich würde dir raten strukturiert vorzugehen:
>
> - fertiges USB Kabel einfach über die Platine legen und probieren ob es
> funktioniert
> - Buchsen / Stecker auslöten und Kabel dran und testen ob es
> funktioniert
>
> und spätestens dann dürftest du schon ein ganzes Stück schlauer sein.
> Und darf man fragen, was U2 ist?
> Eine Spannungsquelle mit Schaltregler der da wild rumtaktet?
> Oder ein Funkmodul oder sowas in der Art?

Es geht! Deinen ersten Vorschlag hatte ich ja schon ohne Erfolg 
umgesetzt, jetzt habe ich schlicht den Shield auf der A-Seite abgelötet 
und es läuft!

Ja U2 ist ein Schaltregler und mir ist gerade auch gekommen dass das 
wohl in Anbetracht von der USB-Geschichte keine gute Idee gewesen ist 
den da zu platzieren.. allerdings war der die ganze Zeit komplett 
ausgeschaltet; das ganze Board war ohne Saft ich wollte nur die 
USB-Verbindung testen, mal sehen was lustiges passiert wenn ich den 
einschalte..

Danke auf jeden Fall für eure Hilfestellungen und die rege Diskussion!

von Florian G. (suffix90)


Lesenswert?

Reinhard Kern schrieb:
> Hallo,
>
> du fährst also vom Hub per Leiterbahn zu einer B-Buchse und von dort
> dann per Kabel weiter zu einer A-Buchse? Das lässt sich nicht korrekt
> lösen, den Fall gibt es auch in keiner Spezifikation.
>
> Was soll das denn sein, Upstream oder Downstream?
>
> Gruss Reinhard

Nein. PC - Kabel - B-Buchse - Leiterbahn - A-Buchse - Kabel - Hub - 
Kabel - Geräte

von Phil J. (sunflower_seed)


Lesenswert?

>jetzt habe ich schlicht den Shield auf der A-Seite abgelötet
>und es läuft!

Shield und USB GND auf der selben Massefläche der Platine?

von Mac G. (macgyver0815)


Lesenswert?

USB hat auch eine Beschränkung bei der maximalen Leitungslänge von 5m!
Also 3m Kabel, dann deine Konstruktion und dann nochmal 3m Kabel wäre 
evtl. grenzwertig und lässt sich leichter stören - insbesondere wenn da 
noch Fehlanpassungen und mehrere Stecker drin sind... und ggf. Geräte 
(China Schrott) die selbst nicht ganz so optimal sind.

von Florian G. (suffix90)


Lesenswert?

Phil J. schrieb:
>>jetzt habe ich schlicht den Shield auf der A-Seite abgelötet
>>und es läuft!
>
> Shield und USB GND auf der selben Massefläche der Platine?

Ja - keine gute Idee?

von Mac G. (macgyver0815)


Lesenswert?

Florian G. schrieb:
> Ja - keine gute Idee?

Da muss man durchaus aufpassen.
Wenn ich GND mit USB Shield verbinde dann nur über einen 10nF 
Kondensator in Serie.

Wenn man die USB Verbindung nur durchleitet... tja dann evtl. gar nicht 
erst damit verbinden.
Ggf. nichtmal die USB Signalmasse verbinden - behandel den Teil der 
Platine einfach komplett extra, auch keine anderen Signale da 
herumleiten.

von JO (Gast)


Lesenswert?

habe nur kurz mitgelesen, vielleicht hilft diese ja diese .pdf

http://www.usb.org/developers/docs/hs_usb_pdg_r1_0.pdf

Schönen Sonntag
Gruß JO :-)

von Florian G. (suffix90)


Lesenswert?

Mac Gyver schrieb:
> Florian G. schrieb:
>> Ja - keine gute Idee?
>
> Da muss man durchaus aufpassen.
> Wenn ich GND mit USB Shield verbinde dann nur über einen 10nF
> Kondensator in Serie.
>
> Wenn man die USB Verbindung nur durchleitet... tja dann evtl. gar nicht
> erst damit verbinden.
> Ggf. nichtmal die USB Signalmasse verbinden - behandel den Teil der
> Platine einfach komplett extra, auch keine anderen Signale da
> herumleiten.

Wie meinst du die USB Signalmasse nicht verbinden? Also das GND was im 
USB-Kabel ist nicht zum Platinen GND verbinden? Das habe ich auch nicht 
gemacht, einen Kondensator habe ich aber nicht verwendet..

Danke JO, das pdf wurde oben schonmal gepostet und hilft wirklich gut 
weiter ;)

von Jim M. (turboj)


Lesenswert?

Florian G. schrieb:
>[...] - Kabel - B-Buchse - Leiterbahn - A-Buchse - Kabel - [...]

Wenn Du da jemals ein USB Logo draufpappen wills, muss zwischen die 
B-Buchse und die A-Buchse ein USB- (Hub-) Chip gesetzt werden. Damit 
wird das Signal regeneriert, was bei USB lt. Spec alle 5 Meter geschehen 
muss. Übliche USB A->B Kabel sind 3 Meter lang.

> Da ich den USB aber nur im Gerät weiterverteile [...]

Auch in diesem Fall muss der A Port immer hinter dem Hub Chip liegen. 
USB ist kein Bus im klassichen Sinne, die Verbindung der Ports ist immer 
1:1 (upstream : downstream).

von T. roll (Gast)


Lesenswert?

Wir haben bisher leider noch kein Schema gesehen...

von Florian G. (suffix90)


Lesenswert?

Jim Meba schrieb:
> Florian G. schrieb:
>>[...] - Kabel - B-Buchse - Leiterbahn - A-Buchse - Kabel - [...]
>
> Wenn Du da jemals ein USB Logo draufpappen wills, muss zwischen die
> B-Buchse und die A-Buchse ein USB- (Hub-) Chip gesetzt werden. Damit
> wird das Signal regeneriert, was bei USB lt. Spec alle 5 Meter geschehen
> muss. Übliche USB A->B Kabel sind 3 Meter lang.
>
>> Da ich den USB aber nur im Gerät weiterverteile [...]
>
> Auch in diesem Fall muss der A Port immer hinter dem Hub Chip liegen.
> USB ist kein Bus im klassichen Sinne, die Verbindung der Ports ist immer
> 1:1 (upstream : downstream).

Also all meine USB A->B Kabel sind um die 70cm lang.. Klar ist bei USB 
nach 3m Schluss, daran ändern aber die 15cm PCB und 50cm internes 
Hub-Kabel nicht viel und das Gerät ist auch nicht dazu gedacht ewig weit 
vom PC aufzustellen.. An der Host-Gerät Punkt zu Punkt Topologie will 
ich auch nicht ändern, alles was ich will ist 15cm 
"Platinen-Verlängerungskabel"..

> Wir haben bisher leider noch kein Schema gesehen...

Das Schema sind zwei Rechtecke, auf dem einen steht USB A, auf dem 
anderen USB B, beide haben 4 Pins, Pin1A ist mit Pin1B verbunden usw.. 
willst du das wirklich sehen?

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.