Radioaktive Logik ;) ...Basics....

Fragen und Antworten, Beispiele

Moderator: herw

Antworten
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Radioaktive Logik ;) ...Basics....

Beitrag von KlangRaum »

Vermutlich kann sich unter dieser Überschrift keiner nix was vorstellen. Back to the roots....

Mal ein paar Links. Auf Wunsch gut geniessbar mit Milch&Keksen oder Wein&Cräcker... :mrgreen: *hehehehehe*

1.) http://de.wikipedia.org/wiki/Logikgatter
2.) http://de.wikipedia.org/wiki/Flipflop
3.) http://de.wikipedia.org/wiki/Monostabile_Kippstufe

Es geht dabei um Basics der Digitaltechnik. In Reaktor sind diese Schaltungen in dieser Form zwar nicht vorhanden (was ich sehr bedaure) aber trotzdem leich nachzubilden.

Ich mach jezze mal ein Fass auf für die Digitalfreaks, die mit J.Pütz gelernt haben: Die Schaltzeichen nach DIN 40700 (vor 1976) haben was absolut grooooofiges. Aber trotzdem: Hat jemand Lust an einer (Core)Bibliothek für Grundschaltungen mitzuarbeiten? Das ist eigentlich lockeres Futter... Wir könnten uns aber trotzdem über die Schnittstellendefinition kloppen.....


Gruss
Peter ::kaffee::


PS:
In den 70er hat mir meine Physik--Le*hehehehe*rin mal versucht ein UND-Gatter mit 4 Eingängen zu erklären: „Nur wenn Du den Schalter UND den Schalter UND den Schalter UND den Schalter drückst, nur dann geht das Birnchen an...“

Aber da leuchtete kein Birnchen. :(

Es wollte einfach nicht.

ALs diese quälend langweilige Doppelstunde dann endlich fast rum war, bin ich nach vorne gegangen und hab erstmal die Stromzufuhr für den Labortisch freigeschaltet und das Birnchen durfte endlich leuchten. Meine Eins war mir zwar sicher, aber ich sachma so: Mit Reaktor wär dat nich so passiert....


*hehehehehe*

PS2:

Kennt jemand aus der Zeitschrift ELRAD den Beitrag zum Logiksimulator in Basic ???
Damals lief das Teil krückenlahm -weil die Rechner halt lahm waren und BASIC war Scheizze. Aber der Sourcecode ist immer noch State.Of.The.Art. Der lässt sich heute beliebig übertragen...
Siggi Natur ? :mrgreen:
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Radioaktive Logik ;) ...Basics....

Beitrag von herw »

KlangRaum hat geschrieben:Vermutlich kann sich unter dieser Überschrift keiner nix was vorstellen. Back to the roots....

Mal ein paar Links. Auf Wunsch gut geniessbar mit Milch&Keksen oder Wein&Cräcker... :mrgreen: *hehehehehe*

1.) http://de.wikipedia.org/wiki/Logikgatter
2.) http://de.wikipedia.org/wiki/Flipflop
3.) http://de.wikipedia.org/wiki/Monostabile_Kippstufe

Es geht dabei um Basics der Digitaltechnik. In Reaktor sind diese Schaltungen in dieser Form zwar nicht vorhanden (was ich sehr bedaure) aber trotzdem leich nachzubilden.

Ich mach jezze mal ein Fass auf für die Digitalfreaks, die mit J.Pütz gelernt haben: Die Schaltzeichen nach DIN 40700 (vor 1976) haben was absolut grooooofiges. Aber trotzdem: Hat jemand Lust an einer (Core)Bibliothek für Grundschaltungen mitzuarbeiten? Das ist eigentlich lockeres Futter... Wir könnten uns aber trotzdem über die Schnittstellendefinition kloppen.....


Gruss
Peter ::kaffee::


PS:
In den 70er hat mir meine Physik--Le*hehehehe*rin mal versucht ein UND-Gatter mit 4 Eingängen zu erklären: „Nur wenn Du den Schalter UND den Schalter UND den Schalter UND den Schalter drückst, nur dann geht das Birnchen an...“

