frontend: remove geom/timing parameters from LiteDRAMPort since this prevent providing async or arbitraty length port easily
This commit is contained in:
parent
d7458a3c34
commit
9d2c8bf1cf
|
@ -73,12 +73,9 @@ class LiteDRAMInterface(Record):
|
||||||
|
|
||||||
|
|
||||||
class LiteDRAMPort(Record):
|
class LiteDRAMPort(Record):
|
||||||
def __init__(self, aw, dw, cmd_buffer_depth=0, read_latency=0, write_latency=0):
|
def __init__(self, aw, dw):
|
||||||
self.aw = aw
|
self.aw = aw
|
||||||
self.dw = dw
|
self.dw = dw
|
||||||
self.cmd_buffer_depth = cmd_buffer_depth
|
|
||||||
self.read_latency = read_latency
|
|
||||||
self.write_latency = write_latency
|
|
||||||
|
|
||||||
layout = cmd_layout(aw) + data_layout(dw)
|
layout = cmd_layout(aw) + data_layout(dw)
|
||||||
Record.__init__(self, layout)
|
Record.__init__(self, layout)
|
||||||
|
|
|
@ -27,10 +27,7 @@ class LiteDRAMCrossbar(Module):
|
||||||
if self.finalized:
|
if self.finalized:
|
||||||
raise FinalizeError
|
raise FinalizeError
|
||||||
port = LiteDRAMPort(self.rca_bits + self.bank_bits,
|
port = LiteDRAMPort(self.rca_bits + self.bank_bits,
|
||||||
self.dw,
|
self.dw)
|
||||||
self.cmd_buffer_depth,
|
|
||||||
self.read_latency,
|
|
||||||
self.write_latency)
|
|
||||||
self.masters.append(port)
|
self.masters.append(port)
|
||||||
return port
|
return port
|
||||||
|
|
||||||
|
|
|
@ -5,16 +5,12 @@ from litex.soc.interconnect import stream
|
||||||
|
|
||||||
|
|
||||||
class LiteDRAMDMAReader(Module):
|
class LiteDRAMDMAReader(Module):
|
||||||
def __init__(self, port, fifo_depth=None):
|
def __init__(self, port, fifo_depth=16):
|
||||||
self.sink = sink = stream.Endpoint([("address", port.aw)])
|
self.sink = sink = stream.Endpoint([("address", port.aw)])
|
||||||
self.source = source = stream.Endpoint([("data", port.dw)])
|
self.source = source = stream.Endpoint([("data", port.dw)])
|
||||||
self.busy = Signal()
|
|
||||||
|
|
||||||
# # #
|
# # #
|
||||||
|
|
||||||
if fifo_depth is None:
|
|
||||||
fifo_depth = port.cmd_buffer_depth + port.read_latency + 2
|
|
||||||
|
|
||||||
# request issuance
|
# request issuance
|
||||||
request_enable = Signal()
|
request_enable = Signal()
|
||||||
request_issued = Signal()
|
request_issued = Signal()
|
||||||
|
@ -39,10 +35,7 @@ class LiteDRAMDMAReader(Module):
|
||||||
rsv_level.eq(rsv_level - 1)
|
rsv_level.eq(rsv_level - 1)
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
self.comb += [
|
self.comb += request_enable.eq(rsv_level != fifo_depth)
|
||||||
self.busy.eq(rsv_level != 0),
|
|
||||||
request_enable.eq(rsv_level != fifo_depth)
|
|
||||||
]
|
|
||||||
|
|
||||||
# FIFO
|
# FIFO
|
||||||
fifo = SyncFIFO(port.dw, fifo_depth)
|
fifo = SyncFIFO(port.dw, fifo_depth)
|
||||||
|
@ -60,16 +53,12 @@ class LiteDRAMDMAReader(Module):
|
||||||
|
|
||||||
|
|
||||||
class LiteDRAMDMAWriter(Module):
|
class LiteDRAMDMAWriter(Module):
|
||||||
def __init__(self, port, fifo_depth=None):
|
def __init__(self, port, fifo_depth=16):
|
||||||
self.sink = sink = stream.Endpoint([("address", port.aw),
|
self.sink = sink = stream.Endpoint([("address", port.aw),
|
||||||
("data", port.dw)])
|
("data", port.dw)])
|
||||||
self.busy = Signal()
|
|
||||||
|
|
||||||
# # #
|
# # #
|
||||||
|
|
||||||
if fifo_depth is None:
|
|
||||||
fifo_depth = port.cmd_buffer_depth + port.write_latency + 2
|
|
||||||
|
|
||||||
fifo = SyncFIFO(port.dw, fifo_depth)
|
fifo = SyncFIFO(port.dw, fifo_depth)
|
||||||
self.submodules += fifo
|
self.submodules += fifo
|
||||||
|
|
||||||
|
@ -87,6 +76,5 @@ class LiteDRAMDMAWriter(Module):
|
||||||
fifo.re.eq(1),
|
fifo.re.eq(1),
|
||||||
port.wdata_we.eq(2**(port.dw//8)-1),
|
port.wdata_we.eq(2**(port.dw//8)-1),
|
||||||
port.wdata.eq(fifo.dout)
|
port.wdata.eq(fifo.dout)
|
||||||
),
|
)
|
||||||
self.busy.eq(fifo.readable)
|
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue