litex/milkymist/lm32/__init__.py

53 lines
1.7 KiB
Python
Raw Normal View History

2011-12-16 15:30:22 -05:00
from migen.fhdl.structure import *
2011-12-13 11:33:12 -05:00
from migen.bus import wishbone
2012-01-21 06:25:22 -05:00
class LM32:
2011-12-13 11:33:12 -05:00
def __init__(self):
2012-02-15 10:55:13 -05:00
self.ibus = i = wishbone.Interface()
self.dbus = d = wishbone.Interface()
2011-12-18 16:02:05 -05:00
self.interrupt = Signal(BV(32))
self.ext_break = Signal()
2011-12-16 15:30:22 -05:00
self._inst = Instance("lm32_top",
Instance.ClockPort("clk_i"),
Instance.ResetPort("rst_i"),
2012-02-15 10:55:13 -05:00
Instance.Input("interrupt", self.interrupt),
#Instance.Input("ext_break", self.ext_break),
Instance.Output("I_ADR_O", BV(32)),
Instance.Output("I_DAT_O", i.dat_w),
Instance.Output("I_SEL_O", i.sel),
Instance.Output("I_CYC_O", i.cyc),
Instance.Output("I_STB_O", i.stb),
Instance.Output("I_WE_O", i.we),
Instance.Output("I_CTI_O", i.cti),
Instance.Output("I_LOCK_O", BV(1)),
Instance.Output("I_BTE_O", i.bte),
Instance.Input("I_DAT_I", i.dat_r),
Instance.Input("I_ACK_I", i.ack),
Instance.Input("I_ERR_I", i.err),
Instance.Input("I_RTY_I", BV(1)),
2012-02-15 10:55:13 -05:00
Instance.Output("D_ADR_O", BV(32)),
Instance.Output("D_DAT_O", d.dat_w),
Instance.Output("D_SEL_O", d.sel),
Instance.Output("D_CYC_O", d.cyc),
Instance.Output("D_STB_O", d.stb),
Instance.Output("D_WE_O", d.we),
Instance.Output("D_CTI_O", d.cti),
Instance.Output("D_LOCK_O", BV(1)),
Instance.Output("D_BTE_O", d.bte),
Instance.Input("D_DAT_I", d.dat_r),
Instance.Input("D_ACK_I", d.ack),
Instance.Input("D_ERR_I", d.err),
Instance.Input("D_RTY_I", BV(1)))
2011-12-13 11:33:12 -05:00
2011-12-16 10:02:49 -05:00
def get_fragment(self):
2011-12-13 11:33:12 -05:00
comb = [
self._inst.get_io("I_RTY_I").eq(0),
self._inst.get_io("D_RTY_I").eq(0),
self.ibus.adr.eq(self._inst.get_io("I_ADR_O")[2:]),
self.dbus.adr.eq(self._inst.get_io("D_ADR_O")[2:])
2011-12-13 11:33:12 -05:00
]
2011-12-16 15:30:22 -05:00
return Fragment(comb=comb, instances=[self._inst])