Forum: Mikrocontroller und Digitale Elektronik De Morgan Gesetze unklar


von Helpme91 (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein Verständnis problem.

Die Gesetze von De Morgan besagen ja nichts anderes als, das eine 
Schaltung mit NAND oder NOR realisiert werden kann.

Also:

(A*B)nicht = (A nicht)+(B nicht) und umgekehrt.

Wenn ich nun z.B. folgenden Term umwandeln möchte:

x = (a nicht)*(b nicht) + A*B + C + D

dann muss nach der doppelten negation aus UND wieder ein ODER werden.
Laut wiki ist dann alles nur mehr UND (siehe Link)??

Link:"https://de.wikibooks.org/wiki/Digitale_Schaltungstechnik/_Realisierung_mit_NAND";

von René F. (Gast)


Lesenswert?

DeMorgan besagt das ein eingangsinvertiertes UND einem 
ausgangsinvertiertem ODER gleicht, ergo ein UND mit Invertierung am Ein- 
und Ausgang entspricht einem ODER

von Vancouver (Gast)


Lesenswert?

DeMorgan besagt, dass Du aus ODER UND und aus UND ODER machen kannst, 
genau dann wenn Du den gesamten Ausdruck und die einzelnen Terme 
negierst. Anschließend kannst Du das Gesetz auch auf die Teilterme 
anwenden.


x = ~a*~b + A*B + C + D
  = ~(~(~a*~b) * ~(A*B) * ~C * ~D)     | DeMorgan auf den Gesamtausdruck
  = ~((a+b) * (~A+~B) * ~C * ~D)        | DeMorgan auf den Einzeltermen

von Boris O. (bohnsorg) Benutzerseite


Lesenswert?

Helpme91 schrieb:
> x = (a nicht)*(b nicht) + A*B + C + D
>
> dann muss nach der doppelten negation aus UND wieder ein ODER werden.
> Laut wiki ist dann alles nur mehr UND (siehe Link)??

Der Term ist zusammengesetzt und zuvorderst darfst du auch die Zeichen & 
und | verwenden (oder ^ und u). Ansonsten schlägt noch die Reihenfolge 
der Operatoren zu, demnach muss & zuerst gemacht werden und dann ist die 
Reihenfolge der Klammern. !a | !b & c muss ja nicht vollständig 
umgewandelt werden, !(a & b) & c genügt vollauf.

von Falk B. (falk)


Lesenswert?


von Helpme91 (Gast)


Lesenswert?

Ich verstehe einfach nicht, was genau die doppelte Negation macht.
Bei der doppelten Negation gibt es doch zwei Striche, was macht welcher 
nun?

Wenn ich nun diesen Ausdruck habe:

x = ~a*~b + A*B + C + D

und dann doppelt Negiere, was verändert der erste Strich und was der 
zweite an der Funktion?

Genau hier stehe ich an, da ich nicht verstehe welcher Strich nun was in 
der Funktion ändert.

MfG & Danke!!

von Falk B. (falk)


Lesenswert?

@Helpme91 (Gast)

>Ich verstehe einfach nicht, was genau die doppelte Negation macht.

Sie ändert die Gleichung ohne das Ergebnis zu ändern ;-)

>Bei der doppelten Negation gibt es doch zwei Striche, was macht welcher
>nun?


>Wenn ich nun diesen Ausdruck habe:

>x = ~a*~b + A*B + C + D

>und dann doppelt Negiere, was verändert der erste Strich und was der
>zweite an der Funktion?
1
x = ~a*~b + A*B + C + D      // Ausgangsgleichung
2
3
~~x =~~( ~a*~b + A*B + C + D)  // Beide Seiten doppelt negieren
4
5
x =~( ~(~a*~b) * ~(A*B) * ~C * ~D)  // nur eine Invertierung nach Demorgan auflösen, Eingänge negieren, aus ODER (+) wird UND (*), doppelte Negation von X hebt sich auf