Aber da leuchtete kein Birnchen. :(

Es wollte einfach nicht.

ALs diese quälend langweilige Doppelstunde dann endlich fast rum war, bin ich nach vorne gegangen und hab erstmal die Stromzufuhr für den Labortisch freigeschaltet und das Birnchen durfte endlich leuchten. Meine Eins war mir zwar sicher, aber ich sachma so: Mit Reaktor wär dat nich so passiert....


*hehehehehe*

PS2:

Kennt jemand aus der Zeitschrift ELRAD den Beitrag zum Logiksimulator in Basic ???
Damals lief das Teil krückenlahm -weil die Rechner halt lahm waren und BASIC war Scheizze. Aber der Sourcecode ist immer noch State.Of.The.Art. Der lässt sich heute beliebig übertragen...
Ich habe das Thema mal verschoben, da die Rubrik „Computer” sich mit der Hardware um REAKTOR beschäftigt.
Es gehört meiner Asicht nach in die Kategorie Core, da sich nur dort mit einfachen Mitteln Logikschaltungen verwirklichen lassen, ansonsten muss man tausend Fallstricke umgehen während der Initialisierung.
Um die zwei-wertige Logik brauchst du dich nicht zu kümmern; die habe ich schon vor ca. einem Jahr komplett zusammengestellt.
Könnte ich ja in der Fundgrube mal hochladen. Übrigens kann ich die logischen Schaltungen dynamisch verändern, also quasi modulieren.
logik.jpg
ciao herw
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Re: Radioaktive Logik ;) ...Basics....

Beitrag von KlangRaum »

So quasi als Nebenprodukt fallen bei mir in den nächsten Tagen solche Grundschaltungen an. Dabei gehts ua. auch um die Verknüpfung der Boolean'schen Signaltypen.... und anderen Typen.

Gruss
Peter
Siggi Natur ? :mrgreen:
Benutzeravatar
Triton
synthesist
Beiträge: 58
Registriert: 1. August 2010, 17:22
Wohnort: Gießen
Kontaktdaten:

Re: Radioaktive Logik ;) ...Basics....

Beitrag von Triton »

Ein direktes AND-Router-Makro dabei? Zwei Verleichs-Ins und ein Event-In rein und dann zwei Event-Outs raus. Event nach oben, wenn beide Bool-Ins true sind und sonst an den unteren out.
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Re: Radioaktive Logik ;) ...Basics....

Beitrag von KlangRaum »

Jo, sowas in dieser Art dünkt mir...... ::kaffee:: Ich bin zwar grade jetzt dabei mal wieder dabei einiges neues zusammenzubasteln, lade aber erst später ein entsprechendes .zip später hoch, wenn da mal eine grössere Sammlung zusammengekommen ist.
Herw hat geschrieben:Um die zwei-wertige Logik brauchst du dich nicht zu kümmern; die habe ich schon vor ca. einem Jahr komplett zusammengestellt.
Tnx.... aber ich brauche da überwiegend Gatter mit mehr als 2 Eingängen, diverse De-/Encoder, FlipFlops, Schieberegister etc. Da lohnt es sich wirklich mal eine Bibliothek zusammenzustellen, die sich an den bekannten TTL und CMOS Bausteinen orientiert. Hast Du da sowas schon?

Zuerst kommen mal einige Grundfunktionen in Boolean dran. Beim NOT fällt ja sofort der Unterschied auf, die eingebauten Logikfunktionen arbeiten Bitweise mit Signed Integer (Vorzeichenbehaftete Ganzzahl), während meine Macros als Boolean mit TRUE (1) und FALSE (0) arbeiten. Der Unterschied bei Signed Integer ist die komplementäre Darstellung bei : NOT(FALSE/0) wird im Ergebnis zu -1 und NOT(TRUE/1) wird zu -2, bei der boolean'schen (boolesche) Logik wird NOT(FALSE/0) zu TRUE/0 und NOT(TRUE/1) zu FALSE/0 ...Generell muss man in vielen Fällen das Signal durch ein originales AND(1) schicken um alle Bits bis auf das niederwertigste auszublenden (ausmaskieren). In einer irgendwie geartetet zukünftigen Reaktorversion würde ich mir ja wiegesagt solche Boolean-Funktionen gerne als direkte Corecell wünschen, möglicht mit einer dynamischen Anzahl Eingängen.

Gatter wie AND und OR sind eigentlich reine Fleissaufgaben mit der Maus, eine relativ einfache Sache und eigentlich ein reiner Formalismus -alle Gatter haben zusätzlich einen invertierenden NOT-Out.
(Nicht zu verwechseln mit dem Not-Aus, mit dem man das Internet abschalten kann) :mrgreen:

