litex/misoclib/liteeth/mac/__init__.py

34 lines
1.3 KiB
Python
Raw Normal View History

2015-01-28 03:14:01 -05:00
from liteeth.common import *
from liteeth.generic import *
2015-02-10 09:22:06 -05:00
from liteeth.mac.common import *
2015-01-30 10:27:56 -05:00
from liteeth.mac.core import LiteEthMACCore
from liteeth.mac.frontend.wishbone import LiteEthMACWishboneInterface
2015-01-28 03:14:01 -05:00
class LiteEthMAC(Module, AutoCSR):
def __init__(self, phy, dw, interface="crossbar", endianness="big",
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 = []
2015-01-30 10:27:56 -05:00
if interface == "crossbar":
self.submodules.crossbar = LiteEthMACCrossbar()
self.submodules.packetizer = LiteEthMACPacketizer()
self.submodules.depacketizer = LiteEthMACDepacketizer()
2015-01-28 19:03:47 -05:00
self.comb += [
2015-01-30 10:27:56 -05:00
Record.connect(self.crossbar.master.source, self.packetizer.sink),
Record.connect(self.packetizer.source, self.core.sink),
Record.connect(self.core.source, self.depacketizer.sink),
Record.connect(self.depacketizer.source, self.crossbar.master.sink)
2015-01-28 19:03:47 -05:00
]
2015-01-28 14:55:18 -05:00
elif interface == "wishbone":
2015-01-30 13:34:13 -05:00
self.submodules.interface = LiteEthMACWishboneInterface(dw, 2, 2)
self.comb += Port.connect(self.interface, self.core)
self.ev, self.bus = self.interface.sram.ev, self.interface.bus
2015-02-16 08:44:36 -05:00
self.csrs = self.interface.get_csrs() + self.core.get_csrs()
2015-01-28 03:14:01 -05:00
elif interface == "dma":
2015-01-27 17:59:06 -05:00
raise NotImplementedError
else:
raise ValueError(interface + " not supported by LiteEthMac!")
def get_csrs(self):
return self.csrs