Skip to content

Commit

Permalink
Merge branch 'master' into ti375_c529
Browse files Browse the repository at this point in the history
  • Loading branch information
enjoy-digital authored Nov 16, 2024
2 parents 4c61bac + 0e77cdf commit 49c6c83
Show file tree
Hide file tree
Showing 17 changed files with 103 additions and 25 deletions.
1 change: 1 addition & 0 deletions litex_boards/platforms/efinix_t8f81_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@

class Platform(EfinixPlatform):
default_clk_name = "clk33"
default_clk_freq = 33.333e6
default_clk_period = 1e9/33.333e6

def __init__(self, toolchain="efinity"):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ def rgmii_ethernet_qse_ios(con, n=""):

class Platform(EfinixPlatform):
default_clk_name = "clk25"
default_clk_freq = 25e6
default_clk_period = 1e9/50e6

def __init__(self, toolchain="efinity"):
Expand Down
1 change: 1 addition & 0 deletions litex_boards/platforms/efinix_trion_t120_bga576_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ def usb_pmod_io(pmod):

class Platform(EfinixPlatform):
default_clk_name = "clk40"
default_clk_freq = 40e6
default_clk_period = 1e9/40e6

def __init__(self, toolchain="efinity"):
Expand Down
1 change: 1 addition & 0 deletions litex_boards/platforms/efinix_trion_t20_bga256_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@

class Platform(EfinixPlatform):
default_clk_name = "clk50"
default_clk_freq = 50e6
default_clk_period = 1e9/50e6

def __init__(self, toolchain="efinity"):
Expand Down
1 change: 1 addition & 0 deletions litex_boards/platforms/efinix_trion_t20_mipi_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@

class Platform(EfinixPlatform):
default_clk_name = "clk50"
default_clk_freq = 50e6
default_clk_period = 1e9/50e6

def __init__(self, toolchain="efinity"):
Expand Down
1 change: 1 addition & 0 deletions litex_boards/platforms/efinix_xyloni_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@

class Platform(EfinixPlatform):
default_clk_name = "clk33"
default_clk_freq = 33.333e6
default_clk_period = 1e9/33.333e6

def __init__(self, toolchain="efinity"):
Expand Down
1 change: 1 addition & 0 deletions litex_boards/platforms/jungle_electronics_fireant.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@

class Platform(EfinixPlatform):
default_clk_name = "clk33"
default_clk_freq = 33.33e6
default_clk_period = 1e9/33.33e6

def __init__(self, toolchain="efinity"):
Expand Down
6 changes: 3 additions & 3 deletions litex_boards/platforms/limesdr_mini_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@
# SPIFlash
("spiflash", 0,
Subsignal("cs_n", Pins("U17")),
Subsignal("clk", Pins("U16")),
Subsignal("miso", Pins("U18")),
Subsignal("mosi", Pins("T18")),
#Subsignal("clk", Pins("U16")),
Subsignal("miso", Pins("T18")),
Subsignal("mosi", Pins("U18")),
IOStandard("LVCMOS33"),
),

Expand Down
14 changes: 12 additions & 2 deletions litex_boards/targets/efinix_t8f81_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from migen.genlib.resetsync import AsyncResetSynchronizer

from litex.gen import *
from litex.gen.genlib.misc import WaitTimer

from litex_boards.platforms import efinix_t8f81_dev_kit

Expand All @@ -28,16 +29,25 @@ class _CRG(LiteXModule):
def __init__(self, platform, sys_clk_freq):
self.rst = Signal()
self.cd_sys = ClockDomain()
self.cd_rst = ClockDomain(reset_less=True)

# # #

clk33 = platform.request("clk33")
rst_n = platform.request("user_btn", 0)

self.comb += self.cd_rst.clk.eq(clk33)

# A pulse is necessary to do a reset.
self.rst_pulse = Signal()
self.reset_timer = reset_timer = ClockDomainsRenamer("rst")(WaitTimer(25e-6*platform.default_clk_freq))
self.comb += self.rst_pulse.eq(self.rst ^ reset_timer.done)
self.comb += reset_timer.wait.eq(self.rst)

