1 from migen
.fhdl
.std
import *
5 self
.start_i
= Signal()
6 self
.dividend_i
= Signal(w
)
7 self
.divisor_i
= Signal(w
)
8 self
.ready_o
= Signal()
9 self
.quotient_o
= Signal(w
)
10 self
.remainder_o
= Signal(w
)
15 counter
= Signal(max=w
+1)
20 self
.quotient_o
.eq(qr
[:w
]),
21 self
.remainder_o
.eq(qr
[w
:]),
22 self
.ready_o
.eq(counter
== 0),
23 diff
.eq(self
.remainder_o
- divisor_r
)
28 qr
.eq(self
.dividend_i
),
29 divisor_r
.eq(self
.divisor_i
)
32 qr
.eq(Cat(0, qr
[:2*w
-1]))
34 qr
.eq(Cat(1, qr
[:w
-1], diff
[:w
]))
36 counter
.eq(counter
- 1)