Volladdierer Xor-Gatter statt And- und Or-Gatter

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hi!
Ich habe mich nun endlich mal ein bisschen mit ktechlab befasst.
nun wollte ich einen Volladdierer entwerfen.
Nach Quine und Mcklusky hat das auch wunderbar geklappt.
War mir aber noch zuviel Logik.
Anschliessend habe ich es mit KV-Diagrammen versucht.
Das selbe Ergebnis.
Bin dann im Internet ueber dieses PDF gestolpert.

Mein Ergebnis war:
s= a+b+cin+abcin
cout=ab+bcin+acin+abcin ->nach Mcklusky(also nur dominante Therme nehmen)->cout=ab+bcin+acin

Die Formel im PDF arbeitet mit Xor, und kommt mit nur 5 Gattern aus.
Meine Formel braucht schon alleine fuer das Cout 5 Gatter.
Meine Frage ist nun:
Abgesehen vom scharfen Hinsehen, wie ist man auf diesen Sprung gekommen?
Denn Xor mit And und Or bzw Nand und Nor Logik dazustellen ist so eine Sache.
mfg

sw33t
 
Naja, ein Volladdierer addiert ja drei Bit (a,b,c) auf eine 2-Bit Zahl (s, cout)
Da liegt es nahe, zuerst zwei der Eingabebit mit einem Halbaddierer zu addieren:
HA(a,b) -> (s_0,cout_0)
Das Ergebnis (s_0,cout_0) kann ja maximal den Wert 2, also (1,0) haben. Man kann also noch einen Halbaddierer auf die Summe s_0 und c anwenden:
HA(s_0,c) -> (s,cout_1)
Der Übertrag kann entweder aus cout_0 oder cout_1 stammen, also cout_0 XOR xout_1.
Da (cout_0,cout_1) = (1,1) nicht auftreten kann, ist dieser Zustand eine Redundanz und daher kann cout vereinfacht werden zu:
cout = cout_0 OR cout_1

Halbaddierer funktionieren ja so:
s = a XOR b
cout = a AND b

Jetzt musst du die Formeln nur noch in den Volladdierer einsetzen:
s = s_0 XOR c = (a XOR b) XOR c
cout = cout_0 OR cout_1 = (a AND b) OR (s_0 AND c) = (a and b) OR ((a XOR b) AND c)

Damit hast du die gesuchte Form.

mfg, metax.
 
Zurück
Oben