3 from misoc
.interconnect
.csr
import *
4 from misoc
.interconnect
.csr_eventmanager
import *
7 class Timer(Module
, AutoCSR
):
8 def __init__(self
, width
=32):
9 self
._load
= CSRStorage(width
)
10 self
._reload
= CSRStorage(width
)
11 self
._en
= CSRStorage()
12 self
._update
_value
= CSR()
13 self
._value
= CSRStatus(width
)
15 self
.submodules
.ev
= EventManager()
16 self
.ev
.zero
= EventSourceProcess()
25 # set reload to 0 to disable reloading
26 value
.eq(self
._reload
.storage
)
31 value
.eq(self
._load
.storage
)
33 If(self
._update
_value
.re
, self
._value
.status
.eq(value
))
35 self
.comb
+= self
.ev
.zero
.trigger
.eq(value
!= 0)