예제 #1
0
 def testcase_01(self):
     o = AndGate()
     o.Input0 = False
     o.Input1 = False
     o.execute()
     self.assertFalse(o.Output, "Class AndGate: Testcase 1 failed.")
예제 #2
0
    def __init__(self, parent=None, position=(0, 0)):
        super(FullAdder, self).__init__(parent=parent,
                                        name="Full Adder",
                                        rect=Rect(position[0], position[1], 67,
                                                  86))
        # self.display_frame = True
        self.child_components.append(XorGate(parent=self, position=(12, 0)))
        self.child_components.append(XorGate(parent=self, position=(37, 16)))
        self.child_components.append(AndGate(parent=self, position=(12, 32)))
        self.child_components.append(AndGate(parent=self, position=(12, 54)))
        self.child_components.append(OrGate(parent=self, position=(37, 43)))

        self.external_patches["A"] = ExternalPatch( \
                parent=self,
                direction=True,
                position=(0, 11))

        self.external_patches["B"] = ExternalPatch( \
                parent=self,
                direction=True,
                position=(0, 19))

        self.external_patches["Cin"] = ExternalPatch( \
                parent=self,
                direction=True,
                position=(0, 35))

        self.external_patches["S"] = ExternalPatch( \
                parent=self,
                direction=False,
                position=(self.get_width(), 31))

        self.external_patches["Cout"] = ExternalPatch( \
                parent=self,
                direction=False,
                position=(self.get_width(), 58))

        # A in junction
        point_a = (self.child_components[0].external_patches["A"].
                   get_relative_position_to_parent()[0] / 2 - 2, 11)
        j = Junction(parent=self, position=point_a).one_two_junction()
        self.child_components.append(j)

        patch_a = j.external_patches["A"]
        patch_b = self.external_patches["A"]
        self.auto_connect("in_a", patch_a, patch_b, internal_b=False)

        patch_a = j.external_patches["S1"]
        patch_b = self.child_components[0].external_patches["A"]
        self.auto_connect("in_a_xor", patch_a, patch_b)

        patch_a = self.child_components[3].external_patches["A"]
        patch_b = j.external_patches["S2"]
        self.auto_connect("in_a_and", patch_a, patch_b, offcet=-6)

        # B in junction
        point_a = (self.child_components[0].external_patches["B"].
                   get_relative_position_to_parent()[0] / 2 - 6, 19)
        j = Junction(parent=self, position=point_a).one_two_junction()
        self.child_components.append(j)

        patch_a = j.external_patches["A"]
        patch_b = self.external_patches["B"]
        self.auto_connect("in_b", patch_a, patch_b, internal_b=False)

        patch_a = j.external_patches["S1"]
        patch_b = self.child_components[0].external_patches["B"]
        self.auto_connect("in_b_xor", patch_a, patch_b)

        patch_a = self.child_components[3].external_patches["B"]
        patch_b = j.external_patches["S2"]
        self.auto_connect("in_b_and", patch_a, patch_b, offcet=-8)

        # Cin junction
        point_a = (self.child_components[1].external_patches["B"].
                   get_relative_position_to_parent()[0] / 2 - 8, 35)
        j = Junction(parent=self, position=point_a).one_two_junction()
        self.child_components.append(j)

        patch_a = j.external_patches["A"]
        patch_b = self.external_patches["Cin"]
        self.auto_connect("cin", patch_a, patch_b, internal_b=False)

        patch_a = j.external_patches["S1"]
        patch_b = self.child_components[1].external_patches["B"]
        self.auto_connect("cin_xor_b", patch_a, patch_b)

        patch_a = self.child_components[2].external_patches["B"]
        patch_b = j.external_patches["S2"]
        self.auto_connect("cin_or_b", patch_a, patch_b, offcet=-3)

        # Xor to Xor and And
        point_a = self.child_components[1].external_patches[
            "A"].get_relative_position_to_parent()
        point_b = self.child_components[0].external_patches[
            "S"].get_relative_position_to_parent()
        point_a = ((point_b[0] - point_a[0]) / 2 + point_a[0], point_a[1])
        j = Junction(parent=self, position=point_a).one_two_junction()
        self.child_components.append(j)

        patch_a = j.external_patches["A"]
        patch_b = self.child_components[0].external_patches["S"]
        self.auto_connect("xor_s", patch_a, patch_b, offcet=1)

        patch_a = j.external_patches["S1"]
        patch_b = self.child_components[1].external_patches["A"]
        self.auto_connect("xor_xor_a", patch_a, patch_b)

        patch_a = self.child_components[2].external_patches["A"]
        patch_b = j.external_patches["S2"]
        self.auto_connect("xor_and_a", patch_a, patch_b, offcet=-13)

        # And to Or
        patch_a = self.child_components[3].external_patches["S"]
        patch_b = self.child_components[4].external_patches["B"]
        self.auto_connect("and_or_b", patch_a, patch_b)

        patch_a = self.child_components[2].external_patches["S"]
        patch_b = self.child_components[4].external_patches["A"]
        self.auto_connect("and_or_a", patch_a, patch_b)

        # S out
        patch_a = self.child_components[1].external_patches["S"]
        patch_b = self.external_patches["S"]
        self.auto_connect("s_out", patch_a, patch_b, internal_b=False)

        # Cout
        patch_a = self.child_components[4].external_patches["S"]
        patch_b = self.external_patches["Cout"]
        self.auto_connect("c_out", patch_a, patch_b, internal_b=False)
