mirror of
https://gitlab.science.ru.nl/mthesis-edeboone/m.internship-documentation.git
synced 2024-11-12 18:43:30 +01:00
Thesis:Timing:Beacon (WIP)
This commit is contained in:
parent
63fd43d633
commit
ae3d89dd41
3 changed files with 157 additions and 8 deletions
|
@ -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}
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in a new issue