litex/liteusb/core/com.py

29 lines
853 B
Python
Raw Normal View History

from migen.fhdl.std import *
from migen.flow.actor import *
from liteusb.ftdi.std import *
from liteusb.ftdi.crossbar import FtdiCrossbar
from liteusb.ftdi.packetizer import FtdiPacketizer
from liteusb.ftdi.depacketizer import FtdiDepacketizer
from liteusb.ftdi.phy import FtdiPHY
class FtdiCom(Module):
def __init__(self, pads, *ports):
# crossbar
self.submodules.crossbar = FtdiCrossbar(list(ports))
# packetizer / depacketizer
self.submodules.packetizer = FtdiPacketizer()
self.submodules.depacketizer = FtdiDepacketizer()
self.comb += [
self.crossbar.slave.source.connect(self.packetizer.sink),
self.depacketizer.source.connect(self.crossbar.slave.sink)
]
# phy
self.submodules.phy = FtdiPHY(pads)
self.comb += [
self.packetizer.source.connect(self.phy.sink),
self.phy.source.connect(self.depacketizer.sink)
]