Skip to content

Commit

Permalink
efinix_trion_t20: add sdram
Browse files Browse the repository at this point in the history
add sdram of the efinix trion t20 bga256 dev kit.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
  • Loading branch information
maass-hamburg committed Jun 13, 2024
1 parent ed6ff8f commit 2cd89cd
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
16 changes: 16 additions & 0 deletions litex_boards/platforms/efinix_trion_t20_bga256_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,22 @@
Subsignal("miso", Pins("N1")),
IOStandard("3.3_V_LVTTL_/_LVCMOS")
),

# SDRAM NDS36PT5-20ET
("sdram_clock", 0, Pins("P16"), IOStandard("3.3_V_LVTTL_/_LVCMOS"), Misc("SLEW=FAST")),
("sdram", 0,
Subsignal("a", Pins("C12 D11 C11 E11 J13 J14 J15 K12 K14 L15 D12 L16 M12")),
Subsignal("dq", Pins("B14 A14 B13 A13 B12 B11 A11 B10 K15 E16 D16 C16 C15 B16 B15 A15")),
Subsignal("ba", Pins("C14 C13")),
Subsignal("dm", Pins("K16 B9")),
Subsignal("ras_n", Pins("E12")),
Subsignal("cas_n", Pins("H12")),
Subsignal("we_n", Pins("J12")),
Subsignal("cs_n", Pins("D13")),
Subsignal("cke", Pins("M16")),
IOStandard("3.3_V_LVTTL_/_LVCMOS"),
Misc("SLEW = FAST")
),
]

# Bank voltage ---------------------------------------------------------------------------------------
Expand Down
22 changes: 21 additions & 1 deletion litex_boards/targets/efinix_trion_t20_bga256_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,26 @@

from litex_boards.platforms import efinix_trion_t20_bga256_dev_kit

from litex.build.io import ClkOutput
from litex.build.generic_platform import *

from litex.soc.cores.clock import *
from litex.soc.integration.soc_core import *
from litex.soc.integration.builder import *
from litex.soc.cores.led import LedChaser

from litedram.modules import NDS36PT5
from litedram.phy import GENSDRPHY

# CRG ----------------------------------------------------------------------------------------------

class _CRG(LiteXModule):
name_sdram_clk = "sdram_clk"

def __init__(self, platform, sys_clk_freq):
self.rst = Signal()
self.cd_sys = ClockDomain()
self.cd_sys_ps = ClockDomain()

# # #

Expand All @@ -39,6 +46,7 @@ def __init__(self, platform, sys_clk_freq):
self.comb += pll.reset.eq(~rst_n | self.rst)
pll.register_clkin(clk50, 50e6)
pll.create_clkout(self.cd_sys, sys_clk_freq, with_reset=True)
pll.create_clkout(self.cd_sys_ps, sys_clk_freq, phase=180, name=self.name_sdram_clk)

# BaseSoC ------------------------------------------------------------------------------------------

Expand All @@ -52,6 +60,18 @@ def __init__(self, sys_clk_freq=100e6, with_spi_flash=False, with_led_chaser=Tru
# SoCCore ----------------------------------------------------------------------------------
SoCCore.__init__(self, platform, sys_clk_freq, ident="LiteX SoC on Efinix Trion T20 BGA256 Dev Kit", **kwargs)

# SDR SDRAM --------------------------------------------------------------------------------
if not self.integrated_main_ram_size and sys_clk_freq <= 50e6 :
self.specials += ClkOutput(self.crg.name_sdram_clk, platform.request("sdram_clock"))

self.sdrphy = GENSDRPHY(platform.request("sdram"), sys_clk_freq)
self.add_sdram("sdram",
phy = self.sdrphy,
module = NDS36PT5(sys_clk_freq, "1:1"),
l2_cache_size = kwargs.get("l2_size", 8192),
with_bist = kwargs.get("with_bist", False)
)

# SPI Flash --------------------------------------------------------------------------------
if with_spi_flash:
from litespi.modules import W25Q32JV
Expand All @@ -70,7 +90,7 @@ def main():
from litex.build.parser import LiteXArgumentParser
parser = LiteXArgumentParser(platform=efinix_trion_t20_bga256_dev_kit.Platform, description="LiteX SoC on Efinix Trion T20 BGA256 Dev Kit.")
parser.add_target_argument("--flash", action="store_true", help="Flash bitstream.")
parser.add_target_argument("--sys-clk-freq", default=100e6, type=float, help="System clock frequency.")
parser.add_target_argument("--sys-clk-freq", default=45e6, type=float, help="System clock frequency.")
parser.add_target_argument("--with-spi-flash", action="store_true", help="Enable SPI Flash (MMAPed).")
args = parser.parse_args()

Expand Down

0 comments on commit 2cd89cd

Please sign in to comment.