PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umwandlung in NAND und NOR


Xinor
2004-05-10, 17:59:48
Kann mir bitte mal einer erklären wie man zB

a*b+c*d oder a*b*c+b*c in NAND und NOR Form umwandelt. Ich bekomms einfach net raus. Hoffe einer kann da helfen.

Binaermensch
2004-05-10, 19:15:24
Was meinst du mit NAND- und NOR-Form?

mirp
2004-05-10, 19:31:55
Durch Anwendung der De Morganschen Gesetze lassen sich die Terme umformen.

comp(a+b) = comp(a) * comp(b)
comp(a*b) = comp(a) + comp(b)

Für das Komplement von a habe ich hier comp(a) geschrieben.

a AND b = comp(comp(a) OR comp(b))
= comp(a) NOR comp(b)

a OR b = comp(comp(a) AND comp(b))
= comp(a) NAND comp(b)
Die Umformung von AND → NAND und OR → NOR geschieht über Komplementbildung.
a AND b = comp(comp(a AND b))
= comp(a NAND b)

a OR b = comp(comp(a OR b))
= comp(a NOR b)

Xinor
2004-05-10, 20:07:35
Schonmal thx, aber schlauer bin ich immer noch net.

zB a*a. Die Umrechnung zur NAND Form ist :

(!=nicht also zB !a = nicht a)

a*a = !( !(a*b) * !(a*b))
In der NAND Form darf kein + ( das ist OR) sein und in der NOR Form darf kein * ( das ist AND) sein. Und aus dem Folien die ich hier hab, werde ich einfach net schlau. Es soll ja net schwer sein, aber ich verstehs trozdem net :(

mrdigital
2004-05-10, 20:15:02
google mal nach deMorgan Theorem... das sind zwei Sätze und wenn du die beide anwendest, dann kommst auf deine Umwandlungsform, aber mirp hat das eigentlich schon schön beschrieben.

mirp
2004-05-10, 20:20:58
Hast du dich verschrieben? a*a würde ich anders in NAND umformen.

a*a = !(!(a*a))

Eigentlich habe ich oben alles anfgezählt. Da steht, wie man AND und OR in NAND (bzw. NOR) umformen kann. Das wendet man dann auf alle Teile an. Da bleibt dann keine andere Operation übrig.

Xinor
2004-05-10, 20:33:16
Hm, na gut wenn ihr mein dass das die Regeln sind.
Ich muss mal endlich diese Schaltungen ins Hirn bekommen :D

a*b*c+b*c = a*b*!(!c*!b)*c stimmt das ??
Irgendwie ist mir das zu einfach...
Sry, bin irgendwie zu dumm :/

mirp
2004-05-10, 21:13:17
a*b*c + b*c = !(!(a*b*c)) + !(!(b*c)
= !(!(!(!(a*b*c))) * !(!(!(b*c)))
= !( !(a*b*c) * !(b*c) )
Wie viele Eingänge dürfen denn die Gatter haben? Hier habe ich auch ein NAND mit drei benutzt. Das könnte man aber auch noch aufsplitten.

(a*b)* c = !(!(a*b)) * c
= !(!(!(!(a*b)) * c))
= !( !(a*b) * c)

!(a*b*c) = !( !( !(a*b) * c))

Xinor
2004-05-10, 21:16:24
Das erste ist schon ok. Jetzt muss ich nur noch genau kapieren was du gamcht hast und die Aufgaben lösen :D
Aber thx, dass hat mir jetzt schon viel weiter geholfen. Supi :D

Pinoccio
2004-05-10, 21:30:05
Original geschrieben von mirp
a*b*c + b*c = !(!(a*b*c)) + !(!(b*c)
= !(!(!(!(a*b*c))) * !(!(!(b*c)))
= !( !(a*b*c) * !(b*c) )

(a*b)* c = !(!(a*b)) * c
= !(!(!(!(a*b)) * c))
= !( !(a*b) * c)

!(a*b*c) = !( !( !(a*b) * c))

Hm, IMHO geht die Diskussion etwas an der Aufgabenstellung vorbei. Es geht darum, das man alle (logischen) Formeln, also in gewissem Sinne auch Logikhardware aka Prozessoren NUR aus NAND- und NOR-Verknüpfungen bzw. -Gattern aufbauen kann. Beweistechnisch geschieht das über Induktion über den Formelaufbau. Deshalb funktioniert wohl auch mirps Ansatz nicht, da er das NICHT seperat verwendet.
In etwa so:
a ODER b = (a NAND a) NAND (b NAND b)
Und in Bezug auf die Ha-Regeln: der Rest bleibt dem Leser überlassen ...
Mir persönlich hilft dann immer der Blick auf die Wertetabelle.

mfg Sebastian

PS: Woher ich dass weiß? Meine letzten Hausaufgaben, die ich machen musste ...
Das Aufgabenblatt (http://users.math.uni-potsdam.de/~raesch/UebungsblattLogik/MaLo2.pdf)

mirp
2004-05-10, 21:42:54
Ja, die Negation habe ich hier mal rausgelassen und nicht umgewandelt. Je nachdem wie man die Schaltung entwickelt, liegen Variablen auch schon negiert vor. Wenn man sofort alles umwandelt, wird die Schaltung vielleicht komplizierter, als es nötig wäre.

Aber du schon recht. Korrekterweise hätte ich die Negation auch noch mit einbeziehen sollen, da es hier ja nur um die Formeln ging.

GloomY
2004-05-11, 15:43:59
Oink :bonk:

Warum sagt mir niemand, dass '*' = AND und '+' = OR? Ich versuch' seit einer Viertelstunde das hier gepostete nachzuvollziehen, kam aber nicht dahinter. ;)

Die Negation einer Variablen A kann man ja leicht mit A NAND A bzw. A NOR A bilden (je nachdem, ob man nur NANDs oder nur NORs haben möchte).

Ansonsten hat mirp ja schon alles wichtige gesagt...

Pinoccio
2004-05-11, 19:28:05
*ggg* Ich habe auch überlegt, * als UND und + als ODER ist ja nicht abwegig, 1*1=1=1 UND 1 etc, aber halt sehr ungewöhnlich. Kann mann dem Forum bzw der Forensoftware die LATEX-Syntax beibringen? Und dann vielleicht noch ein extra Mathe-(Unter-)Forum aufmachen? Ich hätte da ab und zu auch mal 'ne Frage ...

mfg Sebastian