Frage zu logischen Verknüpfungen/Schaltungen

metalstore

Software-Overclocker(in)
Frage zu logischen Verknüpfungen/Schaltungen

Hi alle miteinander :)
(sollte das hier im falschen Forum stehen, so wäre es nett, würde ein Moderator diesen Thread an die richtige stelle schieben :) )
ich habe, wie im Titel schon erwähnt, eine Frage zu logischen Verknüpfungen.
So haben wir die Aufgabe, mit Hilfe von 3 Leitungen, den logischen Schaltungen und einer 7-Segment-Anzeige die Zahlen von 0 bis 7 anzeigen zu lassen.
Die Tabelle (wenn nötig, kann ich sie ja mal hier hinzufügen) habe ich ohne Probleme ausfüllen können (welches Segment muss für welche Zahl aufleuchten), allerdings weiß ich nicht, wie ich feststellen/herausfinden kann, wie/mit welchen Gattern/Schaltungen ich die einzelnen Leitungen verbinden muss.
Wäre nett, wenn mir da jemand helfen/was erklären könnte (Die verschiedenen Schaltungen [mit Inverter und Negationspunkt] sind mir eigentlich bekannt).
Gruß
metalstore

Edit: zur Zeit verwenden wir LogikSim 0.6.4 und bauen uns die 7-Segment-Anzeige selbst
 
Zuletzt bearbeitet:
AW: Frage zu logischen Verknüpfungen/Schaltungen

Also mit "die Tabelle" meinst du wohl eine der Form:
Code:
A0 A1 A2 | S0 S1 S2 S3 S4 S5 S6
0  0  0  | 1  1  1  1  1  1  0
...
Wobei A0 bis A2 deine Eingangssignale sind und S0 bis S6 deine Ansteuersignale für die SiebenSegmentanzeige. Wenn der (normal binär codierte) Input 0 ist, leuchten alle Segmente, bis auf das mittlere auf.

Die Vorgehensweise ist jetzt am Besten folgende: Du stellst für jeden Ausgang Sn eine Gleichung auf, die du dann mit Logikgattern nachbauen kannst. Es wäre jetzt hilfreich, wenn du die Tabelle komplett postest, dann zeig ich dir das an dem Beispiel, wie das geht.

Grüße
 
ja, genau das meinte ich mit Tabelle, wieso, gibt es dafür einen anderen/"richtigen" Ausdruck? :)
bin grade erst die Tür reingekommen, sobald ich Zeit hab, photographier ich mal die Tabelle ab :)
Edit: hoffe, man kann alles erkennen :)


image-3058530103.png
 
Zuletzt bearbeitet:
AW: Frage zu logischen Verknüpfungen/Schaltungen

Jau, kann man alles erkennen.
Ich weiß nicht, ob das Verfahren, was ich benutzen würde zu "overpowered" ist, aber es ist auf jeden Fall systematisch und recht gut. Also:
Wie bereits gesagt, machst du das Spalte für Spalte. In diesem Beispiel gucke ich mir die Spalte a_3 an. Also der Ausgang, der das rechte obere Segment ansteuert. Ich gehe jetzt _ganz_ stumpf vor, d.h. manches scheint doof, aber später kann man das ganze noch vereinfachen. Man sucht sich jetzt die sog. "Minterme" raus (der Begriff kann dir egal sein). Was das heißt: Man sucht sich jetzt die Zeilen raus, in der unser Ausgang eine 1 ist. Das wären ja 0,1,2,3,4 und 7. Aus den Zeilen suchen wir jetzt unsere Eingänge raus, die wir UND verknüpfen. Fangen wir bei Zeile 0 an (wir ignorieren den Eingang x_3, da der ja eh immer 0 ist):
Also in Zeile 0 sind unsere Eingänge x2=0, x1=0, x0=0. Wir möchten jetzt gerne eine "Schaltung", die uns true liefert, wenn diese Eingänge genau diese Zustände haben. Das bekommen wir hin, indem wir alle Zustände negieren und dann UND verknüpfen:
NICHT(x2) UND NICHT(x1) UND NICHT(x0)
Ich werde jetzt immer eine kürzere Schreibweise benutzen, wo ich UND durch * und NICHT durch ! ersetzen werde. Also:
!x2 * !x1 * !x0
Das ist jetzt ein sog. Minterm. Wir suchen jetzt die Minterme der anderen Zeilen raus und ODER verknüpfen die (ich kürze ODER mit + ab).
Ich mach nochmal weiter für Zeile 1:
!x2 * !x1 * x0 (Hinweis: x0 ist hier nicht negiert, weil der Eingang ja 1 ist).
Wenn wir das für alle Zeilen machen und jeweils ein ODER dazwischen klatschen, kommt das raus:
(!x2 * !x1 * !x0) + (!x2 * !x1 * x0) + (!x2 * x1 * !x0) + (!x2 * x1 * x0) + (x2 * !x1 * !x0) + (x2 * x1 * x0)
Ich hoffe du kannst nachvollziehen, wie ich darauf komme. Das sind jetzt unsere 6 Minterme (für unsere 6 Zeilen in denen a3 1 ist). Da hätten wir jetzt schonmal ein Reihe von Verknüpfungen, die du in Logiksim aufbauen könntest. Aber irgendwie noch ein wenig kompliziert oder?
Daher können wir jetzt vereinfachen. Und zwar können wir Minterme zusammenfassen, die sich nur in einem Eingang unterscheiden. Nehmen wir z.B. den 0. und 1. Minterm:
(!x2 * !x1 * !x0) sowie (!x2 * !x1 * x0)
Die beiden Minterme unterscheiden sich nur in x0 (einmal negiert und einmal nicht). Die beiden können wir zusammenfassen, indem wir den unterschiedlichen Eingang einfach weglassen. Also wären die beiden zusammengefasst:
(!x2 * !x1)
Das können wir jetzt auch mit dem 2. und 3. Term von oben machen:
(!x2 * x1 * !x0) sowie (!x2 * x1 * x0)
unterscheiden sich wieder nur in x0. D.h. zusammengefasst: (!x2 * x1).

