efinix: add Titanium PLL support

This commit is contained in:
Franck Jullien 2021-12-13 14:41:35 +01:00
parent 148d124d03
commit eafee9dac5
3 changed files with 16 additions and 4 deletions

View File

@ -201,7 +201,10 @@ design.create("{2}", "{3}", "./../gateware", overwrite=True)
cmd += 'design.set_property("{}", pll_config, block_type="PLL")\n\n'.format(name)
for i, clock in enumerate(block["clk_out"]):
cmd += 'design.set_property("{}","CLKOUT{}_PHASE","{}","PLL")\n'.format(name, i, clock[2])
if block["version"] == "V1_V2":
cmd += 'design.set_property("{}","CLKOUT{}_PHASE","{}","PLL")\n'.format(name, i, clock[2])
else:
cmd += '# Phase shift needs to be implemented for PLL V3\n'
cmd += "target_freq = {\n"
for i, clock in enumerate(block["clk_out"]):

View File

@ -16,4 +16,4 @@ from litex.soc.cores.clock.lattice_ecp5 import ECP5PLL
from litex.soc.cores.clock.lattice_nx import NXOSCA, NXPLL
# Efinix
from litex.soc.cores.clock.efinix_trion import TRIONPLL
from litex.soc.cores.clock.efinix import TRIONPLL, TITANIUMPLL

View File

@ -16,8 +16,8 @@ class Open(Signal): pass
# Efinix / TRIONPLL ----------------------------------------------------------------------------------
class TRIONPLL(Module):
nclkouts_max = 4
def __init__(self, platform, n=0):
nclkouts_max = 3
def __init__(self, platform, n=0, version="V1_V2"):
self.logger = logging.getLogger("TRIONPLL")
self.logger.info("Creating TRIONPLL.".format())
self.platform = platform
@ -33,6 +33,7 @@ class TRIONPLL(Module):
block["clk_out"] = []
block["locked"] = self.name + "_locked"
block["rstn"] = self.name + "_rstn"
block["version"] = version
self.platform.toolchain.ifacewriter.blocks.append(block)
# Connect PLL's rstn/locked.
@ -110,3 +111,11 @@ class TRIONPLL(Module):
def do_finalize(self):
pass
# Efinix / TITANIUMPLL ----------------------------------------------------------------------------------
class TITANIUMPLL(TRIONPLL):
nclkouts_max = 5
def __init__(self, platform, n=0):
TRIONPLL.__init__(self, platform, n, version="V3")