fix rle when used with subsampler
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Thu, 19 Feb 2015 10:34:20 +0000 (11:34 +0100)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Thu, 19 Feb 2015 10:34:20 +0000 (11:34 +0100)
litescope/core/storage.py

index 6707b20766dd26fd10a37c2945ac86c696f01f49..48ff9d16b9b960de584f9dc90569b80b02dd3060 100644 (file)
@@ -45,7 +45,7 @@ class LiteScopeRunLengthEncoderUnit(Module):
 
                change = Signal()
                self.comb += change.eq(
-                       (sink.stb & buf.q.stb) &
+                       sink.stb &
                        (sink.data != buf.q.data)
                )
 
@@ -60,6 +60,7 @@ class LiteScopeRunLengthEncoderUnit(Module):
                        )
                )
                fsm.act("COUNT",
+                       buf.q.ack.eq(1),
                        counter.ce.eq(sink.stb),
                        If(~self.enable,
                                NextState("BYPASS")
@@ -67,7 +68,10 @@ class LiteScopeRunLengthEncoderUnit(Module):
                                source.stb.eq(1),
                                source.data[:flen(counter.value)].eq(counter.value),
                                source.data[-1].eq(1), # Set RLE bit
-                               NextState("BYPASS")
+                               buf.q.ack.eq(source.ack),
+                               If(source.ack,
+                                       NextState("BYPASS")
+                               )
                        )
                )