ltssm/phy: add experimental RX polarity swap (simplify testing)

This commit is contained in:
Florent Kermarrec 2019-10-08 14:09:51 +02:00
parent 7a31882f38
commit 5becb9be6d
2 changed files with 10 additions and 2 deletions

View File

@ -3,6 +3,8 @@
from migen import * from migen import *
from migen.genlib.misc import WaitTimer
# Note: Currently just FSM skeletons with states/transitions. # Note: Currently just FSM skeletons with states/transitions.
# Link Training and Status State Machine ----------------------------------------------------------- # Link Training and Status State Machine -----------------------------------------------------------
@ -243,7 +245,7 @@ class PollingFSM(FSM):
# Link Training and Status State Machine ----------------------------------------------------------- # Link Training and Status State Machine -----------------------------------------------------------
class LTSSM(Module): class LTSSM(Module):
def __init__(self, serdes, lfps_unit, ts_unit): def __init__(self, serdes, lfps_unit, ts_unit, sys_clk_freq):
# SS Inactive FSM -------------------------------------------------------------------------- # SS Inactive FSM --------------------------------------------------------------------------
self.submodules.ss_inactive_fsm = SSInactiveFSM() self.submodules.ss_inactive_fsm = SSInactiveFSM()
@ -258,3 +260,9 @@ class LTSSM(Module):
# LTSSM FSM -------------------------------------------------------------------------------- # LTSSM FSM --------------------------------------------------------------------------------
self.submodules.ltssm_fsm = LTSSMFSM() self.submodules.ltssm_fsm = LTSSMFSM()
# FIXME; Experimental RX polarity swap
rx_polarity_timer = WaitTimer(int(sys_clk_freq*1e-3))
self.submodules += rx_polarity_timer
self.comb += rx_polarity_timer.wait.eq(self.polling_fsm.ongoing("RX-EQ") & ~rx_polarity_timer.done)
self.sync += If(rx_polarity_timer.done, serdes.rx_polarity.eq(~serdes.rx_polarity))

View File

@ -35,7 +35,7 @@ class USB3PHY(Module):
self.submodules.ts = ts self.submodules.ts = ts
# LTSSM ------------------------------------------------------------------------------------ # LTSSM ------------------------------------------------------------------------------------
ltssm = LTSSM(serdes=serdes, lfps_unit=lfps, ts_unit=ts) ltssm = LTSSM(serdes=serdes, lfps_unit=lfps, ts_unit=ts, sys_clk_freq=sys_clk_freq)
ltssm = ResetInserter()(ltssm) ltssm = ResetInserter()(ltssm)
self.comb += ltssm.reset.eq(~self.enable) self.comb += ltssm.reset.eq(~self.enable)
self.submodules.ltssm = ltssm self.submodules.ltssm = ltssm