Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

flow/actor/PipelinedActor: clean up

  • Loading branch information...
commit c2d6f14087d7ce29353bcc7f7ad63c7c3f9adff9 1 parent 6aa1e0c
Sébastien Bourdeauducq sbourdeauducq authored
Showing with 11 additions and 9 deletions.
  1. +11 −9 migen/flow/actor.py
20 migen/flow/actor.py
View
@@ -90,15 +90,17 @@ def __init__(self, latency):
BinaryActor.__init__(self, latency)
def build_binary_control(self, stb_i, ack_o, stb_o, ack_i, latency):
- valid = Signal(latency)
- if latency > 1:
- self.sync += If(self.pipe_ce, valid.eq(Cat(stb_i, valid[:latency-1])))
- else:
- self.sync += If(self.pipe_ce, valid.eq(stb_i))
- last_valid = valid[latency-1]
+ busy = 0
+ valid = stb_i
+ for i in range(latency):
+ valid_n = Signal()
+ self.sync += If(self.pipe_ce, valid_n.eq(valid))
+ valid = valid_n
+ busy = busy | valid
+
self.comb += [
- self.pipe_ce.eq(ack_i | ~last_valid),
+ self.pipe_ce.eq(ack_i | ~valid),
ack_o.eq(self.pipe_ce),
- stb_o.eq(last_valid),
- self.busy.eq(optree("|", [valid[i] for i in range(latency)]))
+ stb_o.eq(valid),
+ self.busy.eq(busy)
]
Please sign in to comment.
Something went wrong with that request. Please try again.