sdram: create frontend dir and move dma_lasmi/memtest/wishbone2lasmi to it

This commit is contained in:
Florent Kermarrec 2015-03-02 08:24:51 +01:00
parent 6d83a112e6
commit b305b7828a
11 changed files with 105 additions and 9 deletions

View File

@ -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):

View File

View File

@ -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)
]

View File

@ -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):

View File

@ -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

View File

@ -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

View File

@ -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):

View File

@ -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

View File

@ -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):

View File

@ -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