phy: remove ALIGN primitives on RX path

This commit is contained in:
Florent Kermarrec 2014-12-11 18:35:56 +01:00
parent f976b65cf1
commit e4c0b4a11f
1 changed files with 13 additions and 4 deletions

View File

@ -137,6 +137,11 @@ class K7SATAPHYDatapath(Module):
) )
send_align = (align_cnt < 2) 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 # user / ctrl mux
self.comb += [ self.comb += [
# user # user
@ -152,10 +157,14 @@ class K7SATAPHYDatapath(Module):
tx.sink.charisk.eq(self.sink.charisk), tx.sink.charisk.eq(self.sink.charisk),
self.sink.ack.eq(tx.sink.ack) self.sink.ack.eq(tx.sink.ack)
), ),
If(receive_align,
rx.source.ack.eq(1)
).Else(
self.source.stb.eq(rx.source.stb), self.source.stb.eq(rx.source.stb),
self.source.data.eq(rx.source.data), self.source.data.eq(rx.source.data),
self.source.charisk.eq(rx.source.charisk), self.source.charisk.eq(rx.source.charisk),
rx.source.ack.eq(1), rx.source.ack.eq(1)
)
# ctrl # ctrl
).Else( ).Else(
tx.sink.stb.eq(ctrl.source.stb), tx.sink.stb.eq(ctrl.source.stb),