sdram: create frontend dir and move dma_lasmi/memtest/wishbone2lasmi to it
This commit is contained in:
parent
6d83a112e6
commit
b305b7828a
|
@ -1,11 +1,13 @@
|
||||||
from migen.fhdl.std import *
|
from migen.fhdl.std import *
|
||||||
from migen.flow.actor import *
|
from migen.flow.actor import *
|
||||||
from migen.flow.network import *
|
from migen.flow.network import *
|
||||||
from migen.actorlib import dma_lasmi, structuring, spi
|
from migen.actorlib import structuring, spi
|
||||||
from migen.bank.description import *
|
from migen.bank.description import *
|
||||||
from migen.bank.eventmanager import *
|
from migen.bank.eventmanager import *
|
||||||
from migen.genlib.record import Record
|
from migen.genlib.record import Record
|
||||||
|
|
||||||
|
from misoclib.mem.sdram.frontend import dma_lasmi
|
||||||
|
|
||||||
from liteusb.ftdi.std import *
|
from liteusb.ftdi.std import *
|
||||||
|
|
||||||
class FtdiDMAWriter(Module, AutoCSR):
|
class FtdiDMAWriter(Module, AutoCSR):
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
from migen.fhdl.std import *
|
||||||
|
from migen.flow.actor import *
|
||||||
|
from migen.genlib.fifo import SyncFIFO
|
||||||
|
|
||||||
|
class Reader(Module):
|
||||||
|
def __init__(self, lasmim, fifo_depth=None):
|
||||||
|
self.address = Sink([("a", lasmim.aw)])
|
||||||
|
self.data = Source([("d", lasmim.dw)])
|
||||||
|
self.busy = Signal()
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
if fifo_depth is None:
|
||||||
|
fifo_depth = lasmim.req_queue_size + lasmim.read_latency + 2
|
||||||
|
|
||||||
|
# request issuance
|
||||||
|
request_enable = Signal()
|
||||||
|
request_issued = Signal()
|
||||||
|
|
||||||
|
self.comb += [
|
||||||
|
lasmim.we.eq(0),
|
||||||
|
lasmim.stb.eq(self.address.stb & request_enable),
|
||||||
|
lasmim.adr.eq(self.address.a),
|
||||||
|
self.address.ack.eq(lasmim.req_ack & request_enable),
|
||||||
|
request_issued.eq(lasmim.stb & lasmim.req_ack)
|
||||||
|
]
|
||||||
|
|
||||||
|
# FIFO reservation level counter
|
||||||
|
# incremented when data is planned to be queued
|
||||||
|
# decremented when data is dequeued
|
||||||
|
data_dequeued = Signal()
|
||||||
|
rsv_level = Signal(max=fifo_depth+1)
|
||||||
|
self.sync += [
|
||||||
|
If(request_issued,
|
||||||
|
If(~data_dequeued, rsv_level.eq(rsv_level + 1))
|
||||||
|
).Elif(data_dequeued,
|
||||||
|
rsv_level.eq(rsv_level - 1)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
self.comb += [
|
||||||
|
self.busy.eq(rsv_level != 0),
|
||||||
|
request_enable.eq(rsv_level != fifo_depth)
|
||||||
|
]
|
||||||
|
|
||||||
|
# FIFO
|
||||||
|
fifo = SyncFIFO(lasmim.dw, fifo_depth)
|
||||||
|
self.submodules += fifo
|
||||||
|
|
||||||
|
self.comb += [
|
||||||
|
fifo.din.eq(lasmim.dat_r),
|
||||||
|
fifo.we.eq(lasmim.dat_r_ack),
|
||||||
|
|
||||||
|
self.data.stb.eq(fifo.readable),
|
||||||
|
fifo.re.eq(self.data.ack),
|
||||||
|
self.data.d.eq(fifo.dout),
|
||||||
|
data_dequeued.eq(self.data.stb & self.data.ack)
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class Writer(Module):
|
||||||
|
def __init__(self, lasmim, fifo_depth=None):
|
||||||
|
self.address_data = Sink([("a", lasmim.aw), ("d", lasmim.dw)])
|
||||||
|
self.busy = Signal()
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
if fifo_depth is None:
|
||||||
|
fifo_depth = lasmim.req_queue_size + lasmim.write_latency + 2
|
||||||
|
|
||||||
|
fifo = SyncFIFO(lasmim.dw, fifo_depth)
|
||||||
|
self.submodules += fifo
|
||||||
|
|
||||||
|
self.comb += [
|
||||||
|
lasmim.we.eq(1),
|
||||||
|
lasmim.stb.eq(fifo.writable & self.address_data.stb),
|
||||||
|
lasmim.adr.eq(self.address_data.a),
|
||||||
|
self.address_data.ack.eq(fifo.writable & lasmim.req_ack),
|
||||||
|
fifo.we.eq(self.address_data.stb & lasmim.req_ack),
|
||||||
|
fifo.din.eq(self.address_data.d)
|
||||||
|
]
|
||||||
|
|
||||||
|
self.comb += [
|
||||||
|
fifo.re.eq(lasmim.dat_w_ack),
|
||||||
|
If(data_valid,
|
||||||
|
lasmim.dat_we.eq(2**(lasmim.dw//8)-1),
|
||||||
|
lasmim.dat_w.eq(fifo.dout)
|
||||||
|
),
|
||||||
|
self.busy.eq(fifo.readable)
|
||||||
|
]
|
|
@ -1,9 +1,10 @@
|
||||||
from migen.fhdl.std import *
|
from migen.fhdl.std import *
|
||||||
from migen.genlib.misc import optree
|
from migen.genlib.misc import optree
|
||||||
from migen.bank.description import *
|
from migen.bank.description import *
|
||||||
from migen.actorlib import dma_lasmi
|
|
||||||
from migen.actorlib.spi import *
|
from migen.actorlib.spi import *
|
||||||
|
|
||||||
|
from misoclib.mem.sdram.frontend import dma_lasmi
|
||||||
|
|
||||||
@DecorateModule(InsertReset)
|
@DecorateModule(InsertReset)
|
||||||
@DecorateModule(InsertCE)
|
@DecorateModule(InsertCE)
|
||||||
class LFSR(Module):
|
class LFSR(Module):
|
|
@ -1,9 +1,9 @@
|
||||||
from migen.fhdl.std import *
|
from migen.fhdl.std import *
|
||||||
from migen.actorlib import dma_lasmi
|
|
||||||
from migen.sim.generic import run_simulation
|
from migen.sim.generic import run_simulation
|
||||||
|
|
||||||
from misoclib.mem.sdram.bus import lasmibus
|
from misoclib.mem.sdram.bus import lasmibus
|
||||||
from misoclib.mem.sdram.lasmicon import *
|
from misoclib.mem.sdram.lasmicon import *
|
||||||
|
from misoclib.mem.sdram.frontend import dma_lasmi
|
||||||
|
|
||||||
from common import sdram_phy, sdram_geom, sdram_timing, DFILogger
|
from common import sdram_phy, sdram_geom, sdram_timing, DFILogger
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,9 @@ from migen.bus import wishbone
|
||||||
from migen.bus.transactions import *
|
from migen.bus.transactions import *
|
||||||
from migen.sim.generic import run_simulation
|
from migen.sim.generic import run_simulation
|
||||||
|
|
||||||
from misoclib.mem.sdram.bus import lasmibus, wishbone2lasmi
|
from misoclib.mem.sdram.bus import lasmibus
|
||||||
from misoclib.mem.sdram.lasmicon import *
|
from misoclib.mem.sdram.lasmicon import *
|
||||||
|
from misoclib.mem.sdram.frontend import wishbone2lasmi
|
||||||
|
|
||||||
from common import sdram_phy, sdram_geom, sdram_timing, DFILogger
|
from common import sdram_phy, sdram_geom, sdram_timing, DFILogger
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
from migen.fhdl.std import *
|
from migen.fhdl.std import *
|
||||||
from migen.bus import wishbone, csr
|
from migen.bus import wishbone, csr
|
||||||
|
|
||||||
from misoclib.mem.sdram.bus import dfi, lasmibus, wishbone2lasmi
|
from misoclib.mem.sdram.bus import dfi, lasmibus
|
||||||
from misoclib.mem.sdram import minicon, lasmicon
|
from misoclib.mem.sdram import minicon, lasmicon
|
||||||
from misoclib.mem.sdram import dfii
|
from misoclib.mem.sdram import dfii
|
||||||
from misoclib.mem.sdram import memtest
|
from misoclib.mem.sdram.frontend import memtest, wishbone2lasmi
|
||||||
from misoclib.soc import SoC, mem_decoder
|
from misoclib.soc import SoC, mem_decoder
|
||||||
|
|
||||||
class SDRAMSoC(SoC):
|
class SDRAMSoC(SoC):
|
||||||
|
|
|
@ -2,8 +2,9 @@ from migen.fhdl.std import *
|
||||||
from migen.genlib.fifo import AsyncFIFO
|
from migen.genlib.fifo import AsyncFIFO
|
||||||
from migen.genlib.record import layout_len
|
from migen.genlib.record import layout_len
|
||||||
from migen.bank.description import AutoCSR
|
from migen.bank.description import AutoCSR
|
||||||
from migen.actorlib import structuring, dma_lasmi, spi
|
from migen.actorlib import structuring, spi
|
||||||
|
|
||||||
|
from misoclib.mem.sdram.frontend import dma_lasmi
|
||||||
from misoclib.video.dvisampler.edid import EDID
|
from misoclib.video.dvisampler.edid import EDID
|
||||||
from misoclib.video.dvisampler.clocking import Clocking
|
from misoclib.video.dvisampler.clocking import Clocking
|
||||||
from misoclib.video.dvisampler.datacapture import DataCapture
|
from misoclib.video.dvisampler.datacapture import DataCapture
|
||||||
|
|
|
@ -3,7 +3,8 @@ from migen.genlib.fsm import FSM, NextState
|
||||||
from migen.bank.description import *
|
from migen.bank.description import *
|
||||||
from migen.bank.eventmanager import *
|
from migen.bank.eventmanager import *
|
||||||
from migen.flow.actor import *
|
from migen.flow.actor import *
|
||||||
from migen.actorlib import dma_lasmi
|
|
||||||
|
from misoclib.mem.sdram.frontend import dma_lasmi
|
||||||
|
|
||||||
# Slot status: EMPTY=0 LOADED=1 PENDING=2
|
# Slot status: EMPTY=0 LOADED=1 PENDING=2
|
||||||
class _Slot(Module, AutoCSR):
|
class _Slot(Module, AutoCSR):
|
||||||
|
|
|
@ -2,8 +2,9 @@ from migen.fhdl.std import *
|
||||||
from migen.flow.network import *
|
from migen.flow.network import *
|
||||||
from migen.flow import plumbing
|
from migen.flow import plumbing
|
||||||
from migen.bank.description import AutoCSR
|
from migen.bank.description import AutoCSR
|
||||||
from migen.actorlib import dma_lasmi, structuring, misc
|
from migen.actorlib import structuring, misc
|
||||||
|
|
||||||
|
from misoclib.mem.sdram.frontend import dma_lasmi
|
||||||
from misoclib.video.framebuffer.format import bpp, pixel_layout, FrameInitiator, VTG
|
from misoclib.video.framebuffer.format import bpp, pixel_layout, FrameInitiator, VTG
|
||||||
from misoclib.video.framebuffer.phy import Driver
|
from misoclib.video.framebuffer.phy import Driver
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue