2 from migen
.genlib
.cdc
import MultiReg
4 from misoc
.interconnect
.csr
import *
7 class GPIOIn(Module
, AutoCSR
):
8 def __init__(self
, signal
):
9 self
._in
= CSRStatus(len(signal
))
10 self
.specials
+= MultiReg(signal
, self
._in
.status
)
13 class GPIOOut(Module
, AutoCSR
):
14 def __init__(self
, signal
):
15 self
._out
= CSRStorage(len(signal
))
16 self
.comb
+= signal
.eq(self
._out
.storage
)
19 class GPIOInOut(Module
):
20 def __init__(self
, in_signal
, out_signal
):
21 self
.submodules
.gpio_in
= GPIOIn(in_signal
)
22 self
.submodules
.gpio_out
= GPIOOut(out_signal
)
25 return self
.gpio_in
.get_csrs() + self
.gpio_out
.get_csrs()
28 class Blinker(Module
):
29 def __init__(self
, signal
, divbits
=26):
30 counter
= Signal(divbits
)
31 self
.comb
+= signal
.eq(counter
[divbits
-1])
32 self
.sync
+= counter
.eq(counter
+ 1)