# PLL.
self.pll = pll = TRIONPLL(platform)
self.comb += pll.reset.eq(~rst_n | self.rst)
pll.register_clkin(clk33, 33.333e6)
self.comb += pll.reset.eq(~rst_n | self.rst_pulse)
pll.register_clkin(clk33, platform.default_clk_freq)
pll.create_clkout(self.cd_sys, sys_clk_freq, with_reset=True)

# BaseSoC ------------------------------------------------------------------------------------------
Expand Down
16 changes: 13 additions & 3 deletions litex_boards/targets/efinix_ti375_c529_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from migen.genlib.resetsync import AsyncResetSynchronizer

from litex.gen import *
from litex.gen.genlib.misc import WaitTimer

from litex.build.io import DDROutput, DDRInput, SDROutput, SDRTristate
from litex.build.generic_platform import Subsignal, Pins, Misc, IOStandard
Expand Down Expand Up @@ -42,14 +43,15 @@

class _CRG(LiteXModule):
def __init__(self, platform, sys_clk_freq, cpu_clk_freq):
#self.rst = Signal()
self.rst = Signal()
self.cd_sys = ClockDomain()
self.cd_usb = ClockDomain()
self.cd_video = ClockDomain()
self.cd_cpu = ClockDomain()
self.cd_eth = ClockDomain()
self.cd_eth_90 = ClockDomain()
self.cd_eth_rx = ClockDomain()
self.cd_rst = ClockDomain(reset_less=True)

# # #

Expand All @@ -58,10 +60,18 @@ def __init__(self, platform, sys_clk_freq, cpu_clk_freq):
clk25 = platform.request("clk25")
rst_n = platform.request("user_btn", 0)

self.comb += self.cd_rst.clk.eq(clk100)

# A pulse is necessary to do a reset.
self.rst_pulse = Signal()
self.reset_timer = reset_timer = ClockDomainsRenamer("rst")(WaitTimer(25e-6*platform.default_clk_freq))
self.comb += self.rst_pulse.eq(self.rst ^ reset_timer.done)
self.comb += reset_timer.wait.eq(self.rst)

# PLL.
self.pll = pll = TITANIUMPLL(platform)
self.comb += pll.reset.eq(~rst_n)
pll.register_clkin(clk100, 100e6)
self.comb += pll.reset.eq(~rst_n | self.rst_pulse)
pll.register_clkin(clk100, platform.default_clk_freq)
# You can use CLKOUT0 only for clocks with a maximum frequency of 4x
# (integer) of the reference clock. If all your system clocks do not fall within
# this range, you should dedicate one unused clock for CLKOUT0.
Expand Down
14 changes: 12 additions & 2 deletions litex_boards/targets/efinix_titanium_ti60_f225_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from migen.genlib.resetsync import AsyncResetSynchronizer

from litex.gen import *
from litex.gen.genlib.misc import WaitTimer

from litex_boards.platforms import efinix_titanium_ti60_f225_dev_kit

Expand All @@ -31,16 +32,25 @@ def __init__(self, platform, sys_clk_freq):
self.cd_sys = ClockDomain()
self.cd_sys2x = ClockDomain()
self.cd_sys2x_ps = ClockDomain()
self.cd_rst = ClockDomain(reset_less=True)

# # #

clk25 = platform.request("clk25")
rst_n = platform.request("user_btn", 0)

self.comb += self.cd_rst.clk.eq(clk25)

# A pulse is necessary to do a reset.
self.rst_pulse = Signal()
self.reset_timer = reset_timer = ClockDomainsRenamer("rst")(WaitTimer(25e-6*platform.default_clk_freq))
self.comb += self.rst_pulse.eq(self.rst ^ reset_timer.done)
self.comb += reset_timer.wait.eq(self.rst)

# PLL
self.pll = pll = TITANIUMPLL(platform)
self.comb += pll.reset.eq(~rst_n | self.rst)
pll.register_clkin(clk25, 25e6)
self.comb += pll.reset.eq(~rst_n | self.rst_pulse)
pll.register_clkin(clk25, platform.default_clk_freq)
# You can use CLKOUT0 only for clocks with a maximum frequency of 4x
# (integer) of the reference clock. If all your system clocks do not fall within
# this range, you should dedicate one unused clock for CLKOUT0.
Expand Down
16 changes: 12 additions & 4 deletions litex_boards/targets/efinix_trion_t120_bga576_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from migen.genlib.resetsync import AsyncResetSynchronizer

