From: Florent Kermarrec Date: Thu, 11 Dec 2014 17:35:56 +0000 (+0100) Subject: phy: remove ALIGN primitives on RX path X-Git-Tag: 24jan2021_ls180~2572^2~144 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e4c0b4a11f9badae7febdcf5994c2092cca6ec95;p=litex.git phy: remove ALIGN primitives on RX path --- diff --git a/lib/sata/phy/k7sataphy/datapath.py b/lib/sata/phy/k7sataphy/datapath.py index 809d4e8a..3a3683c7 100644 --- a/lib/sata/phy/k7sataphy/datapath.py +++ b/lib/sata/phy/k7sataphy/datapath.py @@ -137,6 +137,11 @@ class K7SATAPHYDatapath(Module): ) send_align = (align_cnt < 2) + receive_align = Signal() + self.comb += receive_align.eq(rx.source.stb & + (rx.source.charisk == 0b0001) & + (rx.source.data == primitives["ALIGN"]) + # user / ctrl mux self.comb += [ # user @@ -152,10 +157,14 @@ class K7SATAPHYDatapath(Module): tx.sink.charisk.eq(self.sink.charisk), self.sink.ack.eq(tx.sink.ack) ), - self.source.stb.eq(rx.source.stb), - self.source.data.eq(rx.source.data), - self.source.charisk.eq(rx.source.charisk), - rx.source.ack.eq(1), + If(receive_align, + rx.source.ack.eq(1) + ).Else( + self.source.stb.eq(rx.source.stb), + self.source.data.eq(rx.source.data), + self.source.charisk.eq(rx.source.charisk), + rx.source.ack.eq(1) + ) # ctrl ).Else( tx.sink.stb.eq(ctrl.source.stb),