1 from migen
.fhdl
.structure
import *
7 self
.start_i
= Signal()
8 self
.dividend_i
= Signal(w
)
9 self
.divisor_i
= Signal(w
)
10 self
.ready_o
= Signal()
11 self
.quotient_o
= Signal(w
)
12 self
.remainder_o
= Signal(w
)
14 def get_fragment(self
):
18 counter
= Signal(max=w
+1)
23 self
.quotient_o
.eq(qr
[:w
]),
24 self
.remainder_o
.eq(qr
[w
:]),
25 self
.ready_o
.eq(counter
== 0),
26 diff
.eq(self
.remainder_o
- divisor_r
)
31 qr
.eq(self
.dividend_i
),
32 divisor_r
.eq(self
.divisor_i
)
35 qr
.eq(Cat(0, qr
[:2*w
-1]))
37 qr
.eq(Cat(1, qr
[:w
-1], diff
[:w
]))
39 counter
.eq(counter
- 1)
42 return Fragment(comb
, sync
)