From ae3d89dd415a89cb26dd4a245b78dc38b8902f20 Mon Sep 17 00:00:00 2001 From: Eric Teunis de Boone Date: Mon, 29 Aug 2022 19:25:53 +0200 Subject: [PATCH] Thesis:Timing:Beacon (WIP) --- documents/thesis/chapters/timing.tex | 141 ++++++++++++++++++++++++++- documents/thesis/preamble.tex | 6 ++ figures/beacon/src/single_beacon.py | 18 +++- 3 files changed, 157 insertions(+), 8 deletions(-) diff --git a/documents/thesis/chapters/timing.tex b/documents/thesis/chapters/timing.tex index 03fb86e..d89c47e 100644 --- a/documents/thesis/chapters/timing.tex +++ b/documents/thesis/chapters/timing.tex @@ -8,16 +8,140 @@ \begin{document} \chapter{Timing Mechanisms} -\label{sec:timing} -Need reference system with better accuracy, +\label{sec:time} +Need reference system with better accuracy to constrain + + +\begin{figure} + \includegraphics[width=\textwidth]{clocks/reference-clock.pdf} + \caption{ + Using a reference clock to compare two other clocks. + } + \label{fig:reference-clock} +\end{figure} \section{Global Navigation Satellite System} +\label{sec:time:gnss} $\sigma_t \sim 20 \ns$ -\section{White Rabbit} +\section{White Rabbit Precision Time Protocol} +\label{sec:time:gnss} +\begin{figure} + \includegraphics[width=\textwidth]{white-rabbit/protocol/delaymodel.pdf} + \caption{ + From \cite{WRPTP}. + Delays between two White Rabbit nodes. + } + \label{fig:wr:delaymodel} +\end{figure} +\subsection{PTP} +\begin{figure} + \includegraphics[width=\textwidth,height=0.5\textheight,keepaspectratio]{white-rabbit/protocol/ptpMSGs-color.pdf} + \caption{ + From \cite{WRPTP}. + Precision Time Protocol (PTP) messages + } +\end{figure} + +\subsection{White Rabbit} +SyncE +\begin{figure} + \includegraphics[width=\textwidth,height=0.5\textheight,keepaspectratio]{white-rabbit/protocol/wrptpMSGs_1.pdf} + \caption{ + From \cite{WRPTP}. + White Rabbit extended PTP messages + } + \label{fig:wr:protocol} +\end{figure} + +\begin{figure} + \includegraphics[width=\textwidth,height=0.5\textheight,keepaspectratio]{clocks/wr-clocks.pdf} + \caption{ + White Rabbit clocks + } + \label{fig:wr:clocks} +\end{figure} \section{Beacon} +\label{sec:time:beacon} +The idea of a beacon is semi-analogous to an oscillator in electronic circuits. +A periodic signal is sent out from a transmitter (the oscillator), and captured by an antenna (the chip the oscillator drives). + +In a digital circuit, the oscillator often emits a discrete (square wave) signal (see Figure~\ref{fig:beacon:ttl}). +A tick is then defined as the moment that the signal changes from high to low or vice versa. + +In this scheme, synchronising requires latching on the change very precisely. +As between the ticks, there is no time information in the signal. +\\ + + +Instead of introducing more ticks in the same time, and thus a higher frequency of the oscillator, a smooth continous signal can also be used. +This enables the opportunity to determine the phase of the signal by measuring the signal at some time interval. +This time interval has an upper limit on its size depending on the properties of the signal, such as its frequency, but also on the length of the recording. + + +In Figure~\ref{fig:beacon:sine}, both sampling~1~and~2 can reconstruct the sine wave from the measurements. +Meanwhile, the square wave has some +\\ + + +\begin{figure}[h] + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/ttl_beacon.pdf} + \caption{ + Discrete (square wave) clocks are commonly found in digital circuits. + } + \label{fig:beacon:ttl} + \end{subfigure} + \hfill + \begin{subfigure}{0.45\textwidth} + \includegraphics[width=\textwidth]{beacon/sine_beacon.pdf} + \caption{ + A sine wave clock, as will be employed throughout this document. + } + \label{fig:beacon:sine} + \end{subfigure} + + \caption{ + Two different beacon signals with the same frequency. + Both show two samplings with a small offset in time. + Reconstructing the signal is easier to do for the sine wave.\todo{Add fourier spectra?} + } + \label{fig:beacon:ttl_sine_beacon} +\end{figure} + +%% Second timescale needed + +Instead of driving the antenna, the beacon is meant to synchronise the clock of the antenna with the clock of the transmitter. +With one oscillator, the antenna can work in phase with the transmitter, but the actual +To do so, the signal needs to have a second timescale. + + + +\begin{figure} + \includegraphics[width=0.5\textwidth]{beacon/auger/1512.02216.figure2.beacon_beat.png} + \caption{ + From Ref~\cite{PierreAuger:2015aqe} + The beacon signal that the \PAObs\ employs. + } + \label{fig:beacon:pa} +\end{figure} + + +The phase measured is dependent on the time needed to traverse the distance between transmitter and antenna. +As + + + + + + + +In the case there are multiple antennas, distances from the transmitter to each antenna vary greatly. +As the phase + + \subsection{Fourier Transform} \begin{equation} \label{eq:fourier} @@ -25,5 +149,16 @@ $\sigma_t \sim 20 \ns$ \end{equation} \subsection{Beacons in Airshower timing} +To setup a time synchronising system for airshower measurements, actually only the high frequency part of the beacon must be employed. +The low frequency part, from which the number of oscillations of the high frequency part are counted, is supplied be the very airshower that is measured. + + +Since the signal is an electromagntic wave, its phase velocity $v$ depends on the refractive index~$n$ as +\begin{equation} + \label{eq:refractive_index} + v_p = \frac{c}{n} +\end{equation} +with $c$ the speed of light in vacuum. + \end{document} diff --git a/documents/thesis/preamble.tex b/documents/thesis/preamble.tex index 39329fe..c1ae203 100644 --- a/documents/thesis/preamble.tex +++ b/documents/thesis/preamble.tex @@ -90,3 +90,9 @@ \newcommand{\ns}{\text{ns}} \newcommand{\MHz}{\text{MHz}} + + +% Names +\newcommand{\PA}{Pierre~Auger} +\newcommand{\PAObs}{\PA\ Observatory} +\newcommand{\GRAND}{Giant Radio Array for Neutrino Detection} diff --git a/figures/beacon/src/single_beacon.py b/figures/beacon/src/single_beacon.py index 75589c3..bc7af40 100755 --- a/figures/beacon/src/single_beacon.py +++ b/figures/beacon/src/single_beacon.py @@ -15,10 +15,9 @@ def ttl(t, t_start=0, frequency=1, width=0.5): return ( (t%frequency) >= t_start) & ( (t%frequency) < t_start + width) -def main(beacon_type, N_periods=1, overplot_sampling_rates = False, sampling_rate=5, t_start=0, sampling_offset_in_rate=1/4, ax=None, fig_kwargs={'figsize': (4,2)}): +def main(beacon_type, N_periods=1, overplot_sampling_rates = False, sampling_rate=6, t_start=-0.3, sampling_offset_in_rate=1, ax=None, fig_kwargs={'figsize': (4,2)}, N_t=200): t_end = N_periods - t_start - N_t = 200 if ax is None: fig, ax = plt.subplots(1,1, **fig_kwargs) @@ -26,7 +25,7 @@ def main(beacon_type, N_periods=1, overplot_sampling_rates = False, sampling_rat time = np.linspace(t_start, t_end, N_t, endpoint=False) if beacon_type == 'ttl': - sig_func = lambda t: ttl(t, frequency=1) + sig_func = lambda t: 2*ttl(t, frequency=1) - 1 elif beacon_type == 'sine': sig_func = lambda t: np.sin(2*np.pi*t) else: @@ -34,6 +33,16 @@ def main(beacon_type, N_periods=1, overplot_sampling_rates = False, sampling_rat ax.plot(time, sig_func(time)) ax.grid(True) + ax.set_xlim(t_start, t_end) + ax.set_ylim(-1.5, 1.5) + + if True: + ax.spines['top'].set_visible(False) + ax.spines['right'].set_visible(False) + ax.spines['bottom'].set_visible(False) + ax.spines['left'].set_visible(False) + + ax.tick_params(left=False, bottom=False, labelleft=False, labelbottom=False) if overplot_sampling_rates: sampling_offset = sampling_offset_in_rate * 1/sampling_rate @@ -46,8 +55,7 @@ def main(beacon_type, N_periods=1, overplot_sampling_rates = False, sampling_rat ax.plot(sample_time, sig_func(sample_time), label='Sampling 2', linestyle='None', marker='+') - ax.set_ylim(top=1.4) - ax.legend(loc="upper center", ncol=2, ) + fig.legend(loc="lower center", ncol=2, ) return fig, ax, dict(