Abstrakt -besser gesagt: Absurd wirds zB: bei solchen Sachen wie dem XOR/XNOR mit mehr als 2 Eingängen... da beginnen allmählich diverse Verrenkungen -zumal es hier unterschiedlich definierte Varianten gibt wie Eingangsseitig nur 1 TRUE/FALSE oder grade/ungrade Anzahl TRUE und bevor man sich mit der Reaktor-eigenen Logik rumschlägt, nimmt man lieber gleich Tables.

......

Ich bin grad mein altes TTL & CMOS-Kochbuch (ein ;) Überbleibsel aus den tagen mit meinem Lötkolben) am durchblättern und überlege, wie weit ich diese Library treibe: Für bestimmte Gatterfunktionen, De-/Encoder, 7-Segment, BCD oder andere macht es ab einem bestimmten Punkt keinen Sinn mehr, die komplette Schaltung in einzelnen Gattern aufzulösen -da ist es wiegesagt einfacher über Tables eine vorcodierte Wahrheitstabelle auszulesen -vorallem spart es dann Rechenzeit. Ein spezielles Thema sind dann auch noch mal bistabile Kippstufen (FlipFlops) in ihren Variationen.... positive/negative Logik, steigende/fallende Flanke.... bestimmtes Timingverhalten

...so long... ::((::

PS: Mag jemand einen Teil übernehmen?
PS2: http://de.wikipedia.org/wiki/Boolesche_Variable
Siggi Natur ? :mrgreen:
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Re: Radioaktive Logik ;) ...Basics....

Beitrag von KlangRaum »

Hier mal mal Beispiel, wie man eine Logikfunktion über eine beliebige Wahrheitstabelle auflösen kann, was in vielen Fällen einfacher ist als die Funktion über einzelne Gatter aufzubauen:
Boolean Table.jpg
a1 ... a4 sind die Eingänge -Typ Integer. Diese werden zuerst mit AND(1) auf das niederwertigste Bit ausmaskiert. Danach werden sie mit ihrer Wertigkeit multipliziert und zu einer Summe zusammengefasst.
4 Bit ( der Fachmann sagt auch 1/5 Kasten dazu :mrgreen: ) ....diese 4 Bitburger ergeben in der Summe einen Wertebereich 0 ... 15. Die Table besitzt 16 Integer-Einträge, die über diesen Index dann jeweils ausgelesen werden.
Der Ausgang am READ spaltet sich nun in 3 Pfade: Für binäre Aussagen durchläuft er nochmals ein AND(1) zur Maskierung. Der obere Ausgang gibt diesen Wert direkt aus, für den not-Ausgang wird das Signal nochmals mit ADD(1)...AND(1) negiert.
  • NOT ist in dieser Form also immer eine Addition mit 1 -wobei der Übertrag mit AND(1) verworfen wird.
    Das AND(1) ist essentiell: Es stellt sicher, das nur Werte von 0 oder 1 (FALSE/TRUE) verarbeitet werden.
Der untere int-Ausgang kann benutzt werden, um beliebige Integerwerte auszugeben -zb für einen Konverter BCD nach Integer.

Für ein XOR (=1) mit 4 Eingängen benötigt man folgende Einträge in die Tabelle:

Code: Alles auswählen

Eintrag Wert
    0     0
    1     1
    2     1
    3     0
    4     1
    5     0
    6     0
    7     0
    8     1
    9     0
   10     0
   11     0
   12     0
   13     0
   14     0
   15     0
Für einen BCD-Konverter trägt man folgendes ein - die Werte werden diesmal dann am int-Ausgang abgegriffen:

Code: Alles auswählen

Eintrag Wert
    0     0
    1     1
    2     2
    3     3
    4     4
    5     5
    6     6
    7     7
    8     8
    9     9
   10     10
   11     11
   12     12
   13     13
   14     14
   15     15
Es ist relativ einfach diese Struktur um x Bits zu erweiteren, natürlich muss die Tabelle entsprechend dimensioniert werden.

Hätte diese Tabelle nun 256 Einträge, dann könnte man natürlich noch einen Index multipliziert mit einem Offset von 16 aufaddieren und hätte quasi 16 unterschiedliche Logikfunktionen in einem Macro:
Boolean Table 2.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von KlangRaum am 26. Februar 2011, 04:35, insgesamt 3-mal geändert.
Siggi Natur ? :mrgreen:
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Re: Radioaktive Logik ;) ...Basics....

