From ea7c48ad38db5606d71acd92d3e4d869b14ed1b0 Mon Sep 17 00:00:00 2001 From: David Raeman Date: Mon, 21 Feb 2022 15:11:32 +0000 Subject: [PATCH] n3xx: Add comments on clock_source=external,time_source=gpsdo It is, in principle, possible to use an external clock to synchronize N3x0 devices in frequency, and then use a GPSDO for a coarse time synchronization. This use case is deliberately not supported, as the GPSDO PPS signal and the external clock signal are by definition not matched, which will remove any guarantees on time/phase alignment. Because there are certain, niche use cases where the lack of phase alignment is acceptable, but only an external clock is available (no shared external PPS), usage of GPS for generating a PPS signal may be fine. This patch does not enable the usage of this combination out of the box, but adds comments and an update to the manual to explain the risks of this combination, and how to enable it (by patching MPM). Original-commit: 76e004db07a3714139e64ff396a81b90c372b2bb --- top/n3xx/n3xx_clocking.v | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/top/n3xx/n3xx_clocking.v b/top/n3xx/n3xx_clocking.v index a1d0770..0eeebb1 100644 --- a/top/n3xx/n3xx_clocking.v +++ b/top/n3xx/n3xx_clocking.v @@ -237,11 +237,17 @@ module n3xx_clocking ( // ____________| PPS | // | Clocks | External | FPGA | GPSDO | WR | // |--------------------------------------------| - // |External 10 | x | x | | | + // |External 10 | x | x | (x) | | // |Internal 25 | | x | | x | // |GPSDO 20 | | | x | | // |--------------------------------------------| // + // A note on external clock + GPSDO timing: The hardware doesn't prohibit this + // use case, but GPSDO and external clock are guaranteed to be not matched, so + // this will certainly cause a non-deterministic time alignment between devices. + // Using this combination will still allow receiving samples, but there is no + // guarantee regarding phase/time alignment whatsoever. + // /////////////////////////////////////////////////////////////////////////////////////// wire pps_ext_refclk;