1package top 2 3import bus.axi4.AXI4ToAXI4Lite 4import chisel3._ 5import chisel3.util._ 6import bus.simplebus._ 7import bus.tilelink.{NaiveTL1toN, NaiveTLToAXI4, TLCached, TLParameters} 8import device._ 9 10class SimMMIO(para: TLParameters) extends Module { 11 val io = IO(new Bundle { 12 val rw = Flipped(TLCached(para)) 13 val uart = new UARTIO 14 }) 15 16 val devAddrSpace = List( 17 (0x40600000L, 0x10L), // uart 18 (0x50000000L, 0x400000L), // vmem 19 (0x40001000L, 0x8L), // vga ctrl 20 (0x40000000L, 0x1000L), // flash 21 (0x40002000L, 0x1000L) // dummy sdcard 22 ) 23 24 val xbar = Module(new NaiveTL1toN(devAddrSpace, io.rw.params)) 25 xbar.io.in <> io.rw 26 27 val axiOut = xbar.io.out.map(tl => AXI4ToAXI4Lite(NaiveTLToAXI4(tl))) 28 29 val uart = Module(new AXI4UART) 30 val vga = Module(new AXI4VGA(sim = true)) 31 val flash = Module(new AXI4Flash) 32 val sd = Module(new AXI4DummySD) 33 34 uart.io.in <> axiOut(0) 35 vga.io.in.fb <> axiOut(1) 36 vga.io.in.ctrl <> axiOut(2) 37 flash.io.in <> axiOut(3) 38 sd.io.in <> axiOut(4) 39 vga.io.vga := DontCare 40 io.uart <> uart.io.extra.get 41} 42