mirror of
https://github.com/enjoy-digital/usb3_pipe.git
synced 2025-01-04 10:18:41 +08:00
ltssm/phy: add experimental RX polarity swap (simplify testing)
This commit is contained in:
parent
7a31882f38
commit
5becb9be6d
@ -3,6 +3,8 @@
|
||||
|
||||
from migen import *
|
||||
|
||||
from migen.genlib.misc import WaitTimer
|
||||
|
||||
# Note: Currently just FSM skeletons with states/transitions.
|
||||
|
||||
# Link Training and Status State Machine -----------------------------------------------------------
|
||||
@ -243,7 +245,7 @@ class PollingFSM(FSM):
|
||||
# Link Training and Status State Machine -----------------------------------------------------------
|
||||
|
||||
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 --------------------------------------------------------------------------
|
||||
self.submodules.ss_inactive_fsm = SSInactiveFSM()
|
||||
|
||||
@ -258,3 +260,9 @@ class LTSSM(Module):
|
||||
|
||||
# LTSSM FSM --------------------------------------------------------------------------------
|
||||
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))
|
||||
|
@ -35,7 +35,7 @@ class USB3PHY(Module):
|
||||
self.submodules.ts = ts
|
||||
|
||||
# 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)
|
||||
self.comb += ltssm.reset.eq(~self.enable)
|
||||
self.submodules.ltssm = ltssm
|
||||
|
Loading…
x
Reference in New Issue
Block a user