PCB-Layout, funktionale vs. tatsächliche Pin-Reihenfolge

Ich möchte dieses Gespräch hier fortsetzen: CAD Schematic Pin Arrangement Approach

Grundsätzlich gibt es zwei Möglichkeiten, schematische Symbole zu erstellen, entweder mit echter Pin-Reihenfolge oder durch Gruppieren von Pins nach ihren Funktionen. Mehr Leute scheinen funktionale Gruppierungen gegenüber einer echten Pin-Reihenfolge zu befürworten, da dies Ihrem Schaltplan Klarheit verleihen kann.

Bei der ersten Leiterplatte, die ich vor ein paar Jahren erstellt habe, habe ich funktionale Gruppierungen im Schaltplan verwendet, und als ich dann auf die Leiterplatte umgestiegen bin, machte die Anzahl der Kreuzungen und Durchkontaktierungen es zu einem kompletten Durcheinander. Seitdem habe ich für jedes einzelne Schaltplansymbol eine echte Pin-Reihenfolge erstellt und mich dann darauf konzentriert, sicherzustellen, dass möglichst wenige Linien auf dem Schaltplan gekreuzt sind, was bedeutet, dass die Kreuzungen auf der Leiterplatte minimiert werden. Dies hat zu sehr sauberen und effizienten Boards geführt, aber ich glaube nicht, dass meine Methode bei sehr großen Boards gut skalieren wird.

Für diejenigen unter Ihnen, die funktionale Pin-Gruppierungen verwenden, wie zum Teufel können Sie eine effiziente Leiterplatte ohne zu viele Kreuzungen oder Durchkontaktierungen herstellen? Beispielsweise könnte PORTB auf einem ATmega auf alle 4 Seiten des ICs verteilt werden. Wenn Sie sie zu einem Funktionsblock zusammenfassen, können Sie sie einem Gerät zuweisen und dann einen absoluten Albtraum haben, wenn Sie umschalten, um das Routing durchzuführen. Das hätte man leicht vermeiden können, wenn man gemerkt hätte: „Hey, PB0, PD7 und PD6 liegen alle direkt nebeneinander, vielleicht wäre das die bessere Wahl.“

Ich versuche also nicht, irgendjemanden von irgendetwas zu überzeugen, ich erkenne nur an, dass der professionellere Weg funktionale Pin-Gruppierungen sind, aber ich weiß einfach nicht, wie ich das auf eine effiziente Leiterplatte übertragen soll.

Ich habe einen meiner Schaltpläne als Beispiel dafür beigefügt, wie ich es mache. Dieses Brett war 1 Quadratzentimeter groß und somit war jede einzelne Durchkontaktierung eine große Immobilie.

Vielen Dank im Voraus.

Geben Sie hier die Bildbeschreibung ein

FYI, der Zweck dieser Website ist nicht, Gespräche zu führen. Es geht darum, Antworten auf konkrete Fragen zu erhalten.
Sie haben Ihre eigene Frage beantwortet. Da sich die Teile nicht ändern, können Sie, wenn Sie Kreuzungen auf Ihrem Schaltplan minimieren können, dies auch auf dem PCB-Layout tun.

Antworten (5)

Dies ist ein großartiges Beispiel dafür, warum derselbe Ingenieur, der die Schaltung entworfen hat, das Layout und das Routing durchführen sollte. Der Schaltplan dient der Kommunikation der Schaltung, daher sollten die Pins auf jeden Fall funktional angeordnet werden, ohne Rücksicht auf die physikalische Pin-Reihenfolge. Dies ist für die meisten Anwendungen des Schaltplans viel besser.

Layout und Routing gehören jedoch nicht zu diesen Verwendungszwecken. Die Lösung besteht darin, dies als Teil des Layout- und Routing-Problems zu sehen und nicht als etwas, das auf den Schaltplan verschoben werden muss. Meistens liegen beispielsweise Pins eines Ports eines Mikrocontrollers nahe beieinander. Aber manchmal nicht. Sie müssen sich beim Layouten das Ratsnest ansehen und sehen, ob es Möglichkeiten gibt, dies zu vereinfachen, ohne die Schaltung zu beeinträchtigen. Ja, Sie könnten am Ende zwischen dem Schaltplan und dem Layout hin und her gehen und Netze zwischen Pins verschieben.

