Kann man einen Bus über mehrere Schaltplanseiten führen? Globale Labels machen sich nicht gut an einem Bus.
Hallo Uhu. > Kann man einen Bus über mehrere Schaltplanseiten führen? > Wie Du schon anderswo bemerktest, ist ein "BUS" im Schaltplan in erster Linie dazu da, um Ordnung und Übersichtlichkeit herzustellen. *) Das heisst aber, er ist nur das Bündel der enthaltenen Verbindungen. Daraus folgt, Du musst die einzelnen Verbindungen im Bus an den Anschlüssen genauso behandeln wie alle anderen Leitungen auch. Wenn Du ihn in mehreren hierarchischen Schaltplänen verwenden willst, must Du also entweder globale Labels verwenden (was Du nicht willst), oder aber die einzelnen Leitungen auf hierarchische Pins führen. Ich kenne mich mit Bussen wegen mangelnder Verwendung nicht wirklich aus, mag auch sein, daß ich mich irre. > Globale Labels machen sich nicht gut an einem Bus. Globale Labels im Bus haben ähnliche Vor- und Nachteile wie globale Variablen in der Programmierung. Richtig. Auf der anderen Seite: Power Pins sind eh Global. Wenn Ich also im Bus eine Spannungsversorgung mitführe, die direkt an einem Power Pin hängt, oder ein GND, und Ich nicht aus Gründen der Signalintegrität gezwungen bist, die wirklich als separate Leitung im Bus zu führen, hätte ich bei denen eher weniger bedenken. Ähnliches gilt für Signale, die man überall auf der Platine mal braucht, z.B. eine Resetleitung oder sowas.... Aber Du hast schon recht. Vorher immer besser einmal gründlich darüber Nachdenken. *) Anmerkung: Ein "Bus" könnte in der Netzliste auch ein Hinweis für den Autorouter sein, alle enthaltenen Leitungen als "Bus" paralell mit gleichen Längen und möglichst gleichem Wellenwiderstand zu führen. Ob das tatsächlich so ist, und welche Autorouter das können, entzieht sich meiner Kenntnis. Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Nachtrag: >> Globale Labels machen sich nicht gut an einem Bus. > > Globale Labels im Bus haben ähnliche Vor- und Nachteile wie globale > Variablen in der Programmierung. Richtig. Habe gerade etwas mit Bussen und Labeln herumgespielt..... Ein globales Label als Busname hat KEINEN Effekt. Die Busse werden NICHT verbunden. An den einzelnen Leitungen eines Busses funktionieren aber serhr wohl globale Label, normale Label und hierarchische Pins wie gewohnt. Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Uhu Uhuhu schrieb: > Globale Labels machen sich nicht gut an einem Bus. Warum nicht? Alle zum Bus laufende Verbindungen müssen doch eh "belabeld" werden, da kann man doch auch statt normaler, globale nehmen. Oder denke ich in die falsche Richtung? frank
Hallo Bernd, >> Globale Labels machen sich nicht gut an einem Bus. > > Globale Labels im Bus haben ähnliche Vor- und Nachteile wie globale > Variablen in der Programmierung. Richtig. Das war viel vordergründiger gemeint: globale Labels stehen auf einem "Wegweiser" - wenn ich den an den µC pappe, sieht es einfach bescheiden aus. Der Kern der Frage ist: Teilen die drei Typen von Labels einen Namensraum? Wenn ja, dann müßte es genügen, irgendwo an den Bus ein Signal zu hängen, das auf einem globalen Label endet, um das Signal auf einem anderen Blatt mit derselben Methode in einen dort verlegten Bus zu holen. Leider komme ich mit EESchema.pdf nicht so recht klar, aber ich habe dort eine Passage gefunden, der gewisse Hoffnungen i.S. Weiterleitung des Buses aufkeimen läßt:
1 | 6.6 - Connections: Hierarchy pins. |
2 | You will create here points of connection (Hierarchy pins) for the symbol |
3 | which has been just created. |
4 | These points of connection are similar to normal component pins, with |
5 | however the possibility to connect a complete bus with only one point of |
6 | connection. |
Nur so richtig schlau werde ich daraus nicht und mit probieren habe ich noch nichts erreicht.
Hallo Uhu. > Das war viel vordergründiger gemeint: globale Labels stehen auf einem > "Wegweiser" - wenn ich den an den µC pappe, sieht es einfach bescheiden > aus. > Ah, ok. Wenn ich mir Gedanken über Ästhetik machen würde, müsste ich mit einem Sack überm Kopf rumlaufen....also lass ich es. ;-) > Der Kern der Frage ist: Teilen die drei Typen von Labels einen > Namensraum? > Sieht wohl eher nicht so aus. Globale Label existieren überall. Normale Label nur im aktuellen Sheet. hierarschische Pins nur im aktuellen und im übergeordneten Sheet (und vice versa) > Leider komme ich mit EESchema.pdf nicht so recht klar, aber ich habe > dort eine Passage gefunden, der gewisse Hoffnungen i.S. Weiterleitung > des Buses aufkeimen läßt: >
1 | > 6.6 - Connections: Hierarchy pins. |
2 | > You will create here points of connection (Hierarchy pins) for the |
3 | > symbol |
4 | > which has been just created. |
5 | > These points of connection are similar to normal component pins, with |
6 | > however the possibility to connect a complete bus with only one point of |
7 | > connection. |
8 | > |
> > Nur so richtig schlau werde ich daraus nicht und mit probieren habe ich > noch nichts erreicht. Ich ebenso. Bei mir hat es auch nicht geklappt. Ich habe übrigens auch "Busse an einen Buseingang führen" probiert. Das wirkt auch nicht. Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Bernd Wiebus schrieb: >> Der Kern der Frage ist: Teilen die drei Typen von Labels einen >> Namensraum? >> > > Sieht wohl eher nicht so aus. > > Globale Label existieren überall. > > Normale Label nur im aktuellen Sheet. > > hierarschische Pins nur im aktuellen und im übergeordneten Sheet (und > vice versa) Wenn man in PCBnew einen Pin editiert, sieht man bei Pins mit lokalem Label in einer Hierarchie unter 'Pad Netzname' den Pfad von der Wurzel zum Pad. Ebenso verhält es sich bei einem hierarchischen Label, das von einem Teil im Wurzelblatt kontaktiert wird Die hierarchischen Labels, die in ein übergeordnetes Blatt importiert werden, kann man nicht aus dem Sheet-Symbol heraus ziehen - damit haben sie lediglich eine Interface-Funktion. Das Sheet-Symbol im übergeordneten Blatt bildet einen virtuellen Stecker, über den man das untergeordnete verdrahten kann. Innerhalb eines Sheets sind lokale und hierarchische Labels in verschiedenen Namensräumen. Eine Verbindung gibt es zwischen gleichnamigem lokalem und hierarchischem Label nur, wenn man sie explizit so verdrahtet. Letzteres halte ich für wenig innvoll. Besser wäre es, wenn ein hierarchisches Label im Sheet etwa so wirken würde, wie eine public Anweisung in ASM: das lokale Symbol wird für externe Programm-Module sichtbar. > Ich ebenso. Bei mir hat es auch nicht geklappt. Diese ganze Geschichte mit den durchnummerierten Busleitungen ist ein greuliches Gewürge, das wohl nur deswegen gemacht wurde, daß im .sch-File keine näheren Informationen über den Bus auftauchen müssen. Aber selbst wenn man den Trick mit dem Einfügen von Bus-Anschlüssen befolgt, wie er in der Hilfe beschrieben ist, funktioniert nichts.
Damit ein Bus mit einem hierarchischen Label verwendet werden kann, muß eine Namenskonvention von KiCAD eingehalten werden. Die Labels an den elektrischen Verbindungen zum Bus müssen auf eine Zahl enden, z.B. DATA0, DATA2, DATA3 usw. bis DATA23. Das hierarchische Label am Bus muß dann DATA[0..23] heißen. Man achte auf die zwei Punkte zwischen 0 und 23. Alle anderen Benennungen funktionieren nicht. Einen I2C oder SPI Bus kann man mit hierarchischen Labeln nicht machen.
Hallo Woody. > Damit ein Bus mit einem hierarchischen Label verwendet werden kann, muß > eine Namenskonvention von KiCAD eingehalten werden. > > Die Labels an den elektrischen Verbindungen zum Bus müssen auf eine Zahl > enden, z.B. DATA0, DATA2, DATA3 usw. bis DATA23. Das hierarchische Label > am Bus muß dann DATA[0..23] heißen. Man achte auf die zwei Punkte > zwischen 0 und 23. Alle anderen Benennungen funktionieren nicht. Ah! Das werde ich nachher mal testen! > > Einen I2C oder SPI Bus kann man mit hierarchischen Labeln nicht machen. Für I2C böte sich tatsächlich auch eher ein globales Label an. Die Leitungen ziehen sich ja meist genau wie Stromversorgungen durch das ganze Board und hängen zusammen. ;-) Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Woody P. schrieb: > Damit ein Bus mit einem hierarchischen Label verwendet werden kann, muß > eine Namenskonvention von KiCAD eingehalten werden. Hast du das hinbekommen?
Uhu Uhuhu schrieb: > Woody P. schrieb: >> Damit ein Bus mit einem hierarchischen Label verwendet werden kann, muß >> eine Namenskonvention von KiCAD eingehalten werden. > > Hast du das hinbekommen? Hier meine Testdatei. Ich verwende die Version (2011-01-25 BZR 2758)-stable Die Verbindung am 68230 mit Label D[0] ignoriert KiCAD, wie man im Board sieht.
Aha, man muß also die Bus-Spezifikation über den Text des hierarchischen Labels exportieren. Aus der Dokumentation wird das nicht klar. Aber einerlei, ich halte diese Buskonstruktion für verzichtbar, weil zu primitiv und zu fehlerträchtig. Innerhalb eines Schaltplanes scheinen hierarchische und lokale Labels doch einen Namensraum zu teilen, wenn man ein lokales Label auf dem Bus nachträglich in ein hierarchisches umwandelt und dann zurechtrückt/dreht. Das sieht zwar graphisch nicht toll aus, aber es funktioniert.
Hallo Woody. >> Die Labels an den elektrischen Verbindungen zum Bus müssen auf eine Zahl >> enden, z.B. DATA0, DATA2, DATA3 usw. bis DATA23. Das hierarchische Label >> am Bus muß dann DATA[0..23] heißen. Man achte auf die zwei Punkte >> zwischen 0 und 23. Alle anderen Benennungen funktionieren nicht. > Ah! Das werde ich nachher mal testen! Also wenn ich das so mache, klappt das nicht, aber wenn ich Dein Beispiel nehme, und um eine Leitung erweitere, klappt es. Vermutlich ist da was kaputt. Siehe auch: http://tech.groups.yahoo.com/group/kicad-users/message/9107 Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
> > Also wenn ich das so mache, klappt das nicht, aber wenn ich Dein > Beispiel nehme, und um eine Leitung erweitere, klappt es. > > Vermutlich ist da was kaputt. > Siehe auch: http://tech.groups.yahoo.com/group/kicad-users/message/9107 Hast du im Rootsheet welches die beiden Sheet verbindet, die beiden Pins mit einem Bus verbunden. Wenn eine Leitung genommen wird funktioniert es nicht. Beim ERC gibt es auch keine Fehlermeldung das der Bus mit einer Leitung verbunden ist, dafür reichlich Pin not connected Fehler.
Hallo Woody. > Hast du im Rootsheet welches die beiden Sheet verbindet, die beiden Pins > mit einem Bus verbunden. Ja. Ich habe zwei Fälle genommen: Einmal wie Du aus einem hierarchischen sheet in ein anderes hierarchisches sheet via root sheet, und einmal aus einem hierarchischen sheet in das root sheet hinein. > Beim ERC gibt es auch keine Fehlermeldung das der Bus mit einer > Leitung verbunden ist, dafür reichlich Pin not connected Fehler. Die Pin not connected hab ich auch..... Ich hab das misslungene Testprojekt mal in den Anhang als poerpintest1.zip gepackt. mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Hallo Woody. Nun läuft es, mit Hilfe von Charles Rohrbacher aus der KiCAD user group. >> Hast du im Rootsheet welches die beiden Sheet verbindet, die beiden Pins >> mit einem Bus verbunden. > Ja. > Ich habe zwei Fälle genommen: Einmal wie Du aus einem hierarchischen > sheet in ein anderes hierarchisches sheet via root sheet, und einmal aus > einem hierarchischen sheet in das root sheet hinein. Ich sollte nicht nur mit einem Bus verbinden, sondern auch den Bus mit einem (normalen) Label versehen, in der gleichen Namenskonvention wie bei den hierarchischen Pins, an die der Bus angeschlossen wird. Also "name[x..Y]". Das ist unbedingt wichtig bei dem Bus, der vom hierarchischen Pin in das Rootsheet hineinläuft, und dort auf Bauteile verteilt wird. Bei einem Bus, der von einem hierarchischen sheet zum anderen geht, SCHEINT er nicht nötig zu sein. Ich würde trotzdem besser ein Label anhängen. Ebenso SCHEINT er bei Bussen, die von Bauteilen in einem hierarchischen Sheet gesammelt werden, und zu einem hierarchischen Pin aufwärts Richtung Rootsheet zu gehen, nicht nötig zu sein. Ich würde aber auch hier trotzdem besser ein Label anhängen. Bei meinen Test habe ich immer "passive" hierarchische Pins verwendet. Was mit anderen ist, keine Ahnung. Ich hoffe mal, das schlimmste was passiert ist, das der ERC meckert, weil Ausgang auf Ausgang liegt oder so. Müsste ich auch mal bei gelegenheit testen. Was mit Bussen ist, die ein hierarchisches Sheet nur durchlaufen (also von der übergeordneten Ebene zur untergeordneten), weiss ich auch nicht. Ebenfalls noch Neuland zum austesten. > Ich hab das misslungene Testprojekt mal in den Anhang als > poerpintest1.zip gepackt. Zwei andere fette Fehler waren, das ich den Namen hier2 zweimal vergeben hatte, und, und da hab ich mir den Wolf gesucht, ich hatte in hier1.sch die Label für die Wires nicht auf die Wires gesetzt, sondern dicht daneben.....da hatte ich wohl echt Tomaten auf den Augen. Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
Bernd Wiebus schrieb: > Hallo Woody. > > Nun läuft es, mit Hilfe von Charles Rohrbacher aus der KiCAD user group. > > > Ich sollte nicht nur mit einem Bus verbinden, sondern auch den Bus mit > einem (normalen) Label versehen, in der gleichen Namenskonvention wie > bei den hierarchischen Pins, an die der Bus angeschlossen wird. Also > "name[x..Y]". > > Das ist unbedingt wichtig bei dem Bus, der vom hierarchischen Pin in das > Rootsheet hineinläuft, und dort auf Bauteile verteilt wird. > Ich habe jetz mal Zeit gefunden es durchzutesten. Der Unterschied zwischen unseren beiden Schaltungen ist, ich habe Bauteile mit Bidirektionalen Pins verwendet und du hast Bauteile mit passiven Pins verwendet. KiCAD reagiert abhängig vom Pin Typ unterschiedlich. Bei Bidirektionalen Pins ist die Benennung egal, der Bus kann im Verlauf über Sheets sogar unterschiedliche Namen haben. Ich habe mal einen Widerstand in eine Leitung des Busses eingefügt. Dabei habe ich jetzt drei Fehlervarianten: * Bus ist unbenannt, ERC liefert unconnected Pin. * Bus ist benannt. Der Label der Leitung ist zwischen Bauteilpin und Widerstand. Die Ratsnest in PCB geht vom IC1 nur zu einem Pin des Widerstand und dann zu IC2. Der zweite Pin des Widerstand hängt in der Luft. * Bus ist benannt. Die Leitung ist vor und hinter dem Widerstand benannt. Die Ratsnest geht von IC1 zum ersten Pin des Widerstand dann zum Zweiten Pin des Widerstands und dann zum IC2. Ich habe eine Variante gefunden die Funktioniert. Die Leitung zwischen IC Pin und Widerstand bleibt unbenannt. Zwischen Widerstand und Busanschluß wird ein Name vergeben. Dann erhalte ich ein richtiges Ratsnest von IC1 zu Pin1 des Widerstand und eine zweite Linie von Pin2 des Widerstands zu IC2. Dieses ganze Bussystem mit den hierarchischen Pins bei KiCAD ist grausig. Urpsrünglich hatte ich die Idee die Busse wie SPI, I2C, MMC über Busleitungen zu mit hierarchischen Pins zu verlegen. Das hatte ich schnell aufgegeben.
Woody P. schrieb: > Dieses ganze Bussystem mit den hierarchischen Pins bei KiCAD ist > grausig. Ich denke, das ist es auch ohne hierarchischen Pins... Man sollte zu einem Bus beliebig benannte Leitungen zusammenfassen können und die auch in anderen Sheets sofort verfügbar haben. So wie es im Moment ist, ist es ein Software-Hack der üblen Sorte.
Hallo Zusammen, ich stehe gerade vor dem von euch schon besprochenen Problem (ist etwas länger her... ;)), der Busverbindung über mehrere Schaltpläne. Da ich es nicht hinbekommen habe, könnt ihr mir vielleicht mit einem "test.pro"-Projekt helfen? Dann schaue ich mir die Vorgehensweise direkt an. Danke! Matthias
Hallo Matthias. Matthias Weinhold schrieb: > Da ich es > nicht hinbekommen habe, könnt ihr mir vielleicht mit einem > "test.pro"-Projekt helfen? Dann schaue ich mir die Vorgehensweise direkt > an. Danke! Schau mal in den Anhang nach Bustest_07Aug2014.zip Stolperig ist das ganze leider immer noch. Ich musste im Wurzelschaltplan Label passend an die Busse pappen, damit ich im Wurzelschaltplan alles verbunden bekam. In den Subsheets brauchte ich das dann merkwürdigerweise nicht. Achte auf die Benennungen: der einzelne Draht "BusA-Ltg1" bis "BusA-Ltg4" und der Bus und das hierarchische Label dann "BusA-Ltg[1..4]" Die einzelnen Leitungen müssen also gleich heissen und mit einer Nummerierung enden, und die dazugehörigen Busse bzw hierachischen Label müssen genauso heissen, bis auf die Zahl, gefolgt von einer eckigen Klammer gefüllt mit "erster Zahl", zwei Punkten, "letzter Zahl". Das verwendete KiCad: Application: kicad Version: (2014-06-29 BZR 4957)-product Release build wxWidgets: Version 2.8.12 (release,Unicode,compiler with C++ ABI 1002,GCC 4.6.3,wx containers,compatible with 2.6) Platform: Linux 3.13.0-32-generic i686, 32 bit, Little endian, wxGTK Boost version: 1.54.0 USE_WX_GRAPHICS_CONTEXT=OFF USE_WX_OVERLAY=OFF KICAD_SCRIPTING=ON KICAD_SCRIPTING_MODULES=ON KICAD_SCRIPTING_WXPYTHON=OFF USE_FP_LIB_TABLE=HARD_CODED_ON BUILD_GITHUB_PLUGIN=ON Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
:
Bearbeitet durch User
Nachtrag: Bernd Wiebus schrieb: ~~~ ~~ ~ Woody P. schrieb: > > > Dieses ganze Bussystem mit den hierarchischen Pins bei KiCAD ist > grausig. Urpsrünglich hatte ich die Idee die Busse wie SPI, I2C, MMC > über Busleitungen zu mit hierarchischen Pins zu verlegen. Das hatte ich > schnell aufgegeben. Es gehen auch komplexere Strukturen wie diese Form des SPI-Busses, wenn man mit den Namen nicht so heikel ist. ;O) Tipp: Es stört den Bus nicht, wenn er lokal weniger Leitungen führt, als angegeben. ;O) Siehe Anhang: Bustest-II_07Aug2014.zip Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.dl0dg.de
:
Bearbeitet durch User
Hallo Bernd, vielen Dank für die Erklärung und das anschauliche KiCad-Projekt. Ich habe es nun probiert und auch hinbekommen. Gruß Matthias
Moin, So, jetzt sind 3 Jahre um, und ich stolper ueber diesen Thread. Da siehts fuer mich so aus, als waere nicht nur nix passiert in die Richtung "flexiblere Namen von Busteilnehmern" sondern durch die mittlerweile dazugekommene Moeglichkeit differentielle Leitungspaare zu definieren, hat sich's eher verschlimmert: Es ist also voellig unmoeglich, Busse mit diff. Leitungspaaren einzusetzen, alldieweilen die Benamungsvorschriften fuer Busse (muss auf 'ne Zahl enden) sich mit den Benamungvorschriften fuer diff. Leitungspaare (muessen auf +/- bzw. P/N enden) komplett beissen. Hmmm. Nicht schoen. Gruss WK
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.