self.post_hit = Signal()
self.source = Source(data_layout(dw))
- self.source_level = Signal(bits_for(depth))
###
If(~fifo.sink.ack | (fifo.fifo.level >= self.length), NextState("IDLE"))
)
- self.comb += self.source_level.eq(fifo.fifo.level)
class LiteScopeRecorder(LiteScopeRecorderUnit, AutoCSR):
def __init__(self, dw, depth):
self._done = CSRStatus()
self._source_stb = CSRStatus()
- self._source_level = CSRStatus(bits_for(depth))
+ self._source_ack = CSR()
self._source_data = CSRStatus(dw)
###
self._done.status.eq(self.done),
self._source_stb.status.eq(self.source.stb),
- self._source_level.status.eq(self.source_level),
self._source_data.status.eq(self.source.data),
- self.source.ack.eq(self._source_data.sel),
+ self.source.ack.eq(self._source_ack.re)
]
def upload(self):
if self.debug:
print("uploading")
- level = self.recorder_source_level.read()
- while level:
- length = self.recorder_source_data.length
- self.data += self.recorder_source_data.read(repeats=min(128//length, level))
- level = self.recorder_source_level.read()
+ while self.recorder_source_stb.read():
+ self.data.append(self.recorder_source_data.read())
+ self.recorder_source_ack.write(1)
if self.with_rle:
if self.rle_enable.read():
self.data = self.data.decode_rle()