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)
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)
),
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),
rx.source.ack.eq(1)
)
# ctrl
).Else(
tx.sink.stb.eq(ctrl.source.stb),