Glücklicherweise klingt das nach einer größeren Sache, als es wirklich ist. Meistens können beliebige Verbindungen gut genug untergebracht werden. Manchmal haben Sie ein sehr enges Board mit wenigen Schichten, das sehr kostensensibel ist. In diesem Fall wenden Sie den zusätzlichen technischen Aufwand auf, um Dinge auszutauschen, um das Board zu vereinfachen. Auch das ist der ungewöhnliche Fall. Die meisten Produkte sind nicht groß genug, um dieses Optimierungsniveau während des Engineerings zu rechtfertigen.

Hinzugefügt

Ich hätte das früher erwähnen sollen, aber bei dichten Designs achte ich darauf, die Pins im Voraus zuzuweisen. Ich habe kürzlich einen 64-Pin-Mikrocontroller auf eine 4-Lagen-Platine gesetzt. Bei so vielen Verbindungen auf engstem Raum ist das Routing innerhalb von etwa einem Zoll um den Chip herum ein ernstes Problem. Signale können leicht blockiert werden, was eine erhebliche Umleitung anderer Signale erfordert.

Was ich tat, war das Pinout-Diagramm aus dem Datenblatt so groß wie möglich auszudrucken. Dann habe ich Etiketten um den Chip geschrieben, die angeben, in welche Richtungen die verschiedenen anderen Subsysteme auf der Platine liegen würden. Zum Beispiel "EEPROM" oben rechts, Anzeigeprozessor oben links, Serviceport unten links usw. Ich habe auch eine Liste aller E / A-Signale erstellt, die von jedem Block benötigt werden.

Um Pins zuzuweisen, habe ich zuerst diejenigen durchgestrichen, die behoben werden mussten. Einige der Subsystempositionen wurden durch die festen Pinbelegungen vorgeschlagen. Ja, das ist ein iterativer Prozess. Sobald das alles eingestellt war, begann ich damit, den I/O-Leitungen der verschiedenen Subsysteme benachbarte Pins zuzuweisen. Sie möchten dies mit Bleistift tun, da dies auch etwas iterativ ist. Beispielsweise stellen Sie möglicherweise fest, dass Sie die UART-Pins weiter links hätten zuweisen sollen, da andere Dinge rechts eine höhere Nachfrage haben und Ihnen dort die Pins ausgehen.

Für ein so kompliziertes Mikro widme ich ein ganzes Blatt nur den unmittelbaren Anschlüssen des Mikros. Dies zeigt die Stromversorgung, Masse, Bypass-Kappen, Quarz, Programmierkopf und dergleichen. Die E/A-Verbindungen sind nur benannte Leitungen, die zu anderen Seiten im Schaltplan führen. Diese Seite trägt die Bezeichnung „Main controller“. Die nächste Seite vielleicht "Peripheriegeräte des Hauptcontrollers", die die Dinge zeigt, die mit E / A-Leitungen verbunden sind, die im Schaltplan nirgendwo anders hin müssen. Beispiele hierfür sind das externe EEPROM, die Status-LED, ein Relais mit Kontakten, die zu einem Kundenstecker herausgeführt sind usw.

Beachten Sie, dass die obige Methode vor dem Zuweisen von Pins eine Vorstellung vom Layout erfordert. Auch dies ist ein iterativer Prozess. In diesem Fall habe ich die flexiblen E/A-Signale beim Starten des Layouts nicht mit dem Prozessor verbunden gelassen. Ich habe Standorte für Subsysteme danach ausgewählt, wo sie mit der Außenwelt verbunden sind, wo sie nicht im Weg sind, wenn ihr Standort keine Rolle spielt usw. Der Prozessor wurde dann basierend darauf ausgerichtet, wo die festen Dinge um ihn herum sind, wie der Kristall und Ladekappen, könnten am besten passen. Dann wurde der oben beschriebene Prozess gestartet.

Dies war ein ziemlich extremer Fall. Meistens muss ich nicht so bewusst über die Zuweisung von I/O-Pins nachdenken. Bei kleineren Prozessoren, bei denen es weniger Routing-Überlastung gibt, weise ich normalerweise nur Pins im Schaltplan zu und kümmere mich dann im Layout darum. Das kann ein paar zusätzliche Vias bedeuten, aber für viele Boards ist das keine große Sache.

