Forum: Platinen KiCad: Bus über mehrere Schaltplanseiten führen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Uhu U. (uhu)


Lesenswert?

Kann man einen Bus über mehrere Schaltplanseiten führen?

Globale Labels machen sich nicht gut an einem Bus.

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

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

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

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

von Frank P. (mauz)


Lesenswert?

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

von Uhu U. (uhu)


Lesenswert?

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.

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

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

von Uhu U. (uhu)


Lesenswert?

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.

von Woody P. (woody)


Lesenswert?

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.

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

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

von Uhu U. (uhu)


Lesenswert?

Woody P. schrieb:
> Damit ein Bus mit einem hierarchischen Label verwendet werden kann, muß
> eine Namenskonvention von KiCAD eingehalten werden.

Hast du das hinbekommen?

von Woody P. (woody)


Angehängte Dateien:

Lesenswert?

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.

von Uhu U. (uhu)


Lesenswert?

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.

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

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

von Woody P. (woody)


Lesenswert?

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

von Bernd W. (berndwiebus) Benutzerseite


Angehängte Dateien:

Lesenswert?

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

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

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

von Woody P. (woody)


Lesenswert?

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.

von Uhu U. (uhu)


Lesenswert?

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.

von Matthias W. (Firma: Hochschule Ulm) (matthias_weinholer)


Lesenswert?

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

von Bernd W. (berndwiebus) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
von Bernd W. (berndwiebus) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
von Matthias W. (Firma: Hochschule Ulm) (matthias_weinholer)


Lesenswert?

Hallo Bernd,

vielen Dank für die Erklärung und das anschauliche KiCad-Projekt.
Ich habe es nun probiert und auch hinbekommen.

Gruß Matthias

von Dergute W. (derguteweka)


Lesenswert?

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
Noch kein Account? Hier anmelden.