Initial Commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
from Source.Pre_Built_Gates.Power import Power
|
||||
from Source.Logic_Gates.Mux16 import Mux16
|
||||
from Source.Logic_Gates.Not16 import Not16
|
||||
from Source.Logic_Gates.And16 import And16
|
||||
from Source.Components.Boolean_Arithmetic.Add16 import Add16
|
||||
from Source.Logic_Gates.Or8Way import Or8Way
|
||||
from Source.Pre_Built_Gates.Or import Or
|
||||
from Source.Pre_Built_Gates.And import And
|
||||
from Source.Pre_Built_Gates.Not import Not
|
||||
|
||||
class ALU:
|
||||
def __init__(self,x,y,zx,nx,zy,ny,f,no) -> None:
|
||||
self.x=x
|
||||
self.y=y
|
||||
self.zx=zx
|
||||
self.nx=nx
|
||||
self.zy=zy
|
||||
self.ny=ny
|
||||
self.f=f
|
||||
self.no=no
|
||||
self.out=[Power([Power(False) for _ in range(16)]),Power(False),Power(False)]
|
||||
self()
|
||||
def __call__(self) -> None:
|
||||
x1=Mux16(self.x,Power([Power(False) for _ in range(16)]),self.zx)
|
||||
y1=Mux16(self.y,Power([Power(False) for _ in range(16)]),self.zy)
|
||||
notx1=Not16(x1)
|
||||
noty1=Not16(y1)
|
||||
x2=Mux16(x1,notx1,self.nx)
|
||||
y2=Mux16(y1,noty1,self.ny)
|
||||
addout=Add16(x2,y2)
|
||||
andout=And16(x2,y2)
|
||||
fout=Mux16(andout,addout,self.f)
|
||||
notfout=Not16(fout)
|
||||
out1=Mux16(fout,notfout,self.no)
|
||||
zr1=Or8Way(Power(out1.out[0:8]))
|
||||
zr2=Or8Way(Power(out1.out[8:16]))
|
||||
zr3=Or(zr1,zr2)
|
||||
zr=Not(zr3)
|
||||
for i in range(16):
|
||||
self.out[0].out[i].out=out1.out[i].out
|
||||
self.out[1].out=zr.out
|
||||
self.out[2].out=out1.out[0].out
|
||||
@@ -0,0 +1,44 @@
|
||||
from Source.Components.Boolean_Arithmetic.FullAdder import FullAdder
|
||||
from Source.Components.Boolean_Arithmetic.HalfAdder import HalfAdder
|
||||
from Source.Pre_Built_Gates.Power import Power
|
||||
|
||||
class Add16:
|
||||
def __init__(self,a,b) -> None:
|
||||
self.a=a
|
||||
self.b=b
|
||||
self.out=[Power(False) for _ in range(16)]
|
||||
self()
|
||||
def __call__(self) -> None:
|
||||
add1=HalfAdder(self.a.out[15],self.b.out[15])
|
||||
add2=FullAdder(self.a.out[14],self.b.out[14],add1.out[1])
|
||||
add3=FullAdder(self.a.out[13],self.b.out[13],add2.out[1])
|
||||
add4=FullAdder(self.a.out[12],self.b.out[12],add3.out[1])
|
||||
add5=FullAdder(self.a.out[11],self.b.out[11],add4.out[1])
|
||||
add6=FullAdder(self.a.out[10],self.b.out[10],add5.out[1])
|
||||
add7=FullAdder(self.a.out[9],self.b.out[9],add6.out[1])
|
||||
add8=FullAdder(self.a.out[8],self.b.out[8],add7.out[1])
|
||||
add9=FullAdder(self.a.out[7],self.b.out[7],add8.out[1])
|
||||
add10=FullAdder(self.a.out[6],self.b.out[6],add9.out[1])
|
||||
add11=FullAdder(self.a.out[5],self.b.out[5],add10.out[1])
|
||||
add12=FullAdder(self.a.out[4],self.b.out[4],add11.out[1])
|
||||
add13=FullAdder(self.a.out[3],self.b.out[3],add12.out[1])
|
||||
add14=FullAdder(self.a.out[2],self.b.out[2],add13.out[1])
|
||||
add15=FullAdder(self.a.out[1],self.b.out[1],add14.out[1])
|
||||
add16=FullAdder(self.a.out[0],self.b.out[0],add15.out[1])
|
||||
|
||||
self.out[0].out=add16.out[0].out
|
||||
self.out[1].out=add15.out[0].out
|
||||
self.out[2].out=add14.out[0].out
|
||||
self.out[3].out=add13.out[0].out
|
||||
self.out[4].out=add12.out[0].out
|
||||
self.out[5].out=add11.out[0].out
|
||||
self.out[6].out=add10.out[0].out
|
||||
self.out[7].out=add9.out[0].out
|
||||
self.out[8].out=add8.out[0].out
|
||||
self.out[9].out=add7.out[0].out
|
||||
self.out[10].out=add6.out[0].out
|
||||
self.out[11].out=add5.out[0].out
|
||||
self.out[12].out=add4.out[0].out
|
||||
self.out[13].out=add3.out[0].out
|
||||
self.out[14].out=add2.out[0].out
|
||||
self.out[15].out=add1.out[0].out
|
||||
@@ -0,0 +1,17 @@
|
||||
from Source.Components.Boolean_Arithmetic.HalfAdder import HalfAdder
|
||||
from Source.Logic_Gates.Xor import Xor
|
||||
from Source.Pre_Built_Gates.Power import Power
|
||||
|
||||
class FullAdder:
|
||||
def __init__(self,a,b,c) -> None:
|
||||
self.a=a
|
||||
self.b=b
|
||||
self.c=c
|
||||
self.out=[Power(False),Power(False)]
|
||||
self()
|
||||
def __call__(self) -> None:
|
||||
ha1=HalfAdder(self.a,self.b)
|
||||
ha2=HalfAdder(ha1.out[0],self.c)
|
||||
xor=Xor(ha1.out[1],ha2.out[1])
|
||||
self.out[0].out=ha2.out[0].out
|
||||
self.out[1].out=xor.out
|
||||
@@ -0,0 +1,15 @@
|
||||
from Source.Pre_Built_Gates.And import And
|
||||
from Source.Logic_Gates.Xor import Xor
|
||||
from Source.Pre_Built_Gates.Power import Power
|
||||
|
||||
class HalfAdder:
|
||||
def __init__(self,a,b) -> None:
|
||||
self.a=a
|
||||
self.b=b
|
||||
self.out=[Power(False),Power(False)]
|
||||
self()
|
||||
def __call__(self) -> None:
|
||||
bit_sum=Xor(self.a,self.b)
|
||||
carry=And(self.a,self.b)
|
||||
self.out[0].out=bit_sum.out
|
||||
self.out[1].out=carry.out
|
||||
@@ -0,0 +1,42 @@
|
||||
from Source.Pre_Built_Gates.Power import Power
|
||||
from Source.Components.Boolean_Arithmetic.HalfAdder import HalfAdder
|
||||
|
||||
class Inc16:
|
||||
def __init__(self,a) -> None:
|
||||
self.a=a
|
||||
self.out=[Power(False) for _ in range(16)]
|
||||
self()
|
||||
def __call__(self) -> None:
|
||||
add1=HalfAdder(self.a.out[15],Power(True))
|
||||
add2=HalfAdder(self.a.out[14],add1.out[1])
|
||||
add3=HalfAdder(self.a.out[13],add2.out[1])
|
||||
add4=HalfAdder(self.a.out[12],add3.out[1])
|
||||
add5=HalfAdder(self.a.out[11],add4.out[1])
|
||||
add6=HalfAdder(self.a.out[10],add5.out[1])
|
||||
add7=HalfAdder(self.a.out[9],add6.out[1])
|
||||
add8=HalfAdder(self.a.out[8],add7.out[1])
|
||||
add9=HalfAdder(self.a.out[7],add8.out[1])
|
||||
add10=HalfAdder(self.a.out[6],add9.out[1])
|
||||
add11=HalfAdder(self.a.out[5],add10.out[1])
|
||||
add12=HalfAdder(self.a.out[4],add11.out[1])
|
||||
add13=HalfAdder(self.a.out[3],add12.out[1])
|
||||
add14=HalfAdder(self.a.out[2],add13.out[1])
|
||||
add15=HalfAdder(self.a.out[1],add14.out[1])
|
||||
add16=HalfAdder(self.a.out[0],add15.out[1])
|
||||
|
||||
self.out[0].out=add16.out[0].out
|
||||
self.out[1].out=add15.out[0].out
|
||||
self.out[2].out=add14.out[0].out
|
||||
self.out[3].out=add13.out[0].out
|
||||
self.out[4].out=add12.out[0].out
|
||||
self.out[5].out=add11.out[0].out
|
||||
self.out[6].out=add10.out[0].out
|
||||
self.out[7].out=add9.out[0].out
|
||||
self.out[8].out=add8.out[0].out
|
||||
self.out[9].out=add7.out[0].out
|
||||
self.out[10].out=add6.out[0].out
|
||||
self.out[11].out=add5.out[0].out
|
||||
self.out[12].out=add4.out[0].out
|
||||
self.out[13].out=add3.out[0].out
|
||||
self.out[14].out=add2.out[0].out
|
||||
self.out[15].out=add1.out[0].out
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user