from litex.gen import *
from litex.gen.genlib.misc import WaitTimer

from litex_boards.platforms import efinix_trion_t120_bga576_dev_kit

Expand All @@ -29,20 +30,27 @@

class _CRG(LiteXModule):
def __init__(self, platform, sys_clk_freq):
#self.rst = Signal()
self.rst = Signal()
self.cd_sys = ClockDomain()
self.cd_rst = ClockDomain(reset_less=True)

# # #

clk40 = platform.request("clk40")
rst_n = platform.request("user_btn", 0)

self.comb += self.cd_rst.clk.eq(clk40)

# A pulse is necessary to do a reset.
self.rst_pulse = Signal()
self.reset_timer = reset_timer = ClockDomainsRenamer("rst")(WaitTimer(25e-6*platform.default_clk_freq))
self.comb += self.rst_pulse.eq(self.rst ^ reset_timer.done)
self.comb += reset_timer.wait.eq(self.rst)

# PLL
self.pll = pll = TRIONPLL(platform)
#self.comb += pll.reset.eq(~rst_n | self.rst)
self.comb += pll.reset.eq(~rst_n)
pll.register_clkin(clk40, 40e6)
self.comb += pll.reset.eq(~rst_n | self.rst_pulse)
pll.register_clkin(clk40, platform.default_clk_freq)
pll.create_clkout(self.cd_sys, sys_clk_freq, with_reset=True, name="axi_clk")

# BaseSoC ------------------------------------------------------------------------------------------
Expand Down
9 changes: 6 additions & 3 deletions litex_boards/targets/efinix_trion_t20_bga256_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,23 +35,26 @@ def __init__(self, platform, sys_clk_freq):
self.rst = Signal()
self.cd_sys = ClockDomain()
self.cd_sys_ps = ClockDomain()
self.cd_rst = ClockDomain(reset_less=True)

# # #

# Clk/Rst.
clk50 = platform.request("clk50")
rst_n = platform.request("user_btn", 0)

self.comb += self.cd_rst.clk.eq(clk50)

# A pulse is necessary to do a reset.
self.rst_pulse = Signal()
reset_timer = WaitTimer(25e-6*sys_clk_freq)
self.reset_timer = reset_timer = ClockDomainsRenamer("rst")(WaitTimer(25e-6*platform.default_clk_freq))
self.comb += self.rst_pulse.eq(self.rst ^ reset_timer.done)
self.comb += reset_timer.wait.eq(self.rst)

# PLL.
self.pll = pll = TRIONPLL(platform)
self.comb += pll.reset.eq(~rst_n | self.rst_pulse)
pll.register_clkin(clk50, 50e6)
pll.register_clkin(clk50, platform.default_clk_freq)
pll.create_clkout(self.cd_sys, sys_clk_freq, with_reset=True)
pll.create_clkout(self.cd_sys_ps, sys_clk_freq, phase=180)

