Skip to content

Commit

Permalink
trace: Add a timeout to end a frame if no new data arrives.
Browse files Browse the repository at this point in the history
  • Loading branch information
zyp committed Aug 28, 2024
1 parent 14e974c commit 7e43c68
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions orbtrace/trace/tpiu.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,29 +130,42 @@ def __init__(self):
)

class LastFromFirst(Module):
def __init__(self):
def __init__(self, timeout = 7500000):
self.sink = sink = Endpoint([('data', 8)])
self.source = source = Endpoint([('data', 8)])

data = Signal(8)
first = Signal()
valid = Signal()
timeout_flag = Signal()
timeout_cnt = Signal(max = timeout + 1)

self.comb += [
timeout_flag.eq(timeout_cnt == 0),

sink.ready.eq(~valid | (source.ready & source.valid)),

source.data.eq(data),
source.first.eq(first),
source.last.eq(sink.first),
source.valid.eq(valid & sink.valid),
source.last.eq((sink.valid & sink.first) | timeout_flag),
source.valid.eq(valid & (sink.valid | timeout_flag)),
]

self.sync += [
If(source.ready & source.valid,
valid.eq(0),
),
If(sink.ready & sink.valid,
data.eq(sink.data),
first.eq(sink.first),
valid.eq(1),
),
If(timeout_cnt,
timeout_cnt.eq(timeout_cnt - 1),
),
If(sink.valid,
timeout_cnt.eq(timeout),
),
]

class TPIUDemux(Module):
Expand Down

0 comments on commit 7e43c68

Please sign in to comment.