litex/liteeth/mac/__init__.py

53 lines
1.7 KiB
Python
Raw Normal View History

2015-01-28 03:14:01 -05:00
from liteeth.common import *
from liteeth.mac.core import LiteEthMACCore
from liteeth.mac.frontend import wishbone
from liteeth.generic.depacketizer import LiteEthDepacketizer
from liteeth.generic.packetizer import LiteEthPacketizer
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)
2015-01-28 03:14:01 -05:00
class LiteEthMAC(Module, AutoCSR):
2015-01-28 19:03:47 -05:00
def __init__(self, phy, dw, interface="mac", endianness="be",
2015-01-28 03:14:01 -05:00
with_hw_preamble_crc=True):
self.submodules.core = LiteEthMACCore(phy, dw, endianness, with_hw_preamble_crc)
self.csrs = None
2015-01-28 19:03:47 -05:00
if interface == "mac":
packetizer = LiteEthMACPacketizer()
depacketizer = LiteEthMACDepacketizer()
self.submodules += packetizer, depacketizer
self.comb += [
Record.connect(packetizer.source, self.core.sink),
Record.connect(self.core.source, depacketizer.sink)
]
self.sink, self.source = packetizer.sink, depacketizer.source
pass
2015-01-28 14:55:18 -05:00
elif interface == "wishbone":
2015-01-28 15:54:09 -05:00
self.submodules.interface = wishbone.LiteEthMACWishboneInterface(dw, 2, 2)
self.comb += [
Record.connect(self.interface.source, self.core.sink),
Record.connect(self.core.source, self.interface.sink)
]
self.ev, self.bus = self.interface.sram.ev, self.interface.bus
self.csrs = self.interface.get_csrs()
2015-01-28 03:14:01 -05:00
elif interface == "dma":
2015-01-27 17:59:06 -05:00
raise NotImplementedError
else:
2015-01-28 14:55:18 -05:00
raise ValueError(inteface + " not supported by LiteEthMac!")
def get_csrs(self):
return self.csrs