Expand All @@ -69,7 +72,7 @@ def __init__(self, sys_clk_freq=100e6, with_spi_flash=False, with_led_chaser=Tru

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

self.sdrphy = GENSDRPHY(platform.request("sdram"), sys_clk_freq)
self.add_sdram("sdram",
Expand Down
14 changes: 12 additions & 2 deletions litex_boards/targets/efinix_trion_t20_mipi_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from migen.genlib.resetsync import AsyncResetSynchronizer

from litex.gen import *
from litex.gen.genlib.misc import WaitTimer

from litex_boards.platforms import efinix_trion_t20_mipi_dev_kit

Expand All @@ -26,16 +27,25 @@ class _CRG(LiteXModule):
def __init__(self, platform, sys_clk_freq):
self.rst = Signal()
self.cd_sys = ClockDomain()
self.cd_rst = ClockDomain(reset_less=True)

# # #

clk50 = platform.request("clk50")
rst_n = platform.request("user_btn", 0)

self.comb += self.cd_rst.clk.eq(clk50)

# A pulse is necessary to do a reset.
self.rst_pulse = Signal()
self.reset_timer = reset_timer = ClockDomainsRenamer("rst")(WaitTimer(25e-6*platform.default_clk_freq))
self.comb += self.rst_pulse.eq(self.rst ^ reset_timer.done)
self.comb += reset_timer.wait.eq(self.rst)

# PLL
self.pll = pll = TRIONPLL(platform)
self.comb += pll.reset.eq(~rst_n | self.rst)
pll.register_clkin(clk50, 50e6)
self.comb += pll.reset.eq(~rst_n | self.rst_pulse)
pll.register_clkin(clk50, platform.default_clk_freq)
pll.create_clkout(self.cd_sys, sys_clk_freq, with_reset=True)

# BaseSoC ------------------------------------------------------------------------------------------
Expand Down
14 changes: 12 additions & 2 deletions litex_boards/targets/efinix_xyloni_dev_kit.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from migen.genlib.resetsync import AsyncResetSynchronizer

from litex.gen import *
from litex.gen.genlib.misc import WaitTimer

from litex_boards.platforms import efinix_xyloni_dev_kit

Expand All @@ -27,16 +28,25 @@ class _CRG(LiteXModule):
def __init__(self, platform, sys_clk_freq):
self.rst = Signal()
self.cd_sys = ClockDomain()
self.cd_rst = ClockDomain(reset_less=True)

# # #

clk33 = platform.request("clk33")
rst_n = platform.request("user_btn", 0)

self.comb += self.cd_rst.clk.eq(clk33)

# A pulse is necessary to do a reset.
self.rst_pulse = Signal()
self.reset_timer = reset_timer = ClockDomainsRenamer("rst")(WaitTimer(25e-6*platform.default_clk_freq))
self.comb += self.rst_pulse.eq(self.rst ^ reset_timer.done)
self.comb += reset_timer.wait.eq(self.rst)

# PLL.
self.pll = pll = TRIONPLL(platform)
self.comb += pll.reset.eq(~rst_n | self.rst)
pll.register_clkin(clk33, 33.333e6)
self.comb += pll.reset.eq(~rst_n | self.rst_pulse)
pll.register_clkin(clk33, platform.default_clk_freq)
pll.create_clkout(self.cd_sys, sys_clk_freq, with_reset=True)

# BaseSoC ------------------------------------------------------------------------------------------
Expand Down
14 changes: 12 additions & 2 deletions litex_boards/targets/jungle_electronics_fireant.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from migen.genlib.resetsync import AsyncResetSynchronizer

from litex.gen import *
from litex.gen.genlib.misc import WaitTimer

from litex_boards.platforms import jungle_electronics_fireant

Expand All @@ -31,16 +32,25 @@ class _CRG(LiteXModule):
def __init__(self, platform, sys_clk_freq):
self.rst = Signal()
self.cd_sys = ClockDomain()
self.cd_rst = ClockDomain(reset_less=True)

# # #

clk33 = platform.request("clk33")
rst_n = platform.request("user_btn", 0)

self.comb += self.cd_rst.clk.eq(clk33)

# A pulse is necessary to do a reset.
self.rst_pulse = Signal()
self.reset_timer = reset_timer = ClockDomainsRenamer("rst")(WaitTimer(25e-6*platform.default_clk_freq))
self.comb += self.rst_pulse.eq(self.rst ^ reset_timer.done)
self.comb += reset_timer.wait.eq(self.rst)

# PLL.
self.pll = pll = TRIONPLL(platform)
self.comb += pll.reset.eq(~rst_n | self.rst)
pll.register_clkin(clk33, 33.333e6)
self.comb += pll.reset.eq(~rst_n | self.rst_pulse)
pll.register_clkin(clk33, platform.default_clk_freq)
pll.create_clkout(self.cd_sys, sys_clk_freq, with_reset=True)

# Default peripherals
Expand Down
4 changes: 2 additions & 2 deletions litex_boards/targets/sipeed_tang_nano_4k.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,12 @@ def __init__(self, toolchain="gowin", sys_clk_freq=27e6,
# Use EMCU's SRAM.
self.bus.add_region("sram", SoCRegion(
origin = self.cpu.mem_map["sram"],
size = 16 * kB,
size = 16 * KILOBYTE,
))
# Use ECMU's FLASH as ROM.
self.bus.add_region("rom", SoCRegion(
origin = self.cpu.mem_map["rom"],
size = 32 * kB,
size = 32 * KILOBYTE,
linker = True,
))
# No Gowin EMCU ----------------------------------------------------------------------------
Expand Down

0 comments on commit 49c6c83

Please sign in to comment.