Am Ende besteht die gesamte Schaltung nur aus NAND-Verknüpfungen und 
kann somit mit nur einem Gatter- bzw. IC-Typ aufgebaut werden.

von Boris O. (bohnsorg) Benutzerseite


Lesenswert?

Helpme91 schrieb:
> und dann doppelt Negiere, was verändert der erste Strich und was der
> zweite an der Funktion?

Naja doppelte Negation ist ein bisschen schwammig. Es ist kein !(!a), um 
a auszudrücken. Aber !a & !b ist gleichbedeutend mit !(a | b), malst du 
die Wertetabelle für beide Fälle hin. Das Ziel ist Klammern streichen 
(weil alles & oder | ist) oder nur mit einer Schaltung arbeiten zu 
können.

Mir gefällt der Teil mit den Klammern besser, weil es das Potenzial zur 
Vereinfachung bietet. Ein | hat ja viel mehr wahre Ausgänge und damit 
lässt sich schneller entscheiden (Breite). Ein & hat viel weniger wahre 
Ausgänge und schränkt viel besser ein (Tiefe).

von Helpme91 (Gast)


Lesenswert?

Warum wird aus diesem UND kein ODER?

(~a*~b) * ~(A*B) => (~a+~b) * ~(A+B) ??

Danke für eure Hilfe!!

von Falk B. (falk)


Lesenswert?

@Helpme91 (Gast)


>Warum wird aus diesem UND kein ODER?

>(~a*~b) * ~(A*B) => (~a+~b) * ~(A+B) ??

Weil das was du da aufgeschrieben hast schlicht falsch ist ;-)

DeMOrgan geht NICHT verkettet bis in Teilterme! Das geht NUR auf der 
oberen Ebene, die Teiltermen muss man dann wieder einzeln betrachten!

(~a*~b) * ~(A*B) => ~(~a*~b) + (A*B)  // DeMorgen für die 
Gesamtgleichung, Teilterme bleiben im inneren konstant!

(~a*~b) * ~(A*B) => (a+b) * ~(~A+~B)  // DeMorgen nur für die Teilterme

(~a*~b) * ~(A*B) => ~(a+b) + (~A+~B)  // DeMorgen nur für die Teilterme 
und Gesamtterm

von Helpme91 (Gast)


Lesenswert?

Hier ein Beispiel was mit NOR realisiert werden soll:


x = (a+b)  a  (~b+~c) *d  //Doppelt Negiert

x = ~~((a+b)  a  (~b+~c) *d)  //DeMorgan

x = ~(~(a+b) + ~a + ~(~b+~c) + ~d)  //Lösung


Wenn ich das Richtig verstanden habe, dann wird von der doppelten 
Negation nur der erste Strich verwendet um mit DeMorgan eine negation 
durchzuführen.
Der zweite Strich sagt nur, das der gesamte Ausdruck nochmal negiert 
wird.

Stimmt das so?

MfG

von Falk B. (falk)


Lesenswert?

@  Helpme91 (Gast)

>Hier ein Beispiel was mit NOR realisiert werden soll:

Die Autoformatierung hat dein * gefressen. Das kann man verhindern, wenn 
man den Text mit [ pre ] [ /pre ] (ohne Leerzeichen) einfaßt.
1
x = (a+b) * a * (~b+~c) * d      // Ausgangsgleichung
2
3
x = ~~((a+b) * a * (~b+~c) * d)  // Doppelt negiert
4
5
x = ~(~(a+b) + ~a + ~(~b+~c) + ~d)  // Lösung, eine Negation nach DeMorgan aufgelöst

>Wenn ich das Richtig verstanden habe, dann wird von der doppelten
>Negation nur der erste Strich verwendet um mit DeMorgan eine negation
>durchzuführen.

Ja.

>Der zweite Strich sagt nur, das der gesamte Ausdruck nochmal negiert
>wird.

Ja.

von Helpme91 (Gast)


Lesenswert?

Danke!!

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.