mirror of
https://github.com/enjoy-digital/litex.git
synced 2025-01-04 09:52:26 -05:00
integration/soc/add_sdram: Use new AXIUpConverter when up-converting is required (Instead of going through Wishbone).
This commit is contained in:
parent
ea49be9302
commit
1052584cf7
1 changed files with 16 additions and 7 deletions
|
@ -1358,17 +1358,25 @@ class LiteXSoC(SoC):
|
||||||
if isinstance(mem_bus, axi.AXIInterface):
|
if isinstance(mem_bus, axi.AXIInterface):
|
||||||
# If same data_width, connect it directly.
|
# If same data_width, connect it directly.
|
||||||
if port.data_width == mem_bus.data_width:
|
if port.data_width == mem_bus.data_width:
|
||||||
self.logger.info("Matching AXI MEM data width ({})\n".format(port.data_width))
|
|
||||||
self.submodules += LiteDRAMAXI2Native(
|
self.submodules += LiteDRAMAXI2Native(
|
||||||
axi = mem_bus,
|
axi = mem_bus,
|
||||||
port = port,
|
port = port,
|
||||||
base_address = self.bus.regions["main_ram"].origin)
|
base_address = self.bus.regions["main_ram"].origin
|
||||||
# If different data_width, do the adaptation and connect it via Wishbone.
|
)
|
||||||
|
# UpConvert.
|
||||||
|
elif port.data_width > mem_bus.data_width:
|
||||||
|
axi_port = axi.AXIInterface(data_width=port.data_width, id_width=8) # FIXME: id_width.
|
||||||
|
self.submodules += axi.AXIUpConverter(
|
||||||
|
axi_from = mem_bus,
|
||||||
|
axi_to = axi_port,
|
||||||
|
)
|
||||||
|
self.submodules += LiteDRAMAXI2Native(
|
||||||
|
axi = axi_port,
|
||||||
|
port = port,
|
||||||
|
base_address = self.bus.regions["main_ram"].origin
|
||||||
|
)
|
||||||
|
# DownConvert. FIXME: Pass through Wishbone for now, create/use native AXI converter.
|
||||||
else:
|
else:
|
||||||
self.logger.info("Converting MEM data width: {} to {} via Wishbone".format(
|
|
||||||
port.data_width,
|
|
||||||
mem_bus.data_width))
|
|
||||||
# FIXME: Replace WB data-width converter with native AXI converter.
|
|
||||||
mem_wb = wishbone.Interface(
|
mem_wb = wishbone.Interface(
|
||||||
data_width = self.cpu.mem_axi.data_width,
|
data_width = self.cpu.mem_axi.data_width,
|
||||||
adr_width = 32-log2_int(mem_bus.data_width//8))
|
adr_width = 32-log2_int(mem_bus.data_width//8))
|
||||||
|
@ -1383,6 +1391,7 @@ class LiteXSoC(SoC):
|
||||||
port = port,
|
port = port,
|
||||||
base_address = self.bus.regions["main_ram"].origin)
|
base_address = self.bus.regions["main_ram"].origin)
|
||||||
self.submodules += wishbone.Converter(mem_wb, litedram_wb)
|
self.submodules += wishbone.Converter(mem_wb, litedram_wb)
|
||||||
|
|
||||||
# Check if bus is a Native bus and connect it.
|
# Check if bus is a Native bus and connect it.
|
||||||
if isinstance(mem_bus, LiteDRAMNativePort):
|
if isinstance(mem_bus, LiteDRAMNativePort):
|
||||||
# If same data_width, connect it directly.
|
# If same data_width, connect it directly.
|
||||||
|
|
Loading…
Reference in a new issue