target: add rst signal to CRG to allow full reset of the SoC on reboot command.
This commit is contained in:
parent
aa6b9cab4a
commit
2b17dc1b89
|
@ -32,15 +32,16 @@ from liteeth.phy.s7rgmii import LiteEthPHYRGMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys4x_dqs = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_clk200 = ClockDomain()
|
||||
self.clock_domains.cd_idelay = ClockDomain()
|
||||
|
||||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7PLL(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk200"), 200e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -52,6 +52,7 @@ from litepcie.software import generate_litepcie_software
|
|||
|
||||
class CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys4x_dqs = ClockDomain(reset_less=True)
|
||||
|
@ -62,6 +63,7 @@ class CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = S7PLL()
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk200, 200e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -36,6 +36,7 @@ from litepcie.software import generate_litepcie_software
|
|||
|
||||
class CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys4x_dqs = ClockDomain(reset_less=True)
|
||||
|
@ -46,6 +47,7 @@ class CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = S7PLL()
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk100, 100e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -33,6 +33,7 @@ from litepcie.software import generate_litepcie_software
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_pll4x = ClockDomain(reset_less=True)
|
||||
|
@ -41,7 +42,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = USMMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(0) # FIXME
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(platform.request("clk300", 0), 300e6)
|
||||
pll.create_clkout(self.cd_pll4x, sys_clk_freq*4, buf=None, with_reset=False)
|
||||
pll.create_clkout(self.cd_idelay, 500e6, with_reset=False)
|
||||
|
|
|
@ -29,6 +29,7 @@ from liteeth.phy.mii import LiteEthPHYMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys4x_dqs = ClockDomain(reset_less=True)
|
||||
|
@ -38,7 +39,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7PLL(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk100"), 100e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -28,6 +28,7 @@ from litedram.phy import s7ddrphy
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys2x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
|
@ -37,7 +38,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7PLL(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk100"), 100e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys2x, 2*sys_clk_freq)
|
||||
|
@ -67,8 +68,7 @@ class BaseSoC(SoCCore):
|
|||
self.submodules.ddrphy = s7ddrphy.A7DDRPHY(platform.request("ddram"),
|
||||
memtype = "DDR3",
|
||||
nphases = 4,
|
||||
sys_clk_freq = sys_clk_freq,
|
||||
interface_type = "MEMORY")
|
||||
sys_clk_freq = sys_clk_freq)
|
||||
self.add_csr("ddrphy")
|
||||
self.add_sdram("sdram",
|
||||
phy = self.ddrphy,
|
||||
|
|
|
@ -32,6 +32,7 @@ from litehyperbus.core.hyperbus import HyperRAM
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys_ps = ClockDomain(reset_less=True)
|
||||
|
||||
|
@ -42,7 +43,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = Cyclone10LPPLL(speedgrade="-A7")
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(clk12, 12e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys_ps, sys_clk_freq, phase=90)
|
||||
|
|
|
@ -29,6 +29,7 @@ from litedram.phy import ECP5DDRPHY
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_init = ClockDomain()
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
@ -51,7 +52,7 @@ class _CRG(Module):
|
|||
|
||||
# pll
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(~por_done)
|
||||
self.comb += pll.reset.eq(~por_done | self.rst)
|
||||
pll.register_clkin(clk27, 27e6)
|
||||
pll.create_clkout(self.cd_sys2x_i, 2*sys_clk_freq)
|
||||
pll.create_clkout(self.cd_init, 27e6)
|
||||
|
|
|
@ -66,6 +66,7 @@ from liteeth.phy.ecp5rgmii import LiteEthPHYRGMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, use_internal_osc=False, with_usb_pll=False, with_rst=True, sdram_rate="1:1"):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
if sdram_rate == "1:2":
|
||||
self.clock_domains.cd_sys2x = ClockDomain()
|
||||
|
@ -91,7 +92,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(~rst_n)
|
||||
self.comb += pll.reset.eq(~rst_n | self.rst)
|
||||
pll.register_clkin(clk, clk_freq)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
if sdram_rate == "1:2":
|
||||
|
@ -103,7 +104,7 @@ class _CRG(Module):
|
|||
# USB PLL
|
||||
if with_usb_pll:
|
||||
self.submodules.usb_pll = usb_pll = ECP5PLL()
|
||||
self.comb += usb_pll.reset.eq(~rst_n)
|
||||
self.comb += usb_pll.reset.eq(~rst_n | self.rst)
|
||||
usb_pll.register_clkin(clk, clk_freq)
|
||||
self.clock_domains.cd_usb_12 = ClockDomain()
|
||||
self.clock_domains.cd_usb_48 = ClockDomain()
|
||||
|
|
|
@ -33,6 +33,7 @@ mB = 1024*kB
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_por = ClockDomain()
|
||||
|
||||
|
@ -49,7 +50,7 @@ class _CRG(Module):
|
|||
self.comb += self.cd_por.clk.eq(self.cd_sys.clk)
|
||||
self.sync.por += If(por_counter != 0, por_counter.eq(por_counter - 1))
|
||||
self.specials += AsyncResetSynchronizer(self.cd_por, ~rst_n)
|
||||
self.specials += AsyncResetSynchronizer(self.cd_sys, (por_counter != 0))
|
||||
self.specials += AsyncResetSynchronizer(self.cd_sys, (por_counter != 0) | self.rst)
|
||||
|
||||
|
||||
# BaseSoC ------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -39,6 +39,7 @@ mB = 1024*kB
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_por = ClockDomain()
|
||||
|
||||
|
@ -55,7 +56,7 @@ class _CRG(Module):
|
|||
self.comb += self.cd_por.clk.eq(self.cd_sys.clk)
|
||||
self.sync.por += If(por_counter != 0, por_counter.eq(por_counter - 1))
|
||||
self.specials += AsyncResetSynchronizer(self.cd_por, ~rst_n)
|
||||
self.specials += AsyncResetSynchronizer(self.cd_sys, (por_counter != 0))
|
||||
self.specials += AsyncResetSynchronizer(self.cd_sys, (por_counter != 0) | self.rst)
|
||||
|
||||
|
||||
# BaseSoC ------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -29,6 +29,7 @@ from litedram.phy import GENSDRPHY, HalfRateGENSDRPHY
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, sdram_rate="1:1"):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
if sdram_rate == "1:2":
|
||||
self.clock_domains.cd_sys2x = ClockDomain()
|
||||
|
@ -43,6 +44,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = CycloneIVPLL(speedgrade="-6")
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk50, 50e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
if sdram_rate == "1:2":
|
||||
|
|
|
@ -32,6 +32,7 @@ from litevideo.terminal.core import Terminal
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys_ps = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_vga = ClockDomain(reset_less=True)
|
||||
|
@ -43,6 +44,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = Max10PLL(speedgrade="-7")
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk50, 50e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys_ps, sys_clk_freq, phase=90)
|
||||
|
|
|
@ -32,6 +32,7 @@ from litevideo.terminal.core import Terminal
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, with_sdram=False, sdram_rate="1:1"):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
if sdram_rate == "1:2":
|
||||
self.clock_domains.cd_sys2x = ClockDomain()
|
||||
|
@ -47,6 +48,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = CycloneVPLL(speedgrade="-I7")
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk50, 50e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
if sdram_rate == "1:2":
|
||||
|
|
|
@ -28,6 +28,7 @@ from litedram.phy import GENSDRPHY
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys_ps = ClockDomain(reset_less=True)
|
||||
|
||||
|
@ -38,6 +39,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = CycloneVPLL(speedgrade="-C6")
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk50, 50e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys_ps, sys_clk_freq, phase=90)
|
||||
|
|
|
@ -28,6 +28,7 @@ from litedram.phy import GENSDRPHY
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys_ps = ClockDomain(reset_less=True)
|
||||
|
||||
|
@ -38,6 +39,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = CycloneIVPLL(speedgrade="-7")
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk50, 50e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys_ps, sys_clk_freq, phase=90)
|
||||
|
|
|
@ -23,6 +23,7 @@ from litex.soc.cores.led import LedChaser
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, x5_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
||||
# # #
|
||||
|
@ -37,7 +38,7 @@ class _CRG(Module):
|
|||
|
||||
# pll
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(~rst_n)
|
||||
self.comb += pll.reset.eq(~rst_n | self.rst)
|
||||
pll.register_clkin(clk, x5_clk_freq or 12e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ from liteeth.phy.ecp5rgmii import LiteEthPHYRGMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_init = ClockDomain()
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
@ -54,7 +55,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(~por_done | ~rst_n)
|
||||
self.comb += pll.reset.eq(~por_done | ~rst_n | self.rst)
|
||||
pll.register_clkin(clk100, 100e6)
|
||||
pll.create_clkout(self.cd_sys2x_i, 2*sys_clk_freq)
|
||||
pll.create_clkout(self.cd_init, 25e6)
|
||||
|
@ -69,8 +70,8 @@ class _CRG(Module):
|
|||
i_CLKI = self.cd_sys2x.clk,
|
||||
i_RST = self.reset,
|
||||
o_CDIVX = self.cd_sys.clk),
|
||||
AsyncResetSynchronizer(self.cd_sys, ~pll.locked | self.reset),
|
||||
AsyncResetSynchronizer(self.cd_sys2x, ~pll.locked | self.reset),
|
||||
AsyncResetSynchronizer(self.cd_sys, ~pll.locked | self.reset | self.rst),
|
||||
AsyncResetSynchronizer(self.cd_sys2x, ~pll.locked | self.reset | self.rst),
|
||||
]
|
||||
|
||||
# BaseSoC ------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -29,11 +29,13 @@ from litepcie.software import generate_litepcie_software
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
||||
# # #
|
||||
|
||||
self.submodules.pll = pll = USPMMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(platform.request("clk200"), 200e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ mB = 1024*kB
|
|||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
assert sys_clk_freq == 12e6
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_usb_12 = ClockDomain()
|
||||
|
@ -53,6 +54,7 @@ class _CRG(Module):
|
|||
|
||||
# USB PLL
|
||||
self.submodules.pll = pll = iCE40PLL()
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.clko_freq_range = ( 12e6, 275e9) # FIXME: improve iCE40PLL to avoid lowering clko_freq_min.
|
||||
pll.register_clkin(clk48, 48e6)
|
||||
pll.create_clkout(self.cd_usb_12, 12e6, with_reset=False)
|
||||
|
|
|
@ -28,6 +28,7 @@ from liteeth.phy.s7rgmii import LiteEthPHYRGMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_idelay = ClockDomain()
|
||||
|
@ -35,7 +36,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7MMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset_n"))
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset_n") | self.rst)
|
||||
pll.register_clkin(platform.request("clk200"), 200e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -35,6 +35,7 @@ from litedram.modules import AS4C32M8
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys_ps = ClockDomain(reset_less=True)
|
||||
|
||||
|
@ -45,6 +46,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk8, 8e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys_ps, sys_clk_freq, phase=90)
|
||||
|
|
|
@ -40,6 +40,7 @@ mB = 1024*kB
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
|
||||
|
@ -58,7 +59,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = iCE40PLL(primitive="SB_PLL40_PAD")
|
||||
self.comb += pll.reset.eq(~rst_n)
|
||||
self.comb += pll.reset.eq(~rst_n | self.rst)
|
||||
pll.register_clkin(clk12, 12e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq, with_reset=False)
|
||||
self.specials += AsyncResetSynchronizer(self.cd_sys, ~por_done | ~pll.locked)
|
||||
|
|
|
@ -30,6 +30,7 @@ from liteeth.phy import LiteEthPHY
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_idelay = ClockDomain()
|
||||
|
@ -37,7 +38,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7MMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk200"), 200e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -28,6 +28,7 @@ from liteeth.phy.ku_1000basex import KU_1000BASEX
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_pll4x = ClockDomain(reset_less=True)
|
||||
|
@ -37,7 +38,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = USMMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk125"), 125e6)
|
||||
pll.create_clkout(self.cd_pll4x, sys_clk_freq*4, buf=None, with_reset=False)
|
||||
pll.create_clkout(self.cd_idelay, 200e6, with_reset=False)
|
||||
|
|
|
@ -26,6 +26,7 @@ from litedram.phy import s7ddrphy
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_idelay = ClockDomain()
|
||||
|
@ -33,7 +34,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7MMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset_n"))
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset_n") | self.rst)
|
||||
pll.register_clkin(platform.request("clk200"), 200e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -31,6 +31,7 @@ from liteeth.mac import LiteEthMAC
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys_ps = ClockDomain(reset_less=True)
|
||||
|
||||
|
@ -39,6 +40,7 @@ class _CRG(Module):
|
|||
clk25 = platform.request("clk25")
|
||||
|
||||
self.submodules.pll = pll = S6PLL(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk25, 25e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys_ps, sys_clk_freq, phase=90)
|
||||
|
|
|
@ -31,6 +31,7 @@ from liteeth.phy.ecp5rgmii import LiteEthPHYRGMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, with_usb_pll=False):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_init = ClockDomain()
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
@ -55,7 +56,7 @@ class _CRG(Module):
|
|||
# PLL
|
||||
sys2x_clk_ecsout = Signal()
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(~por_done)
|
||||
self.comb += pll.reset.eq(~por_done | self.rst)
|
||||
pll.register_clkin(clk25, 25e6)
|
||||
pll.create_clkout(self.cd_sys2x_i, 2*sys_clk_freq)
|
||||
pll.create_clkout(self.cd_init, 24e6)
|
||||
|
@ -84,7 +85,7 @@ class _CRG(Module):
|
|||
self.clock_domains.cd_usb_48 = ClockDomain()
|
||||
usb_pll = ECP5PLL()
|
||||
self.submodules += usb_pll
|
||||
self.comb += usb_pll.reset.eq(~por_done)
|
||||
self.comb += usb_pll.reset.eq(~por_done | self.rst)
|
||||
usb_pll.register_clkin(clk25, 25e6)
|
||||
usb_pll.create_clkout(self.cd_usb_48, 48e6)
|
||||
usb_pll.create_clkout(self.cd_usb_12, 12e6)
|
||||
|
|
|
@ -27,6 +27,7 @@ from litedram.phy import usddrphy
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_pll4x = ClockDomain(reset_less=True)
|
||||
|
@ -35,6 +36,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = USMMCM(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(platform.request("clk100"), 100e6)
|
||||
|
||||
pll.create_clkout(self.cd_pll4x, sys_clk_freq*4, buf=None, with_reset=False)
|
||||
|
|
|
@ -30,6 +30,7 @@ from liteeth.phy.s7rgmii import LiteEthPHYRGMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys4x_dqs = ClockDomain(reset_less=True)
|
||||
|
@ -38,7 +39,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7PLL(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk100"), 100e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -32,6 +32,7 @@ from litedram.phy import GENSDRPHY, HalfRateGENSDRPHY
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, sdram_rate="1:1"):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
if sdram_rate == "1:2":
|
||||
self.clock_domains.cd_sys2x = ClockDomain()
|
||||
|
@ -46,6 +47,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = S6PLL(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk32, 32e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
if sdram_rate == "1:2":
|
||||
|
|
|
@ -32,6 +32,7 @@ from litevideo.terminal.core import Terminal
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys_ps = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_vga = ClockDomain(reset_less=True)
|
||||
|
@ -43,6 +44,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = CycloneIVPLL(speedgrade="-8")
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk27, 27e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys_ps, sys_clk_freq, phase=90)
|
||||
|
|
|
@ -35,6 +35,7 @@ from litepcie.software import generate_litepcie_software
|
|||
|
||||
class CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_idelay = ClockDomain()
|
||||
|
@ -44,6 +45,7 @@ class CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = S7PLL()
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk100, 100e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -28,6 +28,7 @@ from liteeth.phy.rmii import LiteEthPHYRMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys4x_dqs = ClockDomain(reset_less=True)
|
||||
|
@ -38,6 +39,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7PLL(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(platform.request("clk50"), 50e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -28,6 +28,7 @@ from liteeth.phy.rmii import LiteEthPHYRMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys2x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys2x_dqs = ClockDomain(reset_less=True)
|
||||
|
@ -37,7 +38,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7MMCM(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk100"), 100e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys2x, 2*sys_clk_freq)
|
||||
|
|
|
@ -28,6 +28,7 @@ from liteeth.phy.s7rgmii import LiteEthPHYRGMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys4x_dqs = ClockDomain(reset_less=True)
|
||||
|
@ -37,7 +38,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7MMCM(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(~platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk100"), 100e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -31,6 +31,7 @@ from litedram.phy import ECP5DDRPHY
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, with_usb_pll=False):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
||||
|
@ -49,7 +50,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(~por_done | ~rst_n)
|
||||
self.comb += pll.reset.eq(~por_done | ~rst_n | self.rst)
|
||||
pll.register_clkin(clk48, 48e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
|
||||
|
@ -59,7 +60,7 @@ class _CRG(Module):
|
|||
self.clock_domains.cd_usb_48 = ClockDomain()
|
||||
usb_pll = ECP5PLL()
|
||||
self.submodules += usb_pll
|
||||
self.comb += usb_pll.reset.eq(~por_done | ~rst_n)
|
||||
self.comb += usb_pll.reset.eq(~por_done | ~rst_n | self.rst)
|
||||
usb_pll.register_clkin(clk48, 48e6)
|
||||
usb_pll.create_clkout(self.cd_usb_48, 48e6)
|
||||
usb_pll.create_clkout(self.cd_usb_12, 12e6)
|
||||
|
|
|
@ -25,6 +25,7 @@ from liteeth.phy import LiteEthPHY
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, clk_freq, with_ethernet=False):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
||||
# # #
|
||||
|
@ -35,7 +36,7 @@ class _CRG(Module):
|
|||
self.comb += platform.request("eth_rst_n").eq(1)
|
||||
|
||||
self.submodules.pll = pll = S6PLL(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(~platform.request("user_btn_n"))
|
||||
self.comb += pll.reset.eq(~platform.request("user_btn_n") | self.rst)
|
||||
pll.register_clkin(platform.request("clk125"), 125e6)
|
||||
pll.create_clkout(self.cd_sys, clk_freq)
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ from litedram.phy import s6ddrphy
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sdram_half = ClockDomain()
|
||||
self.clock_domains.cd_sdram_full_wr = ClockDomain()
|
||||
|
@ -104,7 +105,7 @@ class _CRG(Module):
|
|||
)
|
||||
|
||||
# Power on reset
|
||||
reset = platform.request("user_btn") | self.reset
|
||||
reset = platform.request("user_btn") | self.reset | self.rst
|
||||
self.clock_domains.cd_por = ClockDomain()
|
||||
por = Signal(max=1 << 11, reset=(1 << 11) - 1)
|
||||
self.sync.por += If(por != 0, por.eq(por - 1))
|
||||
|
|
|
@ -36,6 +36,7 @@ from litepcie.software import generate_litepcie_software
|
|||
|
||||
class CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys4x_dqs = ClockDomain(reset_less=True)
|
||||
|
@ -46,6 +47,7 @@ class CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = S7PLL()
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(clk100, 100e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -26,9 +26,7 @@ kB = 1024
|
|||
mB = 1024*kB
|
||||
|
||||
class BaseSoC(SoCCore):
|
||||
|
||||
mem_map = {**SoCCore.mem_map, **{"spiflash": 0x80000000}}
|
||||
|
||||
def __init__(self, bios_flash_offset, **kwargs):
|
||||
platform = tec0117.Platform()
|
||||
sys_clk_freq = int(1e9/platform.default_clk_period)
|
||||
|
|
|
@ -31,8 +31,9 @@ from liteeth.phy.ecp5rgmii import LiteEthPHYRGMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
||||
# # #
|
||||
|
||||
|
@ -49,12 +50,13 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(~por_done | rst)
|
||||
self.comb += pll.reset.eq(~por_done | rst | self.rst)
|
||||
pll.register_clkin(clk12, 12e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
|
||||
class _CRGSDRAM(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_init = ClockDomain()
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
@ -80,7 +82,7 @@ class _CRGSDRAM(Module):
|
|||
# PLL
|
||||
sys2x_clk_ecsout = Signal()
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(~por_done | rst)
|
||||
self.comb += pll.reset.eq(~por_done | rst | self.rst)
|
||||
pll.register_clkin(clk12, 12e6)
|
||||
pll.create_clkout(self.cd_sys2x_i, 2*sys_clk_freq)
|
||||
pll.create_clkout(self.cd_init, 25e6)
|
||||
|
|
|
@ -35,6 +35,7 @@ from litedram.phy import GENSDRPHY, HalfRateGENSDRPHY
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, with_usb_pll=False, sdram_rate="1:1"):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
if sdram_rate == "1:2":
|
||||
self.clock_domains.cd_sys2x = ClockDomain()
|
||||
|
@ -50,7 +51,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(rst)
|
||||
self.comb += pll.reset.eq(rst | self.rst)
|
||||
pll.register_clkin(clk25, 25e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
if sdram_rate == "1:2":
|
||||
|
@ -62,7 +63,7 @@ class _CRG(Module):
|
|||
# USB PLL
|
||||
if with_usb_pll:
|
||||
self.submodules.usb_pll = usb_pll = ECP5PLL()
|
||||
self.comb += usb_pll.reset.eq(rst)
|
||||
self.comb += usb_pll.reset.eq(rst | self.rst)
|
||||
usb_pll.register_clkin(clk25, 25e6)
|
||||
self.clock_domains.cd_usb_12 = ClockDomain()
|
||||
self.clock_domains.cd_usb_48 = ClockDomain()
|
||||
|
|
|
@ -25,6 +25,7 @@ from litedram.phy import s7ddrphy
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_idelay = ClockDomain()
|
||||
|
@ -32,7 +33,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = S7MMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk200"), 200e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
pll.create_clkout(self.cd_sys4x, 4*sys_clk_freq)
|
||||
|
|
|
@ -27,6 +27,7 @@ from litedram.phy import usddrphy
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_pll4x = ClockDomain(reset_less=True)
|
||||
|
@ -35,7 +36,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = USMMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset"))
|
||||
self.comb += pll.reset.eq(platform.request("cpu_reset") | self.rst)
|
||||
pll.register_clkin(platform.request("clk125"), 125e6)
|
||||
pll.create_clkout(self.cd_pll4x, sys_clk_freq*4, buf=None, with_reset=False)
|
||||
pll.create_clkout(self.cd_idelay, 500e6, with_reset=False)
|
||||
|
|
|
@ -32,6 +32,7 @@ from liteeth.phy.ecp5rgmii import LiteEthPHYRGMII
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_init = ClockDomain()
|
||||
self.clock_domains.cd_por = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
@ -56,7 +57,7 @@ class _CRG(Module):
|
|||
|
||||
# PLL
|
||||
self.submodules.pll = pll = ECP5PLL()
|
||||
self.comb += pll.reset.eq(~por_done | ~rst_n)
|
||||
self.comb += pll.reset.eq(~por_done | ~rst_n | self.rst)
|
||||
pll.register_clkin(clk100, 100e6)
|
||||
pll.create_clkout(self.cd_sys2x_i, 2*sys_clk_freq)
|
||||
pll.create_clkout(self.cd_init, 25e6)
|
||||
|
|
|
@ -32,6 +32,7 @@ from litepcie.software import generate_litepcie_software
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, ddram_channel):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_pll4x = ClockDomain(reset_less=True)
|
||||
|
@ -40,6 +41,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = USPMMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(platform.request("clk300", ddram_channel), 300e6)
|
||||
pll.create_clkout(self.cd_pll4x, sys_clk_freq*4, buf=None, with_reset=False)
|
||||
pll.create_clkout(self.cd_idelay, 500e6, with_reset=False)
|
||||
|
|
|
@ -28,6 +28,7 @@ from litedram.phy import usddrphy
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
self.clock_domains.cd_sys4x = ClockDomain(reset_less=True)
|
||||
self.clock_domains.cd_pll4x = ClockDomain(reset_less=True)
|
||||
|
@ -36,6 +37,7 @@ class _CRG(Module):
|
|||
# # #
|
||||
|
||||
self.submodules.pll = pll = USMMCM(speedgrade=-2)
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(platform.request("clk125"), 125e6)
|
||||
pll.create_clkout(self.cd_pll4x, sys_clk_freq*4, buf=None, with_reset=False)
|
||||
pll.create_clkout(self.cd_idelay, 500e6, with_reset=False)
|
||||
|
|
|
@ -26,6 +26,7 @@ from litex.soc.cores.led import LedChaser
|
|||
|
||||
class _CRG(Module):
|
||||
def __init__(self, platform, sys_clk_freq, use_ps7_clk=False):
|
||||
self.rst = Signal()
|
||||
self.clock_domains.cd_sys = ClockDomain()
|
||||
|
||||
# # #
|
||||
|
@ -33,9 +34,10 @@ class _CRG(Module):
|
|||
if use_ps7_clk:
|
||||
assert sys_clk_freq == 100e6
|
||||
self.comb += ClockSignal("sys").eq(ClockSignal("ps7"))
|
||||
self.comb += ResetSignal("sys").eq(ResetSignal("ps7"))
|
||||
self.comb += ResetSignal("sys").eq(ResetSignal("ps7") | self.rst)
|
||||
else:
|
||||
self.submodules.pll = pll = S7PLL(speedgrade=-1)
|
||||
self.comb += pll.reset.eq(self.rst)
|
||||
pll.register_clkin(platform.request("clk125"), 125e6)
|
||||
pll.create_clkout(self.cd_sys, sys_clk_freq)
|
||||
|
||||
|
|
Loading…
Reference in New Issue