Thesis:Timing:Beacon (WIP)

This commit is contained in:
Eric Teunis de Boone 2022-08-29 19:25:53 +02:00
parent 63fd43d633
commit ae3d89dd41
3 changed files with 157 additions and 8 deletions

View file

@ -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}

View file

@ -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}

View file

@ -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(