From: Florent Kermarrec Date: Mon, 18 Nov 2019 07:51:44 +0000 (+0100) Subject: soc/interconnect/packet/Depacketizer: another simplifcation pass X-Git-Tag: 24jan2021_ls180~850 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1efb18f1ea5ffe07f0681c2bdbc71fb38291da3b;p=litex.git soc/interconnect/packet/Depacketizer: another simplifcation pass --- diff --git a/litex/soc/interconnect/packet.py b/litex/soc/interconnect/packet.py index 89bd1955..7ac82027 100644 --- a/litex/soc/interconnect/packet.py +++ b/litex/soc/interconnect/packet.py @@ -338,17 +338,20 @@ class Depacketizer(Module): ) self.sync += If(sink.ready, sink_d.eq(sink)) fsm.act("UNALIGNED-DATA-COPY", - source.valid.eq((sink.valid & ~fsm_from_idle) | sink_d.last), + source.valid.eq(sink.valid | sink_d.last), source.last.eq(sink.last | sink_d.last), - sink.ready.eq(source.ready | fsm_from_idle), - If(sink.valid & sink.ready, - NextValue(fsm_from_idle, 0), - If(fsm_from_idle, + sink.ready.eq(source.ready), + source.data.eq(sink_d.data[header_leftover*8:]), + source.data[min((bytes_per_clk-header_leftover)*8, data_width-1):].eq(sink.data), + If(fsm_from_idle, + source.valid.eq(sink_d.last), + sink.ready.eq(1), + If(sink.valid, + NextValue(fsm_from_idle, 0), sr_shift_leftover.eq(1), - ).Else( - source.data.eq(sink_d.data[header_leftover*8:]), - source.data[min((bytes_per_clk-header_leftover)*8, data_width-1):].eq(sink.data) - ), + ) + ), + If(source.valid & source.ready, If(source.last, NextState("IDLE") )