Da vertraue ich deiner Erfahrung. Ich muss nur auf funktionale Pin-Gruppierungen umstellen und mich mit den möglichen Kopfschmerzen auseinandersetzen, wenn ich Dinge in der Layoutphase neu anordnen und optimieren muss. Vielen Dank.
Danke für das Update! Seitdem habe ich viel PCB-Erfahrung gesammelt und ziemlich genau das gefunden, was Sie als die beste Methode beschrieben haben. Wenn ich einen Mikrocontroller hinlege, route ich zuerst alle unveränderlichen Signale, IE: Uhren, SPI, DAC usw., während ich alle IO undefiniert lasse. Am Ende werde ich reinkommen und sehen, welche IO-Pins übrig sind und welche in nächster Nähe sind / die geringste Anzahl von Kreuzen erfordern würden. Auf diese Weise fließt es am Ende sehr gut! Ich habe Ihren Rat befolgt und seitdem alles auf dem Schaltplan in funktionalen, modularen Blöcken gemacht. Nochmals vielen Dank für die Beratung!

Für diejenigen unter Ihnen, die funktionale Pin-Gruppierungen verwenden, wie zum Teufel können Sie eine effiziente Leiterplatte ohne zu viele Kreuzungen oder Durchkontaktierungen herstellen?

Ein Wort: Iteration

Nach Erstellung des Schaltplans (meist in Verbindung mit der Firmware) beschrifte ich die Platine weiter. Wenn das Routing für einige Signale dumm kompliziert wird, gehe ich zurück zum Schaltplan und verschiebe die Signale auf einen Port, der physikalisch besser auf dem Chip liegt. Aktualisieren und routen Sie dann weitere Traces. Fahren Sie fort, bis entweder alle Signale geroutet sind oder Sie keine optimalere Anordnung finden können ... dann können Sie mit dem Löschen von Durchkontaktierungen beginnen.

Ich bin nicht der Meinung, dass physikalische Informationen Teil des Schaltplans sein sollten. Das Schema definiert die elektrische Konnektivität: Ich habe diesen Widerstand und er ist mit der Anode dieser Diode verbunden. Wie weit sie voneinander entfernt sind, wo sie sich auf der Platine befinden oder die Ausrichtung der Komponenten sind für den Schaltplan irrelevant.

Das ist eine wirklich gute Erklärung. Vielen Dank, Kumpel.

Ich denke, ich würde sagen, dass Sie deshalb eng mit Ihren Layoutern (oder sich selbst) zusammenarbeiten sollten. Wenn Sie also in einem Design sehen, dass Sie Probleme haben, können Sie diese Kompromisse eingehen. Oder wenn Sie diesen Weg gehen möchten, können Sie Pin-Swapping verwenden, bei dem Sie eine Gruppe von sagen wir GPIOs nehmen, denen es aus Sicht des schematischen Designs egal ist, welche Sie verwenden, und ihnen dann ein Pin-Swapping-Attribut geben. In Ihrem Layout-Tool können Sie dann Pins auf Rattennestebene austauschen, um die Dinge sauberer zu machen.

Wenn Sie fertig sind, können Sie Ihre Netzliste in Ihren Schaltplan zurückkommentieren, um die aktualisierten GPIO-Verbindungen zu erhalten. Das ist ziemlich gängige Praxis, denke ich, obwohl einige Leute es nicht mögen, wenn sie wollen, dass alles nur vom schematischen Prozess gesteuert wird. Es ist auch beim Routing von DRAM nützlich, wo es in Ordnung ist, Datenbits beispielsweise innerhalb einer Bytespur auszutauschen.

Für „typische“ Entwurfsszenarien gelten die allgemeinen Regeln für den Schaltplanentwurf.

  1. Die Sorge um Kreuzungen gilt wirklich nur für Designs mit sehr geringer Anzahl von Schichten. Wenn Sie über genügend Ebenen verfügen, um separate horizontale und vertikale Routing-Ebenen zu haben, entstehen nur geringe zusätzliche Kosten für Kreuzungen.

  2. Viele PCB-Design-Tools ermöglichen das Vertauschen von Pins während des Layouts mit rückseitiger Anmerkung zum Schaltplan, wenn sie richtig eingerichtet sind.