Beitrag von KlangRaum »

Hier eine andere Variante eines BCD to INT-Konverter ohne Tabelle. Die Pseudotetrade -also Werte >9 -werden ebenfalls gewandelt:
BCD to INT.jpg
Die Bits werden wieder ausmaskiert, nach ihrer Wertigkeit multipliziert und aufsummiert.

...Und das Gegenstück INT to BCD:
INT to BCD.jpg
Die Bits werden nach ihrer Wertigkeit ausmaskiert und jeweils um n Stellen auf die niederwertigste Position nach RECHTS geschoben

Gruss
Peter

...Sooo.... s' is schon früh spät... verzeiht mir evtl. Tipfleher... ;) Abä jezze gibbs ersma Madrrazznhorchdienst
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Siggi Natur ? :mrgreen:
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Radioaktive Logik ;) ...Basics....

Beitrag von herw »

Ich gebe mal hier meinen Vorschlag zur Diskussion.
Ich finde, dass die Lösung mit der Tabelle auf halbem Ideenweg stehenbleibt. Für jede der Logikfunktionen müsste man dann eine Tabelle anlegen. Das kann REAKTOR automatisch (ohne Tabelle) und viel einfacher:
4LV-1.jpg
Das Makro Mask habe ich von NIs Logikmodulen abgekupfert, entspricht aber der oben erwähnten Maskierung.
4LV-2.jpg
Der Clou ist, dass die verwendete Logikfunktion nur von einer gewählten Zahl n abhängt!
n=32768 entspricht a1 AND a2 AND a3 AND a4
n=65534 entspricht a1 OR a2 OR a3 OR a4
n=256 entspricht a1 XOR a2 XOR a3 XOR a4 XOR
usw.

Ich überlasse es mal euch, den Trick zu durchschauen und die Kennzahlen anderer Logikfunktionen herauszufinden.
Für mehr Eingänge geht es entsprechend.

ciao herw
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Re: Radioaktive Logik ;) ...Basics....

Beitrag von KlangRaum »

Eine weitere Variante der Boolean Table ist ein BCD zu 7Segment-Umsetzer. Die typische LED-Anzeige lässt sich zwar sehr elegant per Multipicture und einigen Grafiken umsetzen, ist aber uU. nicht ganz so flexibel wie eine diskrete Löung mit binärer Logik

Hier die Anordnung und typische Kennzeichnung einer 7-Segment Anzeige:
LED7Segment.jpg
Das Macro mit der Table:
7Segment Codierer.jpg
Man kann entweder über die Eingänge a1...a4 einen BCD-Wert bitweise einspeisen oder über int wieder einen „Pointer“ an die Table geben.
int ist diesmal noch nicht ausmaskiert -abhängig von dem was man anzeigen möchte- die Wertebereiche 0...9 & A,b,c,d,E,F, der Dezimalpunkt, ein Minuszeichen, Sonderzeichen, etc...... ergeben sich je nach Grösse der Tabelle unterschiedliche Werte für eine Bitmaske. Drauf verzichten sollte man nicht, indizierte Speicherzugriffe ausserhalb des deklarierten Bereich sind undefiniert.
Benutzt man nur die Wertebereiche 0...9 & A,b,c,d,E,F ohne Punkt, so benötigt die Tabelle n=16 Einträge und der Maskenwert beträgt n-1 -also 15 - Tables beginnen immer mit Eintrag Nummer Null....

Die entsprechende Wahrheitstabelle ist folgendermaßen aufgebaut: Im Block AND/BIT-SHIFT in der rechten Bildseite lässt sich für jedes Segment eine Wertigkeit ablesen:

Code: Alles auswählen

Segment  Wert
    a     1
    b     2
    c     4
    d     8
    e    16
    f    32
    g    64
    dp  128
Um ein beliebiges Symbol darzustellen, addiert man die Wertigkeit der entprechenden Segmente:
Bei einer 2 werden die Segmente a,b,g,e,d angesteuert -der Wert dazu beträgt 91.

Hier die Liste für die Symbole 0...9 & A,b,c,d,E,F -also für die übliche Hexadezimale Darstellungsweise:

