Skip to content

Commit 8f81ae6

Browse files
committedMar 1, 2015
genlib/misc: add FlipFlop, Counter, Timeout
1 parent 961b4bf commit 8f81ae6

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
 

Diff for: ‎migen/genlib/misc.py

+26
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,29 @@ def get_cond(e):
8585
sync = [If(get_cond(e), *e[1]) for e in events]
8686
sync.append(counterlogic)
8787
return sync
88+
89+
@DecorateModule(InsertReset)
90+
@DecorateModule(InsertCE)
91+
class FlipFlop(Module):
92+
def __init__(self, *args, **kwargs):
93+
self.d = Signal(*args, **kwargs)
94+
self.q = Signal(*args, **kwargs)
95+
self.sync += self.q.eq(self.d)
96+
97+
@DecorateModule(InsertReset)
98+
@DecorateModule(InsertCE)
99+
class Counter(Module):
100+
def __init__(self, *args, **kwargs):
101+
self.value = Signal(**kwargs)
102+
self.width = flen(self.value)
103+
self.sync += self.value.eq(self.value+1)
104+
105+
@DecorateModule(InsertReset)
106+
@DecorateModule(InsertCE)
107+
class Timeout(Module):
108+
def __init__(self, length):
109+
self.reached = Signal()
110+
###
111+
value = Signal(max=length)
112+
self.sync += If(~self.reached, value.eq(value+1))
113+
self.comb += self.reached.eq(value == (length-1))

0 commit comments

Comments
 (0)