2 from nmigen
.cli
import main
4 from nmigen_add_experiment
import FPADD
5 from fpbase
import FPOp
9 def __init__(self
, width
):
10 self
.a
= Signal(width
)
11 self
.b
= Signal(width
)
12 self
.o
= Signal(width
)
14 def elaborate(self
, platform
):
16 m
.d
.comb
+= self
.o
.eq(self
.a
+ self
.b
)
21 def __init__(self
, width
):
22 self
.a
= Signal(width
)
23 self
.b
= Signal(width
)
24 self
.o
= Signal(width
)
26 def elaborate(self
, platform
):
28 m
.d
.comb
+= self
.o
.eq(self
.a
- self
.b
)
33 def __init__(self
, width
):
40 self
.add1
= FPADD(width
)
41 self
.add2
= FPADD(width
)
43 def elaborate(self
, platform
):
45 m
.submodules
.add1
= self
.add1
46 m
.submodules
.add2
= self
.add2
47 # join add1 a to a: add1.in_a = a
48 m
.d
.comb
+= self
.add1
.in_a
.chain_from(self
.a
)
49 # join add1 b to b: add1.in_b = b
50 m
.d
.comb
+= self
.add1
.in_b
.chain_from(self
.b
)
51 # join add2 a to c: add2.in_a = c
52 m
.d
.comb
+= self
.add2
.in_a
.chain_from(self
.c
)
53 # join add2 b to add1 z: add2.in_b = add1.out_z
54 m
.d
.comb
+= self
.add2
.in_b
.chain_from(self
.add1
.out_z
)
55 # join output from add2 to z: z = add2.out_z
56 m
.d
.comb
+= self
.z
.chain_from(self
.add2
.out_z
)
58 # m.d.comb += self.o.eq(self.sub.o)
60 # m.d.comb += self.o.eq(self.add.o)
64 if __name__
== "__main__":
66 main(alu
, ports
=alu
.a
.ports() + \