Question: Create a two new gate classes, one called NorGate the other called NandGate. NandGates work like AndGates that have a Not attached to the output.

Create a two new gate classes, one called NorGate the other called NandGate. NandGates work like AndGates that have a Not attached to the output. NorGates work lake OrGates that have a Not attached to the output.Create a series of gates that prove the following equality NOT (( A and B) or (C and D)) is that same as NOT( A and B ) and NOT (C and D). Make sure to use some of your new gates in the simulation. in python.

class LogicGate:

def __init__(self,n):

self.name = n

self.output = None

def getName(self):

return self.name

def getOutput(self):

self.output = self.performGateLogic()

return self.output

class BinaryGate(LogicGate):

def __init__(self,n):

LogicGate.__init__(self,n)

self.pinA = None

self.pinB = None

def getPinA(self):

if self.pinA == None:

return int(input("Enter Pin A input for gate "+self.getName()+"-->"))

else:

return self.pinA.getFrom().getOutput()

def getPinB(self):

if self.pinB == None:

return int(input("Enter Pin B input for gate "+self.getName()+"-->"))

else:

return self.pinB.getFrom().getOutput()

def setNextPin(self,source):

if self.pinA == None:

self.pinA = source

else:

if self.pinB == None:

self.pinB = source

else:

print("Cannot Connect: NO EMPTY PINS on this gate")

class AndGate(BinaryGate):

def __init__(self,n):

BinaryGate.__init__(self,n)

def performGateLogic(self):

a = self.getPinA()

b = self.getPinB()

if a==1 and b==1:

return 1

else:

return 0

class OrGate(BinaryGate):

def __init__(self,n):

BinaryGate.__init__(self,n)

def performGateLogic(self):

a = self.getPinA()

b = self.getPinB()

if a ==1 or b==1:

return 1

else:

return 0

class UnaryGate(LogicGate):

def __init__(self,n):

LogicGate.__init__(self,n)

self.pin = None

def getPin(self):

if self.pin == None:

return int(input("Enter Pin input for gate "+self.getName()+"-->"))

else:

return self.pin.getFrom().getOutput()

def setNextPin(self,source):

if self.pin == None:

self.pin = source

else:

print("Cannot Connect: NO EMPTY PINS on this gate")

class NotGate(UnaryGate):

def __init__(self,n):

UnaryGate.__init__(self,n)

def performGateLogic(self):

if self.getPin():

return 0

else:

return 1

class Connector:

def __init__(self, fgate, tgate):

self.fromgate = fgate

self.togate = tgate

tgate.setNextPin(self)

def getFrom(self):

return self.fromgate

def getTo(self):

return self.togate

def main():

g1 = AndGate("G1")

g2 = AndGate("G2")

g3 = OrGate("G3")

g4 = NotGate("G4")

c1 = Connector(g1,g3)

c2 = Connector(g2,g3)

c3 = Connector(g3,g4)

print(g4.getOutput())

main()

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!