Wir schreiben jetzt erstmal die zusammengefassten Terme in unsere Gesamtgleichung:
(!x2 * !x1) + (!x2 * x1) + (x2 * !x1 * !x0) + (x2 * x1 * x0)
Die beiden letzten Terme wurden von oben übernommen, weil die sich erstmal nicht vereinfachen lassen. Wir sehen jetzt, dass unsere beiden gerade vereinfachten Terme sich wiederrum miteinander vereinfachen lassen:
(!x2 * !x1) sowie (!x2 * x1) unterscheiden sich ja auch nur in einem Eingang. Vereinfach also:
(!x2)

Wieder in der Gesamtgleichung:
!x2 + (x2 * !x1 * !x0) + (x2 * x1 * x0)
Ich hoffe du konntest soweit folgen, auch wenn das vermutlich ne Menge neuer Stoff ist ;)
Du könntest dir jetzt schon eine "recht" einfache Verknüpfung aufbauen. Jetzt kann man sich noch herleiten, dass das x2 in den beiden hinteren Termen irgendwie sinnlos ist, also kann man das auch noch weglassen. Also ist unsere Endgleichung (jetzt in alter schreibeweise):
NICHT(x2) ODER (NICHT(x1) UND NICHT(x0)) ODER (x1 UND x0)
Das musst du jetzt nurnoch aufbauen. D.h. du brauchst ein ODER Gatter mit 3 Eingängen und 2 UND Gatter mit je 2 Eingängen. Außerdem noch zwei NOT Gatter.


Hoffe ich konnte helfen :) Sonst frag nach!

Grüße
 
Danke erstmal für die Hilfe und das Beispiel :daumen:
Werde das gleich mal für alle Ausgänge "durchrechnen" und dann am Rechner nachprüfen :)
Edit: für mein Ausgang 1zB habe ich folgende Schaltung: x1 + (x2 * x0) + (!x2 * !x0)
Kann mann das noch irgendwie vereinfachen? :)
Edit 2: habe festgestellt, dass mann die beiden letzten Terme zu einem negierten xor Gatter zusammenfassen kann :)
 
Zuletzt bearbeitet:
Habe das mal noch für 4 Leitungen/ 16 Zeichen gemacht und habe eine (meiner Meinung nach) einfachere und effektivere Methode verwendet, kann sie ja bei Bedarf mal hier erklären :)
 
AW: Frage zu logischen Verknüpfungen/Schaltungen

Sorry, habe deine Edits nicht gesehen..
Ja genau, oft kann man noch Krams per XOR zusammenfassen. Oder auch aus der Klammer rausziehen. Lustigerweise verhalten sich UND und ODER genauso wie * und + in der abkürzenden Schreibweise. Also:
(a * b) + (a * c) ist gleich a *(b+c)

Erklär aber ruhig deine methode!
 
Ja, das mit Und und ODER habe ich nach kurzer Zeit auch festgestellt :)
"Meine" Methode: ich habe mir jeweils nur die Leitungen x und y für alle 16 Zeichen angesehen (habe die Leitungen x3, x2, x1, x0 in t, w, x, y "umbenannt"), dann einfach mit t bzw nicht(t) und w bzw nicht(w) per UND verbunden und dann die einzelnen Abschnitte per ODER verbunden und dann was ging vereinfacht :)

ForumRunner_20140127_181558.png



ForumRunner_20140127_181706.png

Das rote auf dem zweiten Blatt war einfach nur die Anwendung der beiden De-Morgan-Regeln :)
 
Zuletzt bearbeitet:
AW: Frage zu logischen Verknüpfungen/Schaltungen

wie kann man eigentlich einen "binären Zähler" bauen
also dass ich quasi auf einen Schalter drücke und dann die Leitungen in der richtigen Reihenfolge angesprochenwerden? :)
 
AW: Frage zu logischen Verknüpfungen/Schaltungen

Für Zähler braucht man ja irgendeine Art von "Gedächtnis", um sich den vorherigen Zählerstand zu merken.
Das macht man über sog. FlipFlops. Das sind geschickt rückgeschaltete Verknüpfungen, die sich ein Bit merken können.
Das Zählen ist dann nurnoch eine Logik Sache...
 
Zurück