Skip to content

Commit f222b2a

Browse files
committed
wip: Limit frame size to 1024B.
1 parent 70353b8 commit f222b2a

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

orbtrace/trace/tpiu.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,30 @@ def __init__(self):
9292
self.sink = sink = Endpoint([('channel', 7), ('data', 8)])
9393
self.source = source = Endpoint([('data', 8)])
9494

95+
max_size = 1024
96+
9597
channel = Signal(7)
98+
byte_cnt = Signal(max = max_size)
99+
100+
start_new_packet = Signal()
101+
102+
self.comb += start_new_packet.eq((sink.channel != channel) | (byte_cnt >= max_size - 1))
96103

97104
self.submodules.fsm = fsm = FSM()
98105

99106
fsm.act('DATA',
100107
source.data.eq(sink.data),
101-
source.valid.eq(sink.valid & (sink.channel == channel)),
102-
sink.ready.eq(source.ready & (sink.channel == channel)),
108+
source.valid.eq(sink.valid & ~start_new_packet),
109+
sink.ready.eq(source.ready & ~start_new_packet),
103110

104-
If(sink.valid & (sink.channel != channel),
111+
If(sink.valid & start_new_packet,
105112
NextState('HEADER'),
106113
NextValue(channel, sink.channel),
107114
),
115+
116+
If(sink.valid & sink.ready,
117+
NextValue(byte_cnt, byte_cnt + 1),
118+
),
108119
)
109120

110121
fsm.act('HEADER',
@@ -114,6 +125,7 @@ def __init__(self):
114125

115126
If(source.ready,
116127
NextState('DATA'),
128+
NextValue(byte_cnt, 0),
117129
),
118130
)
119131

0 commit comments

Comments
 (0)