mirror of https://github.com/m-labs/artiq.git
Revert "drtio: monitor RTIOClockMultiplier PLL (#1155)"
This reverts commit 469a66db61
.
This commit is contained in:
parent
73b7124091
commit
efd735a6ab
|
@ -257,10 +257,6 @@ fn async_error_thread(io: Io) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn startup(io: &Io) {
|
pub fn startup(io: &Io) {
|
||||||
// The RTIO CRG may depend on the DRTIO transceiver clock.
|
|
||||||
// Initialize DRTIO first to bring up transceiver clocking.
|
|
||||||
drtio::startup(io);
|
|
||||||
|
|
||||||
#[cfg(has_rtio_crg)]
|
#[cfg(has_rtio_crg)]
|
||||||
{
|
{
|
||||||
#[cfg(has_rtio_clock_switch)]
|
#[cfg(has_rtio_clock_switch)]
|
||||||
|
@ -300,6 +296,7 @@ pub fn startup(io: &Io) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drtio::startup(io);
|
||||||
init_core(true);
|
init_core(true);
|
||||||
io.spawn(4096, async_error_thread);
|
io.spawn(4096, async_error_thread);
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,23 +229,6 @@ fn process_errors() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[cfg(has_rtio_crg)]
|
|
||||||
fn init_rtio_crg() {
|
|
||||||
unsafe {
|
|
||||||
csr::rtio_crg::pll_reset_write(0);
|
|
||||||
}
|
|
||||||
clock::spin_us(150);
|
|
||||||
let locked = unsafe { csr::rtio_crg::pll_locked_read() != 0 };
|
|
||||||
if !locked {
|
|
||||||
error!("RTIO clock failed");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(not(has_rtio_crg))]
|
|
||||||
fn init_rtio_crg() { }
|
|
||||||
|
|
||||||
|
|
||||||
#[cfg(rtio_frequency = "150.0")]
|
#[cfg(rtio_frequency = "150.0")]
|
||||||
const SI5324_SETTINGS: si5324::FrequencySettings
|
const SI5324_SETTINGS: si5324::FrequencySettings
|
||||||
= si5324::FrequencySettings {
|
= si5324::FrequencySettings {
|
||||||
|
@ -302,7 +285,6 @@ pub extern fn main() -> i32 {
|
||||||
unsafe {
|
unsafe {
|
||||||
csr::drtio_transceiver::stable_clkin_write(1);
|
csr::drtio_transceiver::stable_clkin_write(1);
|
||||||
}
|
}
|
||||||
init_rtio_crg();
|
|
||||||
|
|
||||||
#[cfg(has_allaki_atts)]
|
#[cfg(has_allaki_atts)]
|
||||||
board_artiq::hmc542::program_all(8/*=4dB*/);
|
board_artiq::hmc542::program_all(8/*=4dB*/);
|
||||||
|
|
|
@ -766,23 +766,19 @@ class Tester(_StandaloneBase):
|
||||||
self.rtio_crg.cd_rtio.clk, self.grabber0.deserializer.cd_cl.clk)
|
self.rtio_crg.cd_rtio.clk, self.grabber0.deserializer.cd_cl.clk)
|
||||||
|
|
||||||
|
|
||||||
class _RTIOClockMultiplier(Module, AutoCSR):
|
class _RTIOClockMultiplier(Module):
|
||||||
def __init__(self, rtio_clk_freq):
|
def __init__(self, rtio_clk_freq):
|
||||||
self.pll_reset = CSRStorage(reset=1)
|
|
||||||
self.pll_locked = CSRStatus()
|
|
||||||
self.clock_domains.cd_rtiox4 = ClockDomain(reset_less=True)
|
self.clock_domains.cd_rtiox4 = ClockDomain(reset_less=True)
|
||||||
|
|
||||||
# See "Global Clock Network Deskew Using Two BUFGs" in ug472.
|
# See "Global Clock Network Deskew Using Two BUFGs" in ug472.
|
||||||
clkfbout = Signal()
|
clkfbout = Signal()
|
||||||
clkfbin = Signal()
|
clkfbin = Signal()
|
||||||
rtiox4_clk = Signal()
|
rtiox4_clk = Signal()
|
||||||
pll_locked = Signal()
|
|
||||||
self.specials += [
|
self.specials += [
|
||||||
Instance("MMCME2_BASE",
|
Instance("MMCME2_BASE",
|
||||||
p_CLKIN1_PERIOD=1e9/rtio_clk_freq,
|
p_CLKIN1_PERIOD=1e9/rtio_clk_freq,
|
||||||
i_CLKIN1=ClockSignal("rtio"),
|
i_CLKIN1=ClockSignal("rtio"),
|
||||||
i_RST=self.pll_reset.storage,
|
i_RST=ResetSignal("rtio"),
|
||||||
o_LOCKED=pll_locked,
|
|
||||||
|
|
||||||
p_CLKFBOUT_MULT_F=8.0, p_DIVCLK_DIVIDE=1,
|
p_CLKFBOUT_MULT_F=8.0, p_DIVCLK_DIVIDE=1,
|
||||||
|
|
||||||
|
@ -791,9 +787,7 @@ class _RTIOClockMultiplier(Module, AutoCSR):
|
||||||
p_CLKOUT0_DIVIDE_F=2.0, o_CLKOUT0=rtiox4_clk,
|
p_CLKOUT0_DIVIDE_F=2.0, o_CLKOUT0=rtiox4_clk,
|
||||||
),
|
),
|
||||||
Instance("BUFG", i_I=clkfbout, o_O=clkfbin),
|
Instance("BUFG", i_I=clkfbout, o_O=clkfbin),
|
||||||
Instance("BUFG", i_I=rtiox4_clk, o_O=self.cd_rtiox4.clk),
|
Instance("BUFG", i_I=rtiox4_clk, o_O=self.cd_rtiox4.clk)
|
||||||
|
|
||||||
MultiReg(pll_locked, self.pll_locked.status)
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -877,8 +871,7 @@ class _MasterBase(MiniSoC, AMPSoC):
|
||||||
platform.add_false_path_constraints(
|
platform.add_false_path_constraints(
|
||||||
self.crg.cd_sys.clk, gtp.rxoutclk)
|
self.crg.cd_sys.clk, gtp.rxoutclk)
|
||||||
|
|
||||||
self.submodules.rtio_crg = _RTIOClockMultiplier(rtio_clk_freq)
|
self.submodules.rtio_clkmul = _RTIOClockMultiplier(rtio_clk_freq)
|
||||||
self.csr_devices.append("rtio_crg")
|
|
||||||
fix_serdes_timing_path(platform)
|
fix_serdes_timing_path(platform)
|
||||||
|
|
||||||
def add_rtio(self, rtio_channels):
|
def add_rtio(self, rtio_channels):
|
||||||
|
@ -1003,8 +996,7 @@ class _SatelliteBase(BaseSoC):
|
||||||
self.crg.cd_sys.clk,
|
self.crg.cd_sys.clk,
|
||||||
gtp.txoutclk, gtp.rxoutclk)
|
gtp.txoutclk, gtp.rxoutclk)
|
||||||
|
|
||||||
self.submodules.rtio_crg = _RTIOClockMultiplier(rtio_clk_freq)
|
self.submodules.rtio_clkmul = _RTIOClockMultiplier(rtio_clk_freq)
|
||||||
self.csr_devices.append("rtio_crg")
|
|
||||||
fix_serdes_timing_path(platform)
|
fix_serdes_timing_path(platform)
|
||||||
|
|
||||||
def add_rtio(self, rtio_channels):
|
def add_rtio(self, rtio_channels):
|
||||||
|
|
Loading…
Reference in New Issue