liteeth_gen: Add XGMII PHY support (Transceiver still need to be integrated externally).

This commit is contained in:
Florent Kermarrec 2024-09-11 15:21:24 +02:00
parent 74bd085757
commit a2a862dc1b
1 changed files with 17 additions and 0 deletions

View File

@ -160,6 +160,16 @@ _io = [
Subsignal("rxn", Pins(1)), Subsignal("rxn", Pins(1)),
Subsignal("link_up", Pins(1)), Subsignal("link_up", Pins(1)),
), ),
# XGMII PHY Pads
("xgmii", 0,
Subsignal("rx", Pins(1)), # Clk.
Subsignal("rx_ctl", Pins(8)),
Subsignal("rx_data", Pins(64)),
Subsignal("tx", Pins(1)), # Clk.
Subsignal("tx_ctl", Pins(8)),
Subsignal("tx_data", Pins(64)),
),
] ]
def get_udp_port_ios(name, data_width, dynamic_params=False): def get_udp_port_ios(name, data_width, dynamic_params=False):
@ -354,6 +364,13 @@ class PHYCore(SoCMini):
ethphy.reset.eq(ethphy_pads.rst), ethphy.reset.eq(ethphy_pads.rst),
ethphy_pads.link_up.eq(ethphy.link_up), ethphy_pads.link_up.eq(ethphy.link_up),
] ]
elif phy in [liteeth_phys.LiteEthPHYXGMII]:
ethphy_pads = platform.request("xgmii")
ethphy = phy(
clock_pads = ethphy_pads,
pads = ethphy_pads,
dw = 64,
)
else: else:
raise ValueError("Unsupported PHY") raise ValueError("Unsupported PHY")
self.ethphy = ethphy self.ethphy = ethphy