Hallo zusammen. Ich habe da mal eine Frage zum Vorgehen beim routen von GPIOs. Ich habe aktuell z.B. einen relativ neuen dsPIC mit 64 Pins. Es soll ein paar Bauteile mit SPI dran, ein paar PWMs, 8bit Schnittstelle für ein Display und sonstige Dinge, wie z.B. ein paar "Schalttransistoren". Wie plane ich im Schaltplan vorher schon ein schönes bzw. effektives Design ein? Mein bisheriges vorgehen war so, dass ich im Schaltplan die festen PINs angeschlossen habe. Im oben genannten Fall also Versorgungsspannung und PWM. Anschließend gleich die 0..7 Bits eines Ports, die beim Gehäuse auch nebeneinander liegen (oft PORT B oder D), für das Display, damit ich in der Software mit dem Byte direkt arbeiten kann. Aber dann fängt es an. Welchen ICSP Port nehme ich, welche Remapable Pins für SPI und welche restlichen Pins für den Rest? Bisher war mein Vorgehen so, dass ich die Bauteile platziert und die festen Netze geroutet habe. Den Rest (also SPI, Transistoren, CS-Leitungen, ...) hab ich dann von den Bauteilen nach und nach nahe an den Microcontroller gelegt und habe dann erst geguckt, an welchen Pin ich dies oder jenes anschließe. Wenn ich von vornherein festgelegt hätte, wäre das vermutlich umständlicher. Meine Frage ist einmal: Geht das irgendwie besser? Ich habe das einmal bei nem YouTube-Video gesehen, wo dann erst der komplette Schaltplan fertig war, dann alle Bauteile fest platziert wurde und dann anschließend geroutet wurde, so wie die Bauteile lagen, sprich ohne Umplatzieren der Bauteile. Ich hatte das jedoch einmal so, dass ich durch nachträgliche Belegung der uC-Pins bei bestehender Bauteilplatzierung das Layout auf die Hälfte der Größe bekommen habe, inkl. eine Reduktion der Vias um ein vielfaches. Was auch logisch ist, wenn nicht alle Leiterbahnen kreutz und quer gehen. Meine zweite Frage ist, ob es für meine Vorgehensweise eine Erleichterung gibt? So dass ich sagen kann "meine MOSI-Leitung kann an freie Pins von Pin 2,6,12,16,18,... , die SCLK-Leitung auch an freie Pins von Pin 2,6,12,16,18,..." und dann kann ich das Routen (speziell mit Eagle)? Ich kann Leitungen zwischen all diesen Pins und dem SCLK Pin des Slaves machen, doch dann muss ich nach verbinden des Bauteils alle restlichen Anschlüsse wieder löschen, bevor ich dann die übrig gebliebenen Pins mit dem Netz MOSI verbinde. Oder geht das nicht bei Eagle aber bei Software xy schon? Vielen Dank schonmal
Ich gehe immer so vor: Ich überlege mit beim Zeichnen des Schaltplanes, wo die einzelnen Pins liegen und wie es bein Layouten praktisch sein könnte. Wenn ich danach beim Routen etwas unpassend finde ändere ich es, falls möglich, im Schaltplan.
Michael Skropski schrieb: > meine MOSI-Leitung kann an > freie Pins von Pin 2,6,12,16,18, Bei erwachsenen Layout-Systemen sind die Stichworte Pin Swap, Gate Swap und Back Annotation, bei Eagle vermute ich ist das nicht so weit ausgefuchst, aber sicher weiss ich das nicht. Pin Swap heisst zuerst mal, dass du in der Bauteildefinition solche Pins als tauschbar definierst, z.B. sind die beiden Eingänge eines Und-Gatters eine Gruppe von 2 tauschbaren Pins, die 4 Gatter in einem IC sind als komplette Gates tauschbar. Dann kannst du beim Layouten manuell oder automatisch solche Pins/Gates vertauschen. Die Back Annotation sorgt dann dafür, dass diese Änderungen in den Stromlaufplan übernommen werden. Gruss Georg
Georg schrieb: > Bei erwachsenen Layout-Systemen sind die Stichworte Pin Swap, Gate Swap Würde bei Eagle funktionieren, wenn die Bibliotheken so erstellt wären :( Müsste man also, bei µCs(Pic), selber ändern. Bei einfachen Logig-ICs waren sie, bei den von mir eingesetzten, immer bereits so erstellt. Georg schrieb: > und Back Annotation Funst bei Eagel leider nicht o. ich hab keinen Plan wie. :(
Ich routete letzthin eine Platine, die recht viele völlig "freie" GPIO eines STM32 verwendete. Ich ging dann (mit KiCad) so vor: Zuerst habe ich mal ganz grob eine Zuordnung gemacht, d.H. die GPIO so platziert, dass die Seite auf dem Chip passt. Mit einem erst sehr grob platzierten Layout, dem Schaltplan und dem Datenblatt des STM32. Dann habe ich sämtliche Leitungen einfach mal auf's Geratewohl bis kurz vor den Prozi gezogen. Das resultierte dann in einem mehr oder weniger verwurstelten Rudel Rubberbands. Dann habe ich das Schematool und das Layouttool gleichzeitig geöffnet und iterativ Pins getauscht. Da ich mit Labels arbeitete, ging das ruck zuck. Reine forward annotation. Und nie viel auf einmal. Maximal vielleicht eine zyklische Vertauschung von drei oder vier GPIO. Was wie getauscht werden muss, ist so sehr einfach ersichtlich. Und So habe ich mich suksessive zum Ziel hingearbeitet. Ich weiss, das ist Steinzeitvorgehen. Aber es funktioniert eigentlich recht gut; man kommt so ziemlich schnell zum Ziel. Gruäss Simon
Georg schrieb: > Michael Skropski schrieb: >> meine MOSI-Leitung kann an >> freie Pins von Pin 2,6,12,16,18, > > Bei erwachsenen Layout-Systemen sind die Stichworte Pin Swap, Gate Swap > und Back Annotation, bei Eagle vermute ich ist das nicht so weit > ausgefuchst, aber sicher weiss ich das nicht. Doch, Eagle kann das schon. Man muss es in der Bauteildefinition nur anlegen. Gute Anregung, muss ich bei mir mal einarbeiten. In der Vorgehensweise arbeite ich aber ähnlich wie Georg. Erst mal eine halbwegs plausible Belegung wählen, und dann so lange Pins tauschen, bis die Anzahl der Vias minimal wird. Layoutergebnisse sind immer nur ein (mathematisch) lokales Optimum, das globale Optimum dürfte so ziemlich unerreichbar sein. Max
Hallo, ich mache immer ein Excel mit allen im Design vorkommenden Funktionen für alle Pins. Dann ordne ich die Funktionen auf die Pins zu. Dabei lege ich mir das Blockschaltbild auf den zweiten Bildschirm, da sieht man dann schon wo sich Signale überkreuzen, wo die Stecker liegen und ähnliches. Ich beginne immer mit jenen Funkionen, wo es an wenigsten alternative Möglichkeiten gibt, z.B. Parallele zuerst, dann die SPIs und UARTs, dann die Analogen, dann die GPIOs. Beim Layouten kann man dann noch einges tauschen. Man muss aber meist nicht viel ändern, wenn man die Schritte zuvor sauber gemacht hat. Du hast aber einen PIC. Dank Pin Remapping hast du es eh leicht...
Also bei uns in der Firma werden immer zuerst die Schaltpläne fertig erstellt. Erst dann beginnt man mit dem Layout. Trick dabei: Richtige Positionierung ist alles. Man sollte nicht versuchen, Anschlüsse im Schema zu ändern, sondern die Bauteile anders zu platzieren.
San Lue schrieb: > Man sollte nicht versuchen, Anschlüsse im Schema zu ändern, sondern die > Bauteile anders zu platzieren. Naja, aber wenn Du, sagen wir mal, einen Stecker hast, auf den 20 freie GPIO geführt sind, dann kann es durchaus Sinn machen, das Schema nachträgich zu ändern. Die Ports sind in der FW ja (hoffentlich) eh nicht im ganzen Code verstreut, sondern in einem einzelnen .h File. Also: Schema zeichnen (wie's gerade kommt) --> Layouter macht (nach Absprache mit HW-Entwickler, sofern nicht Personalunion) Optimierungen --> optimiertes Schema beim --> .h File anpassen --> fertig. Warum sollte man das nicht machen?
Erstmal, Eagle kann zwar Pinswap (und gateswap) aber das halt ich bei einem uC für nicht so gut. Manchmal kann man Pins einfach tauschen, manchmal überhaupt nicht (wenn z.B. die Bits in der Software ihre Wertigkeit behalten sollen). Auch macht einem hier die Doppelbelegung einen Strich durch die Rechnung: normale I/O Pins könnte ich zwar tauschen, ein Output Compare aber nicht so einfach... ich hab mir das so angewöhnt: ich lege zuerst keine feste verbindung im Schaltplan, sondern auf beiden Seiten (also am uC und am Ziel des Signals) je einen Testpunkt, denn kann mandann im layout auch positionieren. Dann schau ich wie ich am einfachsten/kürzesten/kreuzungsfreiesten die testpunkte "verheiraten" kann. Wenn mir das passt, schmeiß ich die testpunkte raus und mach die direkte Verbindung im Schaltplan. Danach hab ich die (nur mehr sehr kurzen) Luftlinien im Board, die ich dann nur mehr verbinden muss. Achtung: of bewährt es sich, zuerst die Verbindung herzustellen, und erst dann die Testpunkte zu löschen, weil Eagle sonst gerne zuviel Leiterbahnen auflöst.
Ich werde mal gucken, was ich mit Pinswap hinbekomme. Meine Ideale Vorstellung wäre, eine Art Klasse/Gruppe von Pins machen zu können, und dort dann verschiedene Netznamen zu verknüpfen. Also kann ich z.B. eine Klasse "RPs" (Remappable Pins) und eine "RPIs" (Remappable Pin Inputs) machen. Danach könnte ich die Netze MOSI und SCLK zur Klasse RPs hinzufügen und dann werden im Layout die Luftlinien zu den Pins angezeigt, jedoch nicht von SCLK zu MOSI. Aber das ist wohl Wunschdenken. Michael Reinelt schrieb: > Manchmal kann man Pins einfach tauschen, > manchmal überhaupt nicht (wenn z.B. die Bits in der Software ihre > Wertigkeit behalten sollen). Auch macht einem hier die Doppelbelegung > einen Strich durch die Rechnung: normale I/O Pins könnte ich zwar > tauschen, ein Output Compare aber nicht so einfach... Compare Output kann man meines wissens auch auf die Remappable Pins legen. Wenn nicht, ist dies natürlich auch eine Verbindung, die man von Anfang an fest verdrahten muss, es sei denn, es gibt mehrere Compare-Module/Ausgänge.
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.