2016-10-07 3 views
1

Im Bild mit Oben-Schaltung ist Summe der Produkte
= (B '+ D') (A + D) (A + C)Baukonstruktion Schaltung nur NAND- und NOT GATES

während des Bildes unten ist mein Versuch, nur NAND- und NOT-Gatter zu verwenden. Aber meine Sinne sagen mir, dass ich es falsch mache. Bitte helfen Sie!

My Attempt

+0

Welches Werkzeug haben Sie das Schema erstellen verwenden? –

Antwort

0

Sie können alle UND-Gatter mit NAND-Gatter ersetzen und nur das Ergebnis zunichte machen. Ich kann sehen, dass Sie die Eingänge negiert, was falsch ist, weil:

(ab)' != a'b' 

Als Beispiel darüber nachdenken, Signale (a, b) = (1, 0). Wenn Sie sie negieren und Ausgabe berechnen, erhalten Sie 0. Wenn Sie zuerst berechnen und dann ausgegeben negieren, erhalten Sie 1.

Über das ODER-Gatter:

a + b + c -> ((a + b + c)')' -> (a'b'c')' 

So ODER-Gatter ist das NAND-Gatter mit allen Signalen verneint.

0

Die erste Schaltung implementiert tatsächlich

AD + AC + B'D' http://latex.codecogs.com/gif.download?AD%20+%20AC%20+%20%5Cbar%7BB%7D%5Cbar%7BD%7D

, die diese Schaltung:

AD + AC + B'D'

De Morgan's Laws Unter Verwendung dieses zu

entspricht ((AD)'(AC)'(B'D')')' http://latex.codecogs.com/gif.download?%5Coverline%7B%5Coverline%7BAD%7D%5Ccdot%5Coverline%7BAC%7D%5Ccdot%5Coverline%7B%5Cbar%7BB%7D%5Cbar%7BD%7D%7D%7D

, welche diese Schaltung:

((AD)'(AC)'(B'D')')'

Dieses Python-Programm verwendet werden kann, um die Schaltungen zu vergleichen:

import itertools 
# Create all the possible input combinations 
x = (True, False) 
comb = set(itertools.product(x, x, x, x)) 
# AD + AC + B'D' 
def c1(a, b, c, d): 
    return ((a and d) or (a and c) or ((not b) and (not d))) 
# ((AD)'(AC)'(B'D')')' 
def c2(a, b, c, d): 
    return not ((not (a and d)) and (not (a and c)) and (not ((not b) and (not d)))) 
# For each input combination, verify that the results are the same 
for x in comb: 
    r1 = c1(*x) 
    r2 = c2(*x) 
    if r1 != r2: 
     print "Error: Input %s produced %s != %s" % (x, r1, r2) 
Verwandte Themen