use new Migen sel signal to change the way we upload data (will enable fifo bursts)
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Mon, 23 Feb 2015 11:34:04 +0000 (12:34 +0100)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Mon, 23 Feb 2015 11:34:04 +0000 (12:34 +0100)
litescope/core/storage.py
litescope/host/driver/la.py
test/test_la.py

index 30aab1615cb859f4f4b3f59bcb4cb8a503928af0..930ea31d9b847abcb29ee9bda3bc726a2d8b7156 100644 (file)
@@ -97,6 +97,7 @@ class LiteScopeRecorderUnit(Module):
                self.post_hit = Signal()
 
                self.source = Source(data_layout(dw))
+               self.source_level = Signal(bits_for(depth))
 
                ###
 
@@ -137,6 +138,7 @@ class LiteScopeRecorderUnit(Module):
 
                        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):
@@ -149,7 +151,7 @@ class LiteScopeRecorder(LiteScopeRecorderUnit, AutoCSR):
                self._done = CSRStatus()
 
                self._source_stb = CSRStatus()
-               self._source_ack = CSR()
+               self._source_level = CSRStatus(bits_for(depth))
                self._source_data = CSRStatus(dw)
 
                ###
@@ -162,6 +164,7 @@ class LiteScopeRecorder(LiteScopeRecorderUnit, AutoCSR):
                        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_ack.re)
+                       self.source.ack.eq(self._source_data.sel),
                ]
index a60d5d726aec855f25725a7e69c1aad17a2edd13..5fe0f8b4f0b8def74641c2122e0d3b2d6b86f0c4 100644 (file)
@@ -111,9 +111,8 @@ class LiteScopeLADriver():
        def upload(self):
                if self.debug:
                        print("uploading")
-               while self.recorder_source_stb.read():
+               while self.recorder_source_level.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()
index 9f7aba94c1bec7d28b2ebd712f558a2a498bb6cc..641b693b3119969b341cf82468b304c2ac053a7a 100644 (file)
@@ -9,7 +9,7 @@ la = LiteScopeLADriver(wb.regs, "la", debug=True)
 cond = {} # trigger on cnt0 = 128
 la.configure_term(port=0, cond=cond)
 la.configure_sum("term")
-la.configure_subsampler(8)
+la.configure_subsampler(1)
 #la.configure_qualifier(1)
 la.configure_rle(1)
 la.run(offset=128, length=256)