mirror of
https://github.com/rdolbeau/NuBusFPGA.git
synced 2024-12-22 10:29:53 +00:00
48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
from migen import *
|
|
from migen.genlib.fifo import *
|
|
|
|
import litex
|
|
from litex.soc.interconnect import wishbone
|
|
|
|
from migen.genlib.cdc import BusSynchronizer
|
|
|
|
class Wishbone2NuBus(Module):
|
|
def __init__(self, nubus, wb):
|
|
|
|
# cpu
|
|
# input cpu_valid,
|
|
# input [31:0] cpu_addr,
|
|
# input [31:0] cpu_wdata,
|
|
# input [ 3:0] cpu_write,
|
|
# output cpu_ready,
|
|
# output [31:0] cpu_rdata,
|
|
#input cpu_lock,
|
|
#input cpu_eclr,
|
|
#output [3:0] cpu_errors,
|
|
|
|
#wb_adr_rev = Signal(32)
|
|
#self.comb += [ wb_adr_rev[ 0: 8].eq(wb.adr[22:30]),
|
|
# wb_adr_rev[ 8:16].eq(wb.adr[14:22]),
|
|
# wb_adr_rev[16:24].eq(wb.adr[ 6:14]),
|
|
# wb_adr_rev[24:32].eq(Cat(Signal(2, reset = 0),wb.adr[ 0: 6])), ]
|
|
|
|
self.comb += nubus.cpu_valid.eq(wb.cyc & wb.stb)
|
|
self.comb += nubus.cpu_addr.eq(Cat(Signal(2, reset = 0), wb.adr))
|
|
#self.comb += nubus.cpu_addr.eq(wb_adr_rev)
|
|
self.comb += nubus.cpu_wdata.eq(wb.dat_w)
|
|
self.comb += If(wb.we == 1,
|
|
nubus.cpu_write.eq(wb.sel)).Else(
|
|
nubus.cpu_write.eq(0))
|
|
self.comb += wb.ack.eq(nubus.cpu_ready)
|
|
self.comb += wb.dat_r.eq(nubus.cpu_rdata)
|
|
self.comb += nubus.cpu_lock.eq(0) # FIXME: TODO: ???
|
|
self.comb += nubus.cpu_eclr.eq(0) # FIXME: TODO: ???
|
|
|
|
#pad_user_led_0 = platform.request("user_led", 0)
|
|
#pad_user_led_1 = platform.request("user_led", 1)
|
|
#self.comb += pad_user_led_0.eq(nubus.cpu_valid)
|
|
#cpu_valid_ex = Signal(reset = 0)
|
|
#self.sync += cpu_valid_ex.eq(nubus.cpu_valid | cpu_valid_ex)
|
|
#self.comb += pad_user_led_1.eq(cpu_valid_ex)
|
|
|