예제 #3
0
 def testcase_04(self):
     o = AndGate()
     o.Input0 = True
     o.Input1 = True
     o.execute()
     self.assertTrue(o.Output, "Class AndGate: Testcase 4 failed.")
 def testcase_01(self):
     a=AndGate()
     a.Input0=False
     a.Input1=False
     a.execute()
     self.assertFalse(a.Output,"Class ANDKlasse: TestCase 1 failed.")
예제 #5
0
from AndGate import AndGate
from NotGate import NotGate
from OrGate import OrGate
from Connector import Connector

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.get_output())
예제 #6
0
 def testcase_01(self): 
     a = AndGate(True, False) 
     a.execute() 
     self.assertEqual(False, a._output, "Test 02 fehlgeschlagen.") 
 def testcase_04(self):
     a=AndGate()
     a.Input0=True
     a.Input1=True
     a.execute()
     self.assertTrue(a.Output,"Class ANDKlasse: TestCase 1 failed.")
예제 #8
0
 def testcase_00(self):
     a = AndGate()
     self.assertEqual(False, a.Input0, "Class OrGate Testcase 0 failed.")
     self.assertEqual(False, a.Input1, "Class OrGate Testcase 0 failed.")
     self.assertEqual(False, a.Output, "Class OrGate Testcase 0 failed.")
예제 #9
0
from AndGate import AndGate
from OrGate import OrGate
from NandGate import NandGate

#AndGate
n = AndGate(True, False, "AndGate")

n.execute()
n.showInfo()

#OrGate
o = OrGate(False, True, "OrGate")

o.execute()
o.showInfo()

#NandGate

nand = NandGate(True, True, "NandGate")

nand.execute()
nand.showInfo()
예제 #10
0
 def testcase_01(self):
     a = AndGate(False, False)
     a.execute()
     self.assertFalse(a.Output, "Class AndGate: TestCase 1 failed.")
예제 #11
0
 def testcase_04(self):
     a = AndGate(True, True)
     a.execute()
     self.assertTrue(a.Output, "Class AndGate: TestCase 1 failed.")
예제 #12
0
from AndGate import AndGate
from OrGate import OrGate
from NotGate import NotGate

andGate = AndGate("And")
print(andGate.getOutput())

orGate = OrGate("Or")
print(orGate.getOutput())

notGate = NotGate("Not")
print(notGate.getOutput())
예제 #13
0
from AndGate import AndGate
from OrGate import OrGate

print("AndGate example: \n")
n=AndGate(True,True)
n.execute()
n.show()


c=AndGate()
c.Input0=False
c.Input1=True
c.execute()
c.show()

print("\nOrGate example: \n")
o=OrGate(False,False)
o.execute()
o.show()


o1=OrGate()
o1.Input1=True
o1.Input0=False
o1.execute()
o1.show()
예제 #14
0
from AndGate import AndGate
from OrGate import OrGate
from NotGate import NotGate
from NorGate import NorGate
from XorGate import XorGate
from NandGate import NandGate
from Connector import Connector

g1 = AndGate("G1")
g2 = AndGate("G2")
g3 = OrGate("G3")
g4 = NotGate("G4")
g5 = NorGate("G5")
g6 = XorGate("G6")
g7 = NandGate("G7")
g8 = OrGate("G8")
c1 = Connector(g1, g3)
c2 = Connector(g2, g3)
c3 = Connector(g3, g4)
c4 = Connector(g5, g7)
c5 = Connector(g6, g7)
c6 = Connector(g4, g8)
c7 = Connector(g7, g8)
print(g8.getOutput())