forked from M-Labs/artiq
sayma: generate 100MHz from Si5324 on standalone and master targets
* Allow switching between DRTIO satellite and standalone without touching the hardware. * Allow operating standalone and master without an additional RF signal generator.
This commit is contained in:
parent
b6dd9c8bb0
commit
68530fde07
|
@ -131,7 +131,7 @@ fn startup() {
|
||||||
fn setup_si5324_as_synthesizer()
|
fn setup_si5324_as_synthesizer()
|
||||||
{
|
{
|
||||||
// 125MHz output, from 100MHz CLKIN2 reference, 586 Hz
|
// 125MHz output, from 100MHz CLKIN2 reference, 586 Hz
|
||||||
#[cfg(all(rtio_frequency = "125.0", si5324_ext_ref))]
|
#[cfg(all(not(si5324_sayma_ref), rtio_frequency = "125.0", si5324_ext_ref))]
|
||||||
const SI5324_SETTINGS: board_artiq::si5324::FrequencySettings
|
const SI5324_SETTINGS: board_artiq::si5324::FrequencySettings
|
||||||
= board_artiq::si5324::FrequencySettings {
|
= board_artiq::si5324::FrequencySettings {
|
||||||
n1_hs : 10,
|
n1_hs : 10,
|
||||||
|
@ -144,7 +144,7 @@ fn setup_si5324_as_synthesizer()
|
||||||
crystal_ref: false
|
crystal_ref: false
|
||||||
};
|
};
|
||||||
// 125MHz output, from crystal, 7 Hz
|
// 125MHz output, from crystal, 7 Hz
|
||||||
#[cfg(all(rtio_frequency = "125.0", not(si5324_ext_ref)))]
|
#[cfg(all(not(si5324_sayma_ref), rtio_frequency = "125.0", not(si5324_ext_ref)))]
|
||||||
const SI5324_SETTINGS: board_artiq::si5324::FrequencySettings
|
const SI5324_SETTINGS: board_artiq::si5324::FrequencySettings
|
||||||
= board_artiq::si5324::FrequencySettings {
|
= board_artiq::si5324::FrequencySettings {
|
||||||
n1_hs : 10,
|
n1_hs : 10,
|
||||||
|
@ -157,7 +157,7 @@ fn setup_si5324_as_synthesizer()
|
||||||
crystal_ref: true
|
crystal_ref: true
|
||||||
};
|
};
|
||||||
// 150MHz output, from crystal
|
// 150MHz output, from crystal
|
||||||
#[cfg(all(rtio_frequency = "150.0", not(si5324_ext_ref)))]
|
#[cfg(all(not(si5324_sayma_ref), rtio_frequency = "150.0", not(si5324_ext_ref)))]
|
||||||
const SI5324_SETTINGS: board_artiq::si5324::FrequencySettings
|
const SI5324_SETTINGS: board_artiq::si5324::FrequencySettings
|
||||||
= board_artiq::si5324::FrequencySettings {
|
= board_artiq::si5324::FrequencySettings {
|
||||||
n1_hs : 9,
|
n1_hs : 9,
|
||||||
|
@ -169,6 +169,19 @@ fn setup_si5324_as_synthesizer()
|
||||||
bwsel : 3,
|
bwsel : 3,
|
||||||
crystal_ref: true
|
crystal_ref: true
|
||||||
};
|
};
|
||||||
|
// 100MHz output, from crystal (reference for HMC830)
|
||||||
|
#[cfg(si5324_sayma_ref)]
|
||||||
|
const SI5324_SETTINGS: board_artiq::si5324::FrequencySettings
|
||||||
|
= board_artiq::si5324::FrequencySettings {
|
||||||
|
n1_hs : 9,
|
||||||
|
nc1_ls : 6,
|
||||||
|
n2_hs : 10,
|
||||||
|
n2_ls : 33732,
|
||||||
|
n31 : 9370,
|
||||||
|
n32 : 7139,
|
||||||
|
bwsel : 3,
|
||||||
|
crystal_ref: true
|
||||||
|
};
|
||||||
board_artiq::si5324::setup(&SI5324_SETTINGS,
|
board_artiq::si5324::setup(&SI5324_SETTINGS,
|
||||||
board_artiq::si5324::Input::Ckin2).expect("cannot initialize Si5324");
|
board_artiq::si5324::Input::Ckin2).expect("cannot initialize Si5324");
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,6 +139,16 @@ class Standalone(MiniSoC, AMPSoC, RTMCommon):
|
||||||
|
|
||||||
platform = self.platform
|
platform = self.platform
|
||||||
|
|
||||||
|
self.submodules.si5324_rst_n = gpio.GPIOOut(platform.request("si5324").rst_n)
|
||||||
|
self.csr_devices.append("si5324_rst_n")
|
||||||
|
i2c = self.platform.request("i2c")
|
||||||
|
self.submodules.i2c = gpio.GPIOTristate([i2c.scl, i2c.sda])
|
||||||
|
self.csr_devices.append("i2c")
|
||||||
|
self.config["I2C_BUS_COUNT"] = 1
|
||||||
|
self.config["HAS_SI5324"] = None
|
||||||
|
self.config["SI5324_AS_SYNTHESIZER"] = None
|
||||||
|
self.config["SI5324_SAYMA_REF"] = None
|
||||||
|
|
||||||
# RTIO
|
# RTIO
|
||||||
rtio_channels = []
|
rtio_channels = []
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
|
@ -233,6 +243,16 @@ class Master(MiniSoC, AMPSoC, RTMCommon):
|
||||||
platform = self.platform
|
platform = self.platform
|
||||||
rtio_clk_freq = 150e6
|
rtio_clk_freq = 150e6
|
||||||
|
|
||||||
|
self.submodules.si5324_rst_n = gpio.GPIOOut(platform.request("si5324").rst_n)
|
||||||
|
self.csr_devices.append("si5324_rst_n")
|
||||||
|
i2c = self.platform.request("i2c")
|
||||||
|
self.submodules.i2c = gpio.GPIOTristate([i2c.scl, i2c.sda])
|
||||||
|
self.csr_devices.append("i2c")
|
||||||
|
self.config["I2C_BUS_COUNT"] = 1
|
||||||
|
self.config["HAS_SI5324"] = None
|
||||||
|
self.config["SI5324_AS_SYNTHESIZER"] = None
|
||||||
|
self.config["SI5324_SAYMA_REF"] = None
|
||||||
|
|
||||||
self.comb += [
|
self.comb += [
|
||||||
platform.request("sfp_tx_disable", i).eq(0)
|
platform.request("sfp_tx_disable", i).eq(0)
|
||||||
for i in range(2)
|
for i in range(2)
|
||||||
|
|
Loading…
Reference in New Issue