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
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
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