Dieses Brett war 1 Quadratzentimeter groß und somit war jede einzelne Durchkontaktierung eine große Immobilie.

Dies ist ein Szenario, in dem es sinnvoll sein könnte, den Schaltplan mit mechanischer Pin-Reihenfolge zu erstellen. Wirklich jede Schaltung, die auf dieses Board passt, ist so einfach, dass das Lesen des Schaltplans nicht besonders schwierig ist, selbst bei mechanischer Pin-Bestellung.

Alter Thread, aber nützlichere Weisheit ...

Beim Entwerfen von Symbolen können Sie mit guten Werkzeugen Hinweise und Strukturen hinzufügen, die diese Iteration erleichtern. Am Beispiel von Eagle:

Pin-Beschriftungen (in, out...) helfen dabei, ehrlich zu bleiben (ERC/DRC-Prüfung). Benutze sie.

Attribute, Stücklistenverwaltung und Variationen sind es wert, untersucht zu werden, wenn Sie ein Design haben, das auf verschiedene Arten oder mit Variationen bei der Komponentenbeschaffung erstellt werden kann. Denken Sie an die Einbindung in Toolketten und Automatisierung (Revisionsverwaltung, orchestrierte CAM-Builds, Teiledatenbanken usw.), wenn Sie eine Werkstatt mit mehreren Personen oder mehreren Konstruktionen sind ...

Mit Pin-Gruppierungen (Swaplevel...) können Sie Signale Pins neu zuweisen und die Ausrichtung beim PCB-Layout vertauschen. dh es spielt keine Rolle, welches Signal an welchen Eingang dieses UND-Gatters geht, und durch Setzen von Swaplevel = 1 in Ihrem Symbol kann die Person, die das PCB-Layout durchführt, die Dinge leicht ändern. Ich verwende dies für alle Pins in einer MCU-Portgruppe, Eingänge für einfache Logikgatter, unpolarisierte Passive und dergleichen.

Stellen Sie bei einem komplexen Teil sicher, dass die Symbole mit der logischen Funktion des Geräts übereinstimmen, nicht mit der physischen Pinbelegung - die sich oft (immer?) abhängig von der für die Komponente gewählten Verpackung (DIP / SOIC / QFN / ...) ändert. , an ist in der Praxis schlimmer als nutzlos.

Zerlegen Sie komplexe Komponenten in logisch unabhängige Symbole. Erstellen Sie auf einer MCU ein Symbol nur für die Stromversorgungs- und Reset-Pins, andere für Uhr, I2C, Ethernet, Ports usw.

Dies führt zum nächsten Punkt – verwenden Sie mehrere Schaltplanblätter, eines für jede logische Gruppierung in Ihrem Design.

Erstellen Sie Schaltplanseiten für Energieverwaltung, Eingänge, Ausgänge, Hochgeschwindigkeit, Analog usw. ... Auf diese Weise haben Sie eine Schaltplanseite nur für Ihre Spannungsregelung und Stromverteilung, und dort platzieren Sie diese Stromsymbole für Ihre wichtigsten ICs. Sie können hier auch Einschränkungen für die Position und das Layout von Komponenten notieren und auf App-Notizen und externe Dokumente für wichtige Dinge verweisen. Ihr I2C-Subsystem mit Pullups, Muxes und Expandern erhält einen eigenen Bereich, in dem Sie das Designwissen weitergeben können, das zwischen dem Schaltplandesigner und der Layout-Primadonna so leicht verloren geht - selbst wenn Sie beide es sind!

Verwenden Sie schließlich einen FRAME sowohl für Ihre Schaltpläne als auch für Ihr PCB-Layout und verwenden Sie die Ebenen DOCUMENT, tDocu und bDocu zur Identifizierung, Versionsinformationen, Montage- und Testnotizen. Silkscreen geht auf t/bPlace, zusammen mit (optional) Name und Werten. Wenn Sie sich für einen Siebdruck entscheiden, legen Sie genauso viel Energie in die Platzierung der Dinge darauf wie in diese Kupferschichten. Ich persönlich setze nur Komponentenwerte auf meine Prototyp-Siebdrucke; Meine Produktionsplatinen setzen eine automatisierte Fertigung voraus und enthalten nur funktionale, benutzerorientierte Informationen.