1 from nmigen
import Signal
, Module
, Elaboratable
, Cat
, Mux
3 class GatedBitReverse(Elaboratable
):
5 def __init__(self
, width
):
7 self
.data
= Signal(width
, reset_less
=True)
8 self
.reverse_en
= Signal(reset_less
=True)
9 self
.output
= Signal(width
, reset_less
=True)
11 def elaborate(self
, platform
):
17 for i
in range(width
):
18 l
.append(self
.data
[i
])
19 r
.append(self
.data
[width
-i
-1])
21 with m
.If(self
.reverse_en
):
22 comb
+= self
.output
.eq(Cat(*r
))
24 comb
+= self
.output
.eq(Cat(*l
))