Ich habe eine Platine mit einem SPI-Bus mit mehreren Sensoren, die an diesen Bus angeschlossen werden müssen. Da 90-Grad-Leiterbahnen in einem ordnungsgemäßen PCB-Design nicht empfohlen werden, frage ich mich, wie ich so viele Sensoren anschließen kann, ohne scharfe Kurven und senkrechte Leiterbahnen zu verwenden.
Ich denke darüber nach, Dreiecke zu machen, um die Verbindungen zu glätten, aber ich wollte hier vorher fragen, ob es einen empfohlenen Weg dafür gibt.
PS: Vielleicht wird jemand sagen, dass SPI-Geschwindigkeiten damit keine Probleme haben sollten, aber es ist dennoch eine gültige Frage für Lernzwecke.
BEARBEITEN:
Da ein Bild mehr als 1000 Worte sagt...
Das ist das Problem, das ich präsentiere: "Wie beseitigt man 90-Grad-Spuren in einer Busverbindung?" (Auch wenn ich in diesem speziellen SPI-Fall kein Problem haben werde, weckt es dennoch meine Neugier)
Schnelle Antwort: 90-Grad-Bögen sind für die meisten Dinge kein Problem. Ich mache sie nicht nur aus ästhetischer Sicht. Es wird erst ab etwa 500 MHz zum Problem, aber selbst dann ist es fraglich.
Es gibt drei Gründe, keine 90-Grad-Biegung vorzunehmen: Es verursacht eine Impedanzfehlanpassung und beeinträchtigt somit die Signalintegrität. Die scharfen Ecken werden während des PCB-Ätzprozesses abgerundet und können die Leiterbahn schwächen. Die Biegungen verursachen eine Art Reflexion, die nichts mit der Impedanzfehlanpassung zu tun hat.
Es hat sich gezeigt, dass das Problem der Impedanzfehlanpassung kein Problem ist. Dafür gibt es viele Quellen, aber die beste ist das Buch „High Speed Digital Design: a handbook of black magic“.
Die Schwächung der Leiterbahn kann erheblich sein, insbesondere wenn Ihre Leiterbahnbreiten an der Grenze dessen liegen, was der PCB-Shop herstellen kann. Aber ich persönlich hatte noch nie Probleme damit und kenne niemanden, der ein Problem hatte. Ich kann also nicht sagen, dass es ein ernsthaftes Problem ist.
Was die Welle des Signals betrifft, die von der flachen Seite der Spur abprallt, bin ich mir nicht sicher, ob das echt ist oder eine EE-Urban-Legende. Was ich weiß, ist, dass Sie superschnelle Edge-Raten benötigen, um überhaupt darüber nachzudenken. Fast jeder hier auf EE.SE kann das ignorieren.
Wichtiger als die Form der Leiterbahn ist die "heilige Dreifaltigkeit der Signalintegrität": Leiterbahnimpedanz, Signalrückweg und Signalabschluss. Machen Sie diese richtig und fast alles andere spielt keine Rolle. Außerdem sollten Sie dies für fast alle Signale in digitaler Ausführung tun, unabhängig von der Frequenz!
Update: Ich füge Dinge hinzu, um die schematischen Dinge direkt anzusprechen, die das OP der Frage hinzugefügt hat.
Machen Sie sich zunächst keine Sorgen über die 90-Grad-Sache. Kein Problem.
Als nächstes bedenken Sie, dass SPI zwei Arten von Signalen hat: Ein Treiber, der einen Empfänger speist, und ein Treiber, der mehrere Empfänger speist. MISO und MOSI sind Beispiele für einen Treiber, der einen Empfänger speist. SCLK und CS sind die Signale, die mehrere Empfänger speisen. Das Verständnis dieser Unterscheidung ist äußerst wichtig, da jeder Signaltyp unterschiedliche PCB-Layouttechniken erfordert.
Ich werde beschreiben, wie ich mit diesen Signalen umgehe. Ich mache selten 2-Lagen-Leiterplatten, die meisten sind 6 bis 8 Lagen. Das bedeutet, dass alle meine Leiterplatten Masse- und Stromversorgungsebenen haben. Dies ist äußerst wichtig, da eine ordnungsgemäße Handhabung der Signalintegrität in einer 2-Lagen-Platine fast unmöglich ist. Außerdem ist dies ein großes Thema, sodass ich nicht über alles schreiben kann. Gegebenenfalls gebe ich Ihnen Bedingungen an Google weiter.
Wir beginnen mit dem einen Treiber, der einen Empfänger (MISO oder MOSI) speist, da dies am einfachsten ist. Für diese verwende ich eine Art von Signalterminierung namens "Source Serial Termination" oder manchmal nur Source Termination genannt. Am Treiber liegt in Reihe mit dem Signal ein einfacher Widerstand von etwa 25 bis 75 Ohm. Der genaue Wert dieses Widerstands wurde so berechnet, dass er der Impedanz der Leiterbahn abzüglich der Quellenimpedanz des Treibers entspricht. Wenn also meine Spur 50 Ohm beträgt und der Treiber eine Ausgangsimpedanz von 20 Ohm hat, beträgt mein Widerstand 30 Ohm, +/- 10%.
Die Leiterbahnimpedanz kann mit den verschiedenen Formeln für "Stripline" - und "Microstrip" -Leiterbahnen (Google diese) berechnet werden. Normalerweise ziele ich auf eine Leiterbahnimpedanz von 50 Ohm und variiere die Leiterbahnbreite, um dies zu erreichen. Die Signalschicht der Leiterplatte muss sehr nahe an der Ebene liegen, sonst muss die Leiterbahn unrealistisch breit sein. Ich konstruiere meinen PCB Stackup (wie die Schichten der PCB aufgebaut sind), um sicherzustellen, dass der Abstand zwischen den Signalschichten und den Ebenenschichten angemessen ist.
Ein Grund, warum dies mit einer 2-Lagen-Leiterplatte fast unmöglich ist, liegt darin, dass der Abstand zwischen einer Lage und der nächsten super groß ist und Sie im Grunde keine Kontrolle darüber haben. Der andere Grund ist, dass Sie selten eine SOLID- Ebene unter Ihren Signalspuren haben.
Eine andere Sache ist, dass Sie die Ausgangsimpedanz Ihres Treibers selten kennen. Normalerweise schätze ich nur etwa 10 Ohm. In anderen Fällen setze ich dort einfach einen 50-Ohm-Widerstand ein und erwarte, den Wert zu optimieren, sobald die Leiterplatte hergestellt ist. Ich verwende ein schnelles Oszilloskop mit ordnungsgemäßen Masseverbindungen und Sonden am Empfänger, wenn ich das Signal betrachte.
Also zurück zu unserem Signal ... Der Widerstand wird so nah wie möglich am Treiber platziert. Dann route ich das Signal direkt zum Empfänger. Auf dem Weg stelle ich sicher, dass die Leiterbahnbreite für die gewünschte Impedanz korrekt ist. Als nächstes achte ich auf den Signalrückweg. Google "Signal Return Path" und "Loop Area". Es ist wichtig, dass der Signalrückweg z. B. direkt unter der Signalspur liegt, und die richtige Verwendung von Entkopplungs-/Bypasskappen verwendet wird, wenn der Rückweg von der Leistungsebene zur Masseebene oder umgekehrt springen muss.
Jetzt für die einen Treiber-mehrere Empfängersignale. Diese sind viel schwerer. Das Wichtigste ist, dass das Signal in Reihe geschaltet werden muss. In Ihrem Fall muss der Ausgang der MCU zu Slave 1 gehen, dann von Slave 1 zu Slave 2, dann von Slave 2 zu Slave 3. Sie können es nicht so machen, wie Sie es in Ihrem Diagramm gezeichnet haben, wo es von der MCU ausgeht und verzweigt sich dann zu allen Sklaven. Die zweitwichtigste Sache ist, dass Ihr Signalabschluss ganz am Ende der Leitung sein muss, nach dem letzten Slave, und nicht an der MCU wie im vorherigen Beispiel.
(Anmerkung für die Pedanten unter uns: Was ich im vorherigen Absatz gesagt habe, ist nicht ganz richtig, * ABER ... Der Single Driver-Single Receiver hat eine Schwierigkeit von 2 auf einer Skala von 1 bis 10. Der Daisy-Chaining Single Driver -Mehrfachempfängersignal ist etwa 3 oder 4. Ein Stern-Routing, das Sie in Ihrer Frage gezeichnet haben, ist etwa eine 9 auf unserer Skala von 1 bis 10. Sie können es tun, aber Sie werden es bereuen.)
Für diese Signale haben Sie mehr Optionen für Ihre Signalterminierung. Der ideale Abschluss wäre ein Widerstand von Ihrem Signal zu einer Stromschiene, der genau die Hälfte Ihres Signalpegels beträgt. Wenn Ihr Signal beispielsweise von 0 auf 3,3 V geht, würde Ihr Widerstand auf eine Stromschiene gehen, die 3,3/2 oder 1,65 Volt beträgt. Der Wert des Widerstands würde der Leiterbahnimpedanz entsprechen (gleiche Mikrostreifen-/Streifenleitungsformel wie zuvor). Der Regler auf dieser Stromschiene muss ein spezieller Typ sein, der für die Signalterminierung ausgelegt ist, da er sowohl Strom als auch Quelle liefern muss (es gibt Ausnahmen).
Natürlich hat nicht jeder eine 1,65-V-Schiene einfach herumliegen, also gibt es Optionen. Wenn es sich nicht um ein superkritisches Signal handelt, kann ich eine Schiene verwenden, die auf 1,5 V oder bis zu 1,8 V reduziert ist. Oder ich verwende zwei Widerstände, einen gegen GND und einen gegen +3,3 V, anstelle eines einzelnen Widerstands (Google "Signalterminierung" für die Formeln). Oder ich verwende einen einzelnen Widerstand plus eine in Reihe geschaltete Kappe, die als AC-Terminierung bezeichnet wird.
Das Schlechte an der Verwendung von zwei Widerständen, wie einem Spannungsteiler, als Abschluss ist, dass sie viel Strom verbrauchen können. Das Gute an der AC-Terminierung ist, dass sie sehr wenig Strom verbraucht. Aber viele Leute verstehen die AC-Terminierung sehr falsch. Die AC-Terminierung funktioniert nur bei Signalen mit einem Arbeitszyklus von 50 %, die immer wackeln. Signale, die dies tun, werden Uhren genannt. :) Aber die SPI-Clock trifft nicht zu, weil sie abgeschaltet werden kann und so nicht immer wackelt. Der andere Fehler, den die Leute machen, ist, dass die Kappe sehr klein ist. Manchmal nur ein Dutzend pF. Diese Obergrenze sollte mindestens 0,01 uF betragen, und ich verwende häufig 0,1 uF. Eine kleine Kappe hier ist ein sicheres Zeichen dafür, dass jemand nicht weiß, was er tut.
Wie auch immer, also verketten Sie diese Signale und setzen Sie die richtige Terminierung ganz am Ende der Kette.
Ich habe gerade erst an der Oberfläche dieses Problems gekratzt, und es kann Jahre dauern, bis Sie das Thema vollständig verstehen. Es gibt eine Menge Informationen im Netz darüber, aber leider gibt es auch eine große Menge an Fehlinformationen im Netz. In acht nehmen.
Ich werde dies mit einigen Dingen beenden, die rote Fahnen wecken sollten. Wenn Sie irgendetwas davon in einigen Schaltplänen oder in dem, was jemand schreibt, sehen, müssen Sie weglaufen: Nur weil die Frequenz einer Uhr oder die Datenrate langsam ist, heißt das nicht, dass sie keine Signalterminierung benötigt. Ein digitales 100-kHz-Signal erfordert normalerweise genauso viel Signalintegrität (SI) wie ein 100-MHz-Signal. Jedes Mal, wenn jemand etwas zu der Schaltung hinzufügt, um "die Kanten zu verlangsamen", ist dies ein sicheres Zeichen dafür, dass er / sie keine Ahnung hat. Immer wenn eine Kappe direkt zu einem Signal hinzugefügt wird, ist das schlecht (mit Ausnahme der EMI-Filterung an Anschlüssen). Wie ich bereits erwähnt habe, verwenden Sie eine Kappe in pF-Größe am AC-Abschluss. Und schließlich kann es für Ihr Design fatal sein, den SI nicht mit einem guten Bereich und einer ordnungsgemäßen Prüfung zu verifizieren.
Wie Sie erraten haben, werden Sie bei 20 MHz kein Problem haben, mit 90-Grad-Biegung zu entwerfen. Sie müssen sich wahrscheinlich nicht einmal Gedanken über die Einrichtung Ihrer Leiterbahngeometrie machen, um einen Mikrostreifen oder eine Streifenleitung mit kontrollierter Impedanz zu erhalten.
Wenn Sie bei 50 MHz oder höher entwerfen, möchten Sie wahrscheinlich mit einer Leiterbahngeometrie entwerfen, die eine grob kontrollierte charakteristische Impedanz ergibt (außer bei sehr kurzen Leiterbahnen).
Oberhalb von 100 oder 200 MHz (abhängig von der Leiterbahnlänge und Ihren Anwendungsanforderungen) möchten Sie Ihrer Platinenfabrik wahrscheinlich mitteilen, dass sie die Leiterbahnimpedanz steuern muss.
Bei Designs mit 200 MHz bis 1 GHz müssen Sie sich möglicherweise Gedanken über die Vermeidung von 90-Grad-Biegung machen. Dann könnten Sie einfach zwei 45-Grad-Biegungen mit vielleicht 20-100 mil Spur dazwischen verwenden, um Ihre Spur um 90 Grad zu drehen.
Wenn Sie über 1 GHz entwerfen, möchten Sie möglicherweise sogar 45-Grad-Biegung vermeiden, dann würden Sie glatte Bögen verwenden, um die Leiterbahn zu drehen. Sie würden auch alles tun, um Vias zu vermeiden.
Natürlich sind die Frequenzbänder, die ich für diese verschiedenen Techniken angebe, grobe Schätzungen. Einige Designs bei 1 GHz haben möglicherweise außergewöhnliche Anforderungen an die Signalintegrität, daher würden Sie Bögen verwenden. Einige Designs bei 500 MHz haben möglicherweise lockerere Anforderungen und erlauben Ihnen die Verwendung von 90-Grad-Biegung usw.
Beim Engineering geht es genauso darum, die Kosten niedrig zu halten und eine Arbeit pünktlich zu erledigen, wie es darum geht, ein Design bis zur Perfektion zu optimieren. Wenn Ihr Design nicht etwas Ausgefalleneres erfordert, können Sie mit 90-Grad-Biegungen wahrscheinlich die Platinenfläche reduzieren, und das mehrschichtige Manhattan-Routing wird das Layout schneller fertigstellen, so dass das Herumspielen mit Bögen oder das Optimieren zur Vermeidung von Durchkontaktierungen schlechtes Engineering wäre. 45-Grad-Biegungen sind ehrlich gesagt nicht viel schwieriger zu entwerfen, aber sie verursachen wahrscheinlich eine gewisse Vergrößerung der erforderlichen Platinenfläche.
Bearbeiten
(Antwort auf die Aktualisierung der Frage)
Anscheinend meinten Sie mit einem "Bus" eine Linie mit Verbindungen zu mehreren Geräten und nicht mehrere Linien, die zusammen von einem Ort zum anderen verlegt wurden, und Sie machen sich Sorgen über Orte, an denen sich die Linie verzweigt.
In diesem Fall ist auf einer einzelnen Routing-Schicht eine 90-Grad-Verbindung das Beste, was Sie tun können. Was Sie vermeiden möchten, sind spitze Winkel in den Kupferkanten. Diese könnten (zumindest in der Vergangenheit) dazu führen, dass sich Ätzmittel während der Herstellung ansammeln und gebrochene Spuren verursachen. Wie in den Kommentaren zu Davids Antwort angedeutet, hat man heutzutage selten ein Problem mit einem modernen, hochwertigen Geschäft. Aber wenn sich Ihre Leiterbahn in einem anderen Winkel als 90 Grad verbindet, entsteht auf der einen oder anderen Seite ein spitzer Winkel, und Ihre Fertigungswerkstatt wird es wahrscheinlich immer noch zu schätzen wissen, wenn Sie dies vermeiden.
Was Sie hier wirklich vermeiden möchten, sind lange Stubs außerhalb der Leitung. Lang bedeutet mehr als 1/10 (oder so) der Wellenlänge, die der höchsten interessierenden Frequenz zugeordnet ist.
Angenommen, die Signalquelle befindet sich in der MCU und die Empfänger in den Slave-Blöcken, ist es vorzuziehen, zum Beispiel vom MCU-Block zu Slave 1, dann von Slave 1 zu Slave 2, von Slave 2 zu Slave 3 usw. zu routen. Mit einer möglichst kurzen Stichleitung, die zu jedem dieser Geräte abzweigt. Wenn Sie mit kontrollierter Impedanz arbeiten, platzieren Sie den Abschluss am Ende der gesamten Kette, nachdem die Leitung alle Slaves passiert hat.
Wenn sich die Signalquelle natürlich im Slave-Gerät befindet und an die MCU gesendet wird, würden die Slaves in der Mitte der Kette immer noch in eine verzweigte Leitung fahren. Dafür gibt es meines Wissens keine tolle Lösung. Es setzt der Kommunikationsfrequenz in einem bidirektionalen Multidrop-Bus wie diesem eine praktische Grenze. Obwohl Sie sich Dinge wie DDR3-Layoutempfehlungen ansehen können, um zu sehen, wie weit dies getrieben werden kann. Bei höheren Frequenzen werden Sie feststellen, dass Punkt-zu-Punkt- statt Multidrop-Topologien viel üblicher werden.
Die anderen Antworten NEHMEN etwas an, von dem ich glaube, dass das Bastler-Originalposter es nicht weiß:
Das Wichtigste ist, die Spuren über einer GROUND PLANE zu platzieren. Es ist ein SPI-Bus, der wahrscheinlich irgendwo unter 10 MHz läuft, also wäre eine kleine Terminierung wirklich das i-Tüpfelchen.
In der Praxis könnte ich 50 Ohm in Reihe mit den Antriebsstiften platzieren, um eine gewisse Dämpfung zu erreichen. Er oder sie arbeitet wirklich nicht mit einer Frequenz, die hoch genug ist, damit die anderen Techniken eine Rolle spielen.
Ein 20-MHz-Takt (Ihrer kann schneller sein) hat eine Wellenlänge von 15 Metern, und um das Problem von Abschlusswiderständen zu vermeiden, sollte die maximale Entfernung für die Übertragung über eine Leiterplatte zu anderen SPI-Geräten deutlich weniger als 15 m betragen, und einige Leute gehen für ein Zwanzigstel der Wellenlänge.
Bei einem Abstand von 75 cm (immer noch eine sehr große Leiterplatte) sollten Sie also mit "normalen" Routing-Techniken, dh herkömmlichen Vias und 90-Grad-Winkeln, wenn Sie Schichten tauschen usw., auskommen.
Wenn Sie einen +100-MHz-Takt verwenden (ich habe gehört, dass dies bei einigen der Fall ist), sollten Sie darüber nachdenken, geeignete Hochgeschwindigkeits-Routing-Techniken zu verwenden und auch die Takt- und Datenlängen gleich weit entfernt zu halten.
Kaviat
Denken Sie daran, dass die Master-Uhr nicht nur Daten zu den Slave-Geräten taktet (die hoffentlich für jedes synchron ankommen), sondern auch die Antworten von Slaves zurücktaktet, und dies kann niemals synchron sein, so dass dies eine weitere Überlegung zu maximalen Entfernungen auf Leiterplatten ist. Gutes Tracking hilft bei diesem Problem nicht.
Jeanne Pindar
Johan.A
mFeinstein