Code: Alles auswählen

Symbol Eintrag Nr.  Wert
   0      0         ->  63
   1      1         ->   6
   2      2         ->  91
   3      3         ->  79
   4      4         -> 102
   5      5         -> 109
   6      6         -> 125
   7      7         ->   7
   8      8         -> 127
   9      9         -> 111
   A     10         -> 119
   b     11         -> 124
   c     12         ->  88
   d     13         ->  94
   E     14         -> 121
   F     15         -> 118
Um den Dezimalpunkt dp anzuschalten muss man jeweils noch mal 128 addieren....

Von hier aus ist es nicht mehr weit hin sich eine 5x7-Textmatrix mit evtl 8 Zeichen aufzubauen.
Man muss es ja nicht gleich übertreiben und einen 256x256-RGB-Screen für Pong oder PacMan zusammenbasteln... :mrgreen:
Aber man sieht an diesem Beispiel sehr gut, wie Binär- und Integerarithmetik ineinander greifen.

Es gibt einen entsprechenden 74xx-IC, der diese Decodierung erledigt -der 74LS47/74HC47 etc.... und so sieht der aus:

Bild

Gruss
Peter
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Siggi Natur ? :mrgreen:
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Re: Radioaktive Logik ;) ...Basics....

Beitrag von KlangRaum »

herw hat geschrieben: Ich überlasse es mal euch, den Trick zu durchschauen und die Kennzahlen anderer Logikfunktionen herauszufinden.
Für mehr Eingänge geht es entsprechend.
...
Ich finde, dass die Lösung mit der Tabelle auf halbem Ideenweg stehenbleibt.
Die Idee ist nicht schlecht.... Ganz dunkel hab ich etwas ähnliches in Erinnerung, ich muss mal danach graben....
Es gibt aber auch sehr viele Fälle (wie der BCD-Umsetzer) die sich mit so einem Reihen-Algorithmus nicht abbilden lassen. Oder Ablaufsteuerungen, die über einen Speicherbereich auch gewissermassen ein Timing abbilden. Man muss überlegen was letztendlich der effektivsteWeg ist, bei komplexen Funktionen spielt auch die Transparenz des Algorithmus eine Rolle. Bei einer gemischten Verknüpfungsmatrix kommt man damit jedoch sehr schnell an eine Grenze und würfelt seine Funktion solange bis sie stimmt....

Gruss
Peter
Siggi Natur ? :mrgreen:
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Radioaktive Logik ;) ...Basics....

Beitrag von herw »

KlangRaum hat geschrieben:
herw hat geschrieben: Ich überlasse es mal euch, den Trick zu durchschauen und die Kennzahlen anderer Logikfunktionen herauszufinden.
Für mehr Eingänge geht es entsprechend.
...
Ich finde, dass die Lösung mit der Tabelle auf halbem Ideenweg stehenbleibt.
[...]Bei einer gemischten Verknüpfungsmatrix kommt man damit jedoch sehr schnell an eine Grenze und würfelt seine Funktion solange bis sie stimmt....

Gruss
Peter
nö, gib mir die Wahrheitstabelle und ich sage dir die Kennziffer n!
::kaffee::
Benutzeravatar
KlangRaum
synth guru
Beiträge: 647
Registriert: 1. August 2006, 12:55

Re: Radioaktive Logik ;) ...Basics....

Beitrag von KlangRaum »

Dann lös mal den BCD-Codierer auf... 8 ) ::kaffee::
Siggi Natur ? :mrgreen:
Benutzeravatar
herw
moderator
Beiträge: 3122
Registriert: 13. März 2006, 18:28
Wohnort: Dortmund

Re: Radioaktive Logik ;) ...Basics....

Beitrag von herw »

KlangRaum hat geschrieben:Dann lös mal den BCD-Codierer auf... 8 ) ::kaffee::
wieso, da hast du doch schon eine einfache Variante ohne Tabelle angegeben, die eine Integerziffer in die Binärdarstellung umwandelt.

Es ging bei meiner Lösung um 4-fach-Logik, also vier Logik-Eingangswerte liefern einen Wahrheitswert, oder meintest du den BCD->Segment-Umsetzer? Das ist nicht schwer.
Die Kennziffer für das Segment a lautet z.B. n=18413.
Antworten