from misoclib.com.liteeth.common import * from misoclib.com.liteeth.generic import * from misoclib.com.liteeth.generic.depacketizer import LiteEthDepacketizer from misoclib.com.liteeth.generic.packetizer import LiteEthPacketizer from misoclib.com.liteeth.generic.crossbar import LiteEthCrossbar class LiteEthMACDepacketizer(LiteEthDepacketizer): def __init__(self): LiteEthDepacketizer.__init__(self, eth_phy_description(8), eth_mac_description(8), mac_header, mac_header_len) class LiteEthMACPacketizer(LiteEthPacketizer): def __init__(self): LiteEthPacketizer.__init__(self, eth_mac_description(8), eth_phy_description(8), mac_header, mac_header_len) class LiteEthMACMasterPort: def __init__(self, dw): self.source = Source(eth_mac_description(dw)) self.sink = Sink(eth_mac_description(dw)) class LiteEthMACSlavePort: def __init__(self, dw): self.sink = Sink(eth_mac_description(dw)) self.source = Source(eth_mac_description(dw)) class LiteEthMACUserPort(LiteEthMACSlavePort): def __init__(self, dw): LiteEthMACSlavePort.__init__(self, dw) class LiteEthMACCrossbar(LiteEthCrossbar): def __init__(self): LiteEthCrossbar.__init__(self, LiteEthMACMasterPort, "ethernet_type") def get_port(self, ethernet_type): port = LiteEthMACUserPort(8) if ethernet_type in self.users.keys(): raise ValueError("Ethernet type {0:#x} already assigned".format(ethernet_type)) self.users[ethernet_type] = port return port