forked from M-Labs/artiq
sayma: enable siphaser
This commit is contained in:
parent
c2d2cc2d72
commit
7d98864b31
|
@ -18,7 +18,7 @@ class SiPhaser7Series(Module, AutoCSR):
|
||||||
# we do not use the crystal reference so that the PFD (f3) frequency
|
# we do not use the crystal reference so that the PFD (f3) frequency
|
||||||
# can be high.
|
# can be high.
|
||||||
mmcm_freerun_fb = Signal()
|
mmcm_freerun_fb = Signal()
|
||||||
mmcm_freerun_output = Signal()
|
self.mmcm_freerun_output = Signal()
|
||||||
self.specials += \
|
self.specials += \
|
||||||
Instance("MMCME2_BASE",
|
Instance("MMCME2_BASE",
|
||||||
p_CLKIN1_PERIOD=1e9/125e6,
|
p_CLKIN1_PERIOD=1e9/125e6,
|
||||||
|
@ -29,14 +29,14 @@ class SiPhaser7Series(Module, AutoCSR):
|
||||||
|
|
||||||
o_CLKFBOUT=mmcm_freerun_fb, i_CLKFBIN=mmcm_freerun_fb,
|
o_CLKFBOUT=mmcm_freerun_fb, i_CLKFBIN=mmcm_freerun_fb,
|
||||||
|
|
||||||
p_CLKOUT0_DIVIDE_F=5.0, o_CLKOUT0=mmcm_freerun_output,
|
p_CLKOUT0_DIVIDE_F=5.0, o_CLKOUT0=self.mmcm_freerun_output,
|
||||||
)
|
)
|
||||||
|
|
||||||
# 150MHz to 150MHz with controllable phase shift, VCO @ 1200MHz.
|
# 150MHz to 150MHz with controllable phase shift, VCO @ 1200MHz.
|
||||||
# Inserted between CDR and output to Si, used to correct
|
# Inserted between CDR and output to Si, used to correct
|
||||||
# non-determinstic skew of Si5324.
|
# non-determinstic skew of Si5324.
|
||||||
mmcm_ps_fb = Signal()
|
mmcm_ps_fb = Signal()
|
||||||
mmcm_ps_output = Signal()
|
self.mmcm_ps_output = Signal()
|
||||||
self.specials += \
|
self.specials += \
|
||||||
Instance("MMCME2_ADV",
|
Instance("MMCME2_ADV",
|
||||||
p_CLKIN1_PERIOD=1e9/150e6,
|
p_CLKIN1_PERIOD=1e9/150e6,
|
||||||
|
@ -51,7 +51,7 @@ class SiPhaser7Series(Module, AutoCSR):
|
||||||
o_CLKFBOUT=mmcm_ps_fb, i_CLKFBIN=mmcm_ps_fb,
|
o_CLKFBOUT=mmcm_ps_fb, i_CLKFBIN=mmcm_ps_fb,
|
||||||
|
|
||||||
p_CLKOUT0_USE_FINE_PS="TRUE",
|
p_CLKOUT0_USE_FINE_PS="TRUE",
|
||||||
o_CLKOUT0=mmcm_ps_output,
|
o_CLKOUT0=self.mmcm_ps_output,
|
||||||
|
|
||||||
i_PSCLK=ClockSignal(),
|
i_PSCLK=ClockSignal(),
|
||||||
i_PSEN=self.phase_shift.re,
|
i_PSEN=self.phase_shift.re,
|
||||||
|
@ -62,8 +62,8 @@ class SiPhaser7Series(Module, AutoCSR):
|
||||||
si5324_clkin_se = Signal()
|
si5324_clkin_se = Signal()
|
||||||
self.specials += [
|
self.specials += [
|
||||||
Instance("BUFGMUX",
|
Instance("BUFGMUX",
|
||||||
i_I0=mmcm_freerun_output,
|
i_I0=self.mmcm_freerun_output,
|
||||||
i_I1=mmcm_ps_output,
|
i_I1=self.mmcm_ps_output,
|
||||||
i_S=self.switch_clocks.storage,
|
i_S=self.switch_clocks.storage,
|
||||||
o_O=si5324_clkin_se
|
o_O=si5324_clkin_se
|
||||||
),
|
),
|
||||||
|
|
|
@ -33,6 +33,7 @@ from artiq.gateware import remote_csr
|
||||||
from artiq.gateware import rtio
|
from artiq.gateware import rtio
|
||||||
from artiq.gateware.rtio.phy import ttl_simple, sawg
|
from artiq.gateware.rtio.phy import ttl_simple, sawg
|
||||||
from artiq.gateware.drtio.transceiver import gth_ultrascale
|
from artiq.gateware.drtio.transceiver import gth_ultrascale
|
||||||
|
from artiq.gateware.drtio.si_phaser import SiPhaser7Series
|
||||||
from artiq.gateware.drtio.rx_synchronizer import XilinxRXSynchronizer
|
from artiq.gateware.drtio.rx_synchronizer import XilinxRXSynchronizer
|
||||||
from artiq.gateware.drtio import DRTIOMaster, DRTIOSatellite
|
from artiq.gateware.drtio import DRTIOMaster, DRTIOSatellite
|
||||||
from artiq.build_soc import build_artiq_soc
|
from artiq.build_soc import build_artiq_soc
|
||||||
|
@ -432,12 +433,13 @@ class Satellite(BaseSoC):
|
||||||
self.add_memory_group("drtio_aux", ["drtio0_aux"])
|
self.add_memory_group("drtio_aux", ["drtio0_aux"])
|
||||||
|
|
||||||
self.config["RTIO_FREQUENCY"] = str(rtio_clk_freq/1e6)
|
self.config["RTIO_FREQUENCY"] = str(rtio_clk_freq/1e6)
|
||||||
si5324_clkin = platform.request("si5324_clkin")
|
self.submodules.si_phaser = SiPhaser7Series(
|
||||||
self.specials += \
|
si5324_clkin=platform.request("si5324_clkin"),
|
||||||
Instance("OBUFDS",
|
si5324_clkout_fabric=platform.request("si5324_clkout_fabric")
|
||||||
i_I=ClockSignal("rtio_rx0"),
|
)
|
||||||
o_O=si5324_clkin.p, o_OB=si5324_clkin.n
|
platform.add_platform_command("set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets {mmcm_ps}]",
|
||||||
)
|
mmcm_ps=self.si_phaser.mmcm_ps_output)
|
||||||
|
self.csr_devices.append("si_phaser")
|
||||||
self.submodules.si5324_rst_n = gpio.GPIOOut(platform.request("si5324").rst_n)
|
self.submodules.si5324_rst_n = gpio.GPIOOut(platform.request("si5324").rst_n)
|
||||||
self.csr_devices.append("si5324_rst_n")
|
self.csr_devices.append("si5324_rst_n")
|
||||||
i2c = self.platform.request("i2c")
|
i2c = self.platform.request("i2c")
|
||||||
|
|
Loading…
Reference in New Issue