lasmicon/multiplexer/steerer_sel: replace STEER_ with string

This commit is contained in:
Sebastien Bourdeauducq 2013-08-26 21:21:00 +02:00
parent d1dddad811
commit deb438ca18
1 changed files with 7 additions and 6 deletions

View File

@ -153,32 +153,33 @@ class Multiplexer(Module, AutoCSR):
# Control FSM # Control FSM
fsm = FSM() fsm = FSM()
(STEER_WRITE, STEER_READ) = range(2) self.submodules += fsm
def steerer_sel(steerer, phy_settings, r_w_n): def steerer_sel(steerer, phy_settings, r_w_n):
r = [] r = []
for i in range(phy_settings.nphases): for i in range(phy_settings.nphases):
s = steerer.sel[i].eq(STEER_NOP) s = steerer.sel[i].eq(STEER_NOP)
if r_w_n: if r_w_n == "read":
if i == phy_settings.rdphase: if i == phy_settings.rdphase:
s = steerer.sel[i].eq(STEER_REQ) s = steerer.sel[i].eq(STEER_REQ)
elif i == phy_settings.wrcmdphase: elif i == phy_settings.wrcmdphase:
s = steerer.sel[i].eq(STEER_CMD) s = steerer.sel[i].eq(STEER_CMD)
else: elif r_w_n == "write":
if i == phy_settings.wrphase: if i == phy_settings.wrphase:
s = steerer.sel[i].eq(STEER_REQ) s = steerer.sel[i].eq(STEER_REQ)
elif i == phy_settings.rdcmdphase: elif i == phy_settings.rdcmdphase:
s = steerer.sel[i].eq(STEER_CMD) s = steerer.sel[i].eq(STEER_CMD)
else:
raise ValueError
r.append(s) r.append(s)
return r return r
self.submodules += fsm
fsm.act("READ", fsm.act("READ",
read_time_en.eq(1), read_time_en.eq(1),
choose_req.want_reads.eq(1), choose_req.want_reads.eq(1),
choose_cmd.cmd.ack.eq(1), choose_cmd.cmd.ack.eq(1),
choose_req.cmd.ack.eq(1), choose_req.cmd.ack.eq(1),
steerer_sel(steerer, phy_settings, STEER_READ), steerer_sel(steerer, phy_settings, "read"),
If(write_available, If(write_available,
# TODO: switch only after several cycles of ~read_available? # TODO: switch only after several cycles of ~read_available?
If(~read_available | max_read_time, NextState("RTW")) If(~read_available | max_read_time, NextState("RTW"))
@ -190,7 +191,7 @@ class Multiplexer(Module, AutoCSR):
choose_req.want_writes.eq(1), choose_req.want_writes.eq(1),
choose_cmd.cmd.ack.eq(1), choose_cmd.cmd.ack.eq(1),
choose_req.cmd.ack.eq(1), choose_req.cmd.ack.eq(1),
steerer_sel(steerer, phy_settings, STEER_WRITE), steerer_sel(steerer, phy_settings, "write"),
If(read_available, If(read_available,
If(~write_available | max_write_time, NextState("WTR")) If(~write_available | max_write_time, NextState("WTR"))
), ),