Initial import
[litex.git] / milkymist / uart / __init__.py
1 from migen.fhdl import structure as f
2 from migen.bus import csr
3
4 class Inst:
5 def __init__(self, csr_addr, clk_freq, baud=115200, break_en_default=f.Constant(0)):
6 self.bus = csr.Slave("uart")
7 f.Declare(self, "tx")
8 f.Declare(self, "rx")
9 f.Declare(self, "irq")
10 f.Declare(self, "brk")
11 self._inst = f.Instance("uart",
12 [("csr_do", self.bus.d_o),
13 ("uart_tx", self.tx),
14 ("irq", self.irq),
15 ("break", self.brk)],
16 [("csr_a", self.bus.a_i),
17 ("csr_we", self.bus.we_i),
18 ("csr_di", self.bus.d_i),
19 ("uart_rx", self.rx)],
20 [("csr_addr", f.Constant(csr_addr, f.BV(4))),
21 ("clk_freq", clk_freq),
22 ("baud", baud),
23 ("break_en_default", break_en_default)],
24 "sys_clk",
25 "sys_rst")
26
27 def GetFragment(self):
28 return f.Fragment(instances=[self._inst], pads={self.tx, self.rx})