Skip to content

Commit

Permalink
genlib/misc: add FlipFlop, Counter, Timeout
Browse files Browse the repository at this point in the history
  • Loading branch information
enjoy-digital committed Mar 1, 2015
1 parent 961b4bf commit 8f81ae6
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions migen/genlib/misc.py
Expand Up @@ -85,3 +85,29 @@ def get_cond(e):
sync = [If(get_cond(e), *e[1]) for e in events]
sync.append(counterlogic)
return sync

@DecorateModule(InsertReset)
@DecorateModule(InsertCE)
class FlipFlop(Module):
def __init__(self, *args, **kwargs):
self.d = Signal(*args, **kwargs)
self.q = Signal(*args, **kwargs)
self.sync += self.q.eq(self.d)

@DecorateModule(InsertReset)
@DecorateModule(InsertCE)
class Counter(Module):
def __init__(self, *args, **kwargs):
self.value = Signal(**kwargs)
self.width = flen(self.value)
self.sync += self.value.eq(self.value+1)

@DecorateModule(InsertReset)
@DecorateModule(InsertCE)
class Timeout(Module):
def __init__(self, length):
self.reached = Signal()
###
value = Signal(max=length)
self.sync += If(~self.reached, value.eq(value+1))
self.comb += self.reached.eq(value == (length-1))

0 comments on commit 8f81ae6

Please sign in to comment.