d916209c04a0f31c45c19d0eb8b1036d93a81568
[litex.git] / litesata / frontend / crossbar.py
1 from litesata.common import *
2 from litesata.frontend.common import *
3 from litesata.frontend.arbiter import LiteSATAArbiter
4
5 class LiteSATACrossbar(Module):
6 def __init__(self, core):
7 self.users = []
8 self.master = LiteSATAMasterPort(32)
9 self.comb += [
10 self.master.source.connect(core.sink),
11 core.source.connect(self.master.sink)
12 ]
13
14 def get_port(self):
15 port = LiteSATAUserPort(32)
16 self.users += [port]
17 return port
18
19 def get_ports(self, n):
20 ports = []
21 for i in range(n):
22 ports.append(self.get_port())
23 return ports
24
25 def do_finalize(self):
26 self.arbiter = LiteSATAArbiter(self.users, self.master)