forked from M-Labs/artiq
rtio/sed: fix output driver busy output
This commit is contained in:
parent
64d9381c36
commit
00ff3f5b0d
|
@ -96,6 +96,10 @@ class OutputDriver(Module):
|
||||||
self.sync += oif.data.eq(reduce(or_, onehot_data))
|
self.sync += oif.data.eq(reduce(or_, onehot_data))
|
||||||
|
|
||||||
# detect busy errors, at lane level to reduce muxing
|
# detect busy errors, at lane level to reduce muxing
|
||||||
|
self.sync += [
|
||||||
|
self.busy.eq(0),
|
||||||
|
self.busy_channel.eq(0)
|
||||||
|
]
|
||||||
for lane_data in lane_datas:
|
for lane_data in lane_datas:
|
||||||
stb_r = Signal()
|
stb_r = Signal()
|
||||||
channel_r = Signal(max=len(channels))
|
channel_r = Signal(max=len(channels))
|
||||||
|
@ -103,8 +107,6 @@ class OutputDriver(Module):
|
||||||
stb_r.eq(lane_data.valid & ~lane_data.collision),
|
stb_r.eq(lane_data.valid & ~lane_data.collision),
|
||||||
channel_r.eq(lane_data.payload.channel),
|
channel_r.eq(lane_data.payload.channel),
|
||||||
|
|
||||||
self.busy.eq(0),
|
|
||||||
self.busy_channel.eq(0),
|
|
||||||
If(stb_r & Array(channel.interface.o.busy for channel in channels)[channel_r],
|
If(stb_r & Array(channel.interface.o.busy for channel in channels)[channel_r],
|
||||||
self.busy.eq(1),
|
self.busy.eq(1),
|
||||||
self.busy_channel.eq(channel_r)
|
self.busy_channel.eq(channel_r)
|
||||||
|
|
Loading…
Reference in New Issue