diff options
Diffstat (limited to 'doc/thesis')
-rw-r--r-- | doc/thesis/Fading.bib | 23 | ||||
-rw-r--r-- | doc/thesis/Makefile | 4 | ||||
-rw-r--r-- | doc/thesis/chapters/implementation.tex | 31 | ||||
-rw-r--r-- | doc/thesis/figures/data/flowgraphs/channel_qpsk_hw_lab.dat | bin | 0 -> 13992888 bytes | |||
-rw-r--r-- | doc/thesis/figures/data/flowgraphs/equalized_qpsk_hw_lab.dat | bin | 0 -> 3497888 bytes | |||
-rw-r--r-- | doc/thesis/figures/data/flowgraphs/locked_qpsk_hw_lab.dat | bin | 0 -> 3497832 bytes | |||
-rw-r--r-- | doc/thesis/figures/data/flowgraphs/synchronized_qpsk_hw_lab.dat | bin | 0 -> 3497888 bytes | |||
-rw-r--r-- | doc/thesis/figures/data/qpsk_hw_lab.py | 31 | ||||
-rw-r--r-- | doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler5_k5.py | 6 | ||||
-rw-r--r-- | doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler70_k5.py | 4 | ||||
-rw-r--r-- | doc/thesis/figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler5.py | 4 | ||||
-rw-r--r-- | doc/thesis/figures/tikz/qpsk-simulations-dynamic.tex | 72 | ||||
-rw-r--r-- | doc/thesis/figures/tikz/qpsk-simulations-static.tex | 35 |
13 files changed, 159 insertions, 51 deletions
diff --git a/doc/thesis/Fading.bib b/doc/thesis/Fading.bib index 026cdba..280a5b6 100644 --- a/doc/thesis/Fading.bib +++ b/doc/thesis/Fading.bib @@ -195,23 +195,24 @@ title = {USRP\textsuperscript{\textsf{TM}} B200/B200 Bus Series Specification Sheet}, year = {2019}, author = {Ettus Research}, - url = {https://www.ettus.com/wp-content/uploads/2019/01/b200-b210_spec_sheet.pdf} + url = {https://www.ettus.com/wp-content/uploads/2019/01/b200-b210_spec_sheet.pdf} } @thesis{Valimaki1995, - title = {Discrete-Time Modeling of Acoustic TubesUsing Fractional Delay Filters}, - author = {Välimäki Vesa}, + title = {Discrete-Time Modeling of Acoustic TubesUsing Fractional Delay Filters}, + author = {Välimäki Vesa}, institution = {Helsinki University of Technology, Laboratory of Acoustics and Audio Signal Processing}, - year = {1995}, - month = {12}, - day = {18}, - isbn = {951-22-2880-7}, - issn = {0356-0083X}, + year = {1995}, + month = {12}, + day = {18}, + isbn = {951-22-2880-7}, + issn = {0356-0083X}, } @report{ETSI, - title = {ETSI TS 136 104 V11.4.0}, - author = {ETSI 3rd Generation Partnership Project}, - type = {Technical Specification}, + title = {ETSI TS 136 104 V11.4.0}, + author = {ETSI 3rd Generation Partnership Project}, + type = {Technical Specification}, institution = {{E}uropean {T}elecommunication {S}tandards {I}nstitute}, + url = {https://www.etsi.org/deliver/etsi_ts/136100_136199/136104/11.04.00_60/ts_136104v110400p.pdf} } diff --git a/doc/thesis/Makefile b/doc/thesis/Makefile index 6d2d4ba..f705a6b 100644 --- a/doc/thesis/Makefile +++ b/doc/thesis/Makefile @@ -29,11 +29,12 @@ SOURCES := \ figures/tikz/qpsk-simulations-static.tex \ figures/tikz/qpsk-simulations-dynamic.tex - DATA := \ figures/data/multipath_frequency_response.dat \ figures/data/rice_pdf.dat \ \ + figures/data/qpsk_hw_lab.dat \ + \ figures/data/qpsk_sim_nochannel.dat \ \ figures/data/qpsk_sim_static_firblock_los_halfsymb.dat \ @@ -47,7 +48,6 @@ DATA := \ figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler70.dat - # Get the main file from the file MAIN := $(shell sed -ne 's/^.*\!TeX root =\(.*\)$$/\1/ p' $(SOURCES)) PDF := $(patsubst %.tex, %.pdf, $(MAIN)) diff --git a/doc/thesis/chapters/implementation.tex b/doc/thesis/chapters/implementation.tex index be317cb..4518611 100644 --- a/doc/thesis/chapters/implementation.tex +++ b/doc/thesis/chapters/implementation.tex @@ -268,7 +268,7 @@ def block_phase(self, start, end): In order to study the effects of multipath fading, a series of simulations have been made under different conditions. To simulate a channel affected by multipath fading two blocks from the GR library, and a third custom block were used. The channel model can simulate AWGN, a frequency offset and either a Rayleigh (NLOS) oder Rice (LOS) fading. -\subsection{Fading with discrete time model} +\subsection{Fading with discrete time model} \label{sec:discrete-time-model-fir} For the statical version according to \ref{sec:discrete-time-model} for implement and illustrate the fading effect, a separate block was created and implemented in the channel. Nearer shown in \ref{lst:fractional-delay-fir}. This block is based on a FIR filter. It can be displayed with a direct path (LOS) or without one (NLOS). With the help of this filter, the delay of the line of side paths are illustrated. In this block it is possible to simulate any number of these paths with different strengths, as long as there is an associated amplitude specified for each delayed ray. @@ -380,20 +380,20 @@ The numbers of tags used in this case are similar to the number of given values. \centering \begin{tabular}{rr} \toprule - Excess tap delay in \si{\nano\second} & Relative power in \si{\decibel} \\ + \bfseries Excess tap delay & \bfseries Relative power \\ \midrule - 0 & \(-1.0 \approx 0.7943\) \\ - 50 & \(-1.0 \approx 0.7943\) \\ - 120 & \(-1.0 \approx 0.7943\) \\ - 200 & \( 0.0 = 1.0000\) \\ - 230 & \( 0.0 = 1.0000\) \\ - 500 & \( 0.0 \approx 1.0000\) \\ - 1600 & \(-3.0 \approx 0.5011\) \\ - 2300 & \(-5.0 \approx 0.3162\) \\ - 5000 & \(-7.0 \approx 0.1995\) \\ + \SI{ 0}{\nano\second} & \(\SI{-1.0}{\decibel} \approx 0.7943\) \\ + \SI{ 50}{\nano\second} & \(\SI{-1.0}{\decibel} \approx 0.7943\) \\ + \SI{ 120}{\nano\second} & \(\SI{-1.0}{\decibel} \approx 0.7943\) \\ + \SI{ 200}{\nano\second} & \(\SI{ 0.0}{\decibel} = 1.0000\) \\ + \SI{ 230}{\nano\second} & \(\SI{ 0.0}{\decibel} = 1.0000\) \\ + \SI{ 500}{\nano\second} & \(\SI{ 0.0}{\decibel} = 1.0000\) \\ + \SI{1.6}{\micro\second} & \(\SI{-3.0}{\decibel} \approx 0.5011\) \\ + \SI{2.3}{\micro\second} & \(\SI{-5.0}{\decibel} \approx 0.3162\) \\ + \SI{5.0}{\micro\second} & \(\SI{-7.0}{\decibel} \approx 0.1995\) \\ \bottomrule \end{tabular} - \caption{Values used for the simulation \cite{ETSI}. \label{tab:etsi-tap-values}} + \caption{Extended Typical Urban model (ETU) ETSI Standard PDP values for multipath fading propagation conditions. \cite{ETSI}. \label{tab:etsi-tap-values}} \end{table} % \begin{figure} @@ -494,6 +494,7 @@ Without those only the amplitudes could be seen in the Plots, with all the noise \newgeometry{ + top = 25mm, bottom = 25mm, inner = 15mm, outer = 15mm, } \begin{figure} @@ -501,7 +502,9 @@ Without those only the amplitudes could be seen in the Plots, with all the noise \label{qpsk-simulations-static} \input{figures/tikz/qpsk-simulations-static} \caption{ - QPSK static TODO. + Simulations of a static fading channel models with different tap values. The samples were generated using the custom block discussed in section \ref{sec:discrete-time-model-fir}. For the 1 tap model the fading tap was \(0.2\delta(n - 0.25)\), and for the 4 tap model uses \(0.2 \delta(n - 0.25) + 0.08 \delta(n - 3.25) + 0.5 \delta(n - 4) + 0.4 \delta(n - 6.3)\). In both cases the delays are given in samples. + % delay = [0.25, 3.25, 4, 6.3] + % ampl = [0.2, 0.08, 0.5, 0.4] } \end{figure} \newpage @@ -509,7 +512,7 @@ Without those only the amplitudes could be seen in the Plots, with all the noise \centering \input{figures/tikz/qpsk-simulations-dynamic} \caption{ - QPSK dynamic TODO. + Simulations with a dynamic fading channel model using PDP values of the Extended Typical Urban model (ETU) of the ETSI standard normative Annex B.2 in \cite{ETSI}. The color gradient represents progression in time. } \end{figure} \restoregeometry diff --git a/doc/thesis/figures/data/flowgraphs/channel_qpsk_hw_lab.dat b/doc/thesis/figures/data/flowgraphs/channel_qpsk_hw_lab.dat Binary files differnew file mode 100644 index 0000000..80b01ca --- /dev/null +++ b/doc/thesis/figures/data/flowgraphs/channel_qpsk_hw_lab.dat diff --git a/doc/thesis/figures/data/flowgraphs/equalized_qpsk_hw_lab.dat b/doc/thesis/figures/data/flowgraphs/equalized_qpsk_hw_lab.dat Binary files differnew file mode 100644 index 0000000..13dbddf --- /dev/null +++ b/doc/thesis/figures/data/flowgraphs/equalized_qpsk_hw_lab.dat diff --git a/doc/thesis/figures/data/flowgraphs/locked_qpsk_hw_lab.dat b/doc/thesis/figures/data/flowgraphs/locked_qpsk_hw_lab.dat Binary files differnew file mode 100644 index 0000000..a2581ce --- /dev/null +++ b/doc/thesis/figures/data/flowgraphs/locked_qpsk_hw_lab.dat diff --git a/doc/thesis/figures/data/flowgraphs/synchronized_qpsk_hw_lab.dat b/doc/thesis/figures/data/flowgraphs/synchronized_qpsk_hw_lab.dat Binary files differnew file mode 100644 index 0000000..5ce1df2 --- /dev/null +++ b/doc/thesis/figures/data/flowgraphs/synchronized_qpsk_hw_lab.dat diff --git a/doc/thesis/figures/data/qpsk_hw_lab.py b/doc/thesis/figures/data/qpsk_hw_lab.py new file mode 100644 index 0000000..a8170c6 --- /dev/null +++ b/doc/thesis/figures/data/qpsk_hw_lab.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 + +import utils +import numpy as np + +# get array of samples [channel, synchronized, equalized, locked] +samples = utils.load_samples(__file__) + +# range of samples we want to show +start = 1e3 +end = start +50 + +# select every second samples +select_samples = lambda arr: arr[int(start):int(end):2] +values = map(select_samples, samples) + +# split into imaginary and real parts +get_parts = lambda v: (np.real(v), np.imag(v)) +parts = [p for v in map(get_parts, values) for p in v] + +# zip data and add header +data = np.array(list(zip(*parts))) +headers = [ + "channel_re", "channel_im", + "synchronized_re", "synchronized_im", + "equalized_re", "equalized_im", + "locked_re", "locked_im" +] + +# save to file +utils.save_to_file(__file__, data, headers) diff --git a/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler5_k5.py b/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler5_k5.py index eae2afc..f621fd0 100644 --- a/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler5_k5.py +++ b/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler5_k5.py @@ -7,11 +7,11 @@ import numpy as np samples = utils.load_samples(__file__) # range of samples we want to show -start = 1e3 -end = start +800 +start = 5e3 +end = start +1e3 # select every second samples -select_samples = lambda arr: arr[int(start):int(end):4] +select_samples = lambda arr: arr[int(start):int(end):8] values = map(select_samples, samples) # split into imaginary and real parts diff --git a/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler70_k5.py b/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler70_k5.py index eae2afc..c82fbd1 100644 --- a/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler70_k5.py +++ b/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler70_k5.py @@ -8,10 +8,10 @@ samples = utils.load_samples(__file__) # range of samples we want to show start = 1e3 -end = start +800 +end = start +1e3 # select every second samples -select_samples = lambda arr: arr[int(start):int(end):4] +select_samples = lambda arr: arr[int(start):int(end):10] values = map(select_samples, samples) # split into imaginary and real parts diff --git a/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler5.py b/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler5.py index eae2afc..c82fbd1 100644 --- a/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler5.py +++ b/doc/thesis/figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler5.py @@ -8,10 +8,10 @@ samples = utils.load_samples(__file__) # range of samples we want to show start = 1e3 -end = start +800 +end = start +1e3 # select every second samples -select_samples = lambda arr: arr[int(start):int(end):4] +select_samples = lambda arr: arr[int(start):int(end):10] values = map(select_samples, samples) # split into imaginary and real parts diff --git a/doc/thesis/figures/tikz/qpsk-simulations-dynamic.tex b/doc/thesis/figures/tikz/qpsk-simulations-dynamic.tex index 5806d42..4d01c92 100644 --- a/doc/thesis/figures/tikz/qpsk-simulations-dynamic.tex +++ b/doc/thesis/figures/tikz/qpsk-simulations-dynamic.tex @@ -1,19 +1,83 @@ % vim: set ts=2 sw=2 noet: -\newcommand{\makeplot}[6]{% +\newcommand{\makeplot}[5]{% \hfill \begin{tikzpicture} \begin{axis}[ - width = {\linewidth / 3.5}, - height = {\linewidth / 3.5}, + width = {\linewidth / 3.3}, + height = {\linewidth / 3.3}, grid = major, xmin = {-#4}, xmax = {#4}, ymin = {-#4}, ymax = {#4}, + colormap name=viridis, #5 ] - \addplot[only marks, #6] table[x index = #2, y index = #3] {#1}; + \addplot[only marks, scatter] table [x index = #2, y index = #3] {#1}; \end{axis} \end{tikzpicture} \hfill } + +% ------------------------------------------------------------------- + +\noindent +\makeplot{figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler5.dat}{0}{1}{4}{ + ylabel = {Channel with ISI}, + yticklabel style = { + text width = 3em, + align = right, + }, + title = {NLOS, \(\Delta f = \SI{5}{\hertz}\)}, +} +% +\makeplot{figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler5_k5.dat}{0}{1}{4}{ + title = {LOS, \(\Delta f = \SI{5}{\hertz}, K = 5\)}, +} +% +\makeplot{figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler70_k5.dat}{0}{1}{4}{ + title = {LOS, \(\Delta f = \SI{70}{\hertz}, K = 5\)}, +} +\newline + +% ------------------------------------------------------------------- + +\noindent +\makeplot{figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler5.dat}{2}{3}{4}{% + ylabel = {Synchronized}, + yticklabel style = { + text width = 3em, + align = right, + }, +} +\makeplot{figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler5_k5.dat}{2}{3}{4}{} +\makeplot{figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler70_k5.dat}{2}{3}{4}{} +\newline + +% ------------------------------------------------------------------- + +\noindent +\makeplot{figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler5.dat}{4}{5}{2}{% + ylabel = {Equalized}, + yticklabel style = { + text width = 3em, + align = right, + }, +} +\makeplot{figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler5_k5.dat}{4}{5}{2}{} +\makeplot{figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler70_k5.dat}{4}{5}{2}{} +\newline + +% ------------------------------------------------------------------- + +\noindent +\makeplot{figures/data/qpsk_sim_dynamic_grblock_nlos_etsi_doppler5.dat}{6}{7}{2}{% + ylabel = {Locked}, + yticklabel style = { + text width = 3em, + align = right, + }, +} +\makeplot{figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler5_k5.dat}{6}{7}{2}{} +\makeplot{figures/data/qpsk_sim_dynamic_grblock_los_etsi_doppler70_k5.dat}{6}{7}{2}{} +\newline diff --git a/doc/thesis/figures/tikz/qpsk-simulations-static.tex b/doc/thesis/figures/tikz/qpsk-simulations-static.tex index ebe7957..1afb134 100644 --- a/doc/thesis/figures/tikz/qpsk-simulations-static.tex +++ b/doc/thesis/figures/tikz/qpsk-simulations-static.tex @@ -1,11 +1,10 @@ % vim: set ts=2 sw=2 noet: - \newcommand{\makeplot}[6]{% \hfill \begin{tikzpicture} \begin{axis}[ - width = {\linewidth / 3.5}, - height = {\linewidth / 3.5}, + width = {\linewidth / 3.3}, + height = {\linewidth / 3.3}, grid = major, xmin = {-#4}, xmax = {#4}, ymin = {-#4}, ymax = {#4}, @@ -18,28 +17,34 @@ \hfill } +% ------------------------------------------------------------------- + \noindent \makeplot{figures/data/qpsk_sim_static_firblock_nlos_halfsymb.dat}{0}{1}{4}{ ylabel = {Channel with ISI}, yticklabel style = { - text width = 2.25em, + text width = 3em, align = right, }, title = {1 Tap NLOS}, }{magenta!80!blue} +% \makeplot{figures/data/qpsk_sim_static_firblock_los_halfsymb.dat}{0}{1}{4}{ title = {1 Tap LOS}, }{magenta!80!blue} +% \makeplot{figures/data/qpsk_sim_static_firblock_los_vec.dat}{0}{1}{4}{ title = {4 Taps LOS}, }{magenta!80!blue} \newline +% ------------------------------------------------------------------- + \noindent \makeplot{figures/data/qpsk_sim_static_firblock_nlos_halfsymb.dat}{2}{3}{4}{% ylabel = {Synchronized}, yticklabel style = { - text width = 2.25em, + text width = 3em, align = right, }, }{magenta!60!blue} @@ -47,27 +52,31 @@ \makeplot{figures/data/qpsk_sim_static_firblock_los_vec.dat}{2}{3}{4}{}{magenta!60!blue} \newline +% ------------------------------------------------------------------- + \noindent -\makeplot{figures/data/qpsk_sim_static_firblock_nlos_halfsymb.dat}{4}{5}{1}{% +\makeplot{figures/data/qpsk_sim_static_firblock_nlos_halfsymb.dat}{4}{5}{2}{% ylabel = {Equalized}, yticklabel style = { - text width = 2.25em, + text width = 3em, align = right, }, }{magenta!40!blue} -\makeplot{figures/data/qpsk_sim_static_firblock_los_halfsymb.dat}{4}{5}{1}{}{magenta!40!blue} -\makeplot{figures/data/qpsk_sim_static_firblock_los_vec.dat}{4}{5}{1}{}{magenta!40!blue} +\makeplot{figures/data/qpsk_sim_static_firblock_los_halfsymb.dat}{4}{5}{2}{}{magenta!40!blue} +\makeplot{figures/data/qpsk_sim_static_firblock_los_vec.dat}{4}{5}{2}{}{magenta!40!blue} \newline +% ------------------------------------------------------------------- + \noindent -\makeplot{figures/data/qpsk_sim_static_firblock_nlos_halfsymb.dat}{6}{7}{1}{% +\makeplot{figures/data/qpsk_sim_static_firblock_nlos_halfsymb.dat}{6}{7}{2}{% ylabel = {Locked}, yticklabel style = { - text width = 2.25em, + text width = 3em, align = right, }, }{magenta!20!blue} -\makeplot{figures/data/qpsk_sim_static_firblock_los_halfsymb.dat}{6}{7}{1}{}{magenta!20!blue} -\makeplot{figures/data/qpsk_sim_static_firblock_los_vec.dat}{6}{7}{1}{}{magenta!20!blue} +\makeplot{figures/data/qpsk_sim_static_firblock_los_halfsymb.dat}{6}{7}{2}{}{magenta!20!blue} +\makeplot{figures/data/qpsk_sim_static_firblock_los_vec.dat}{6}{7}{2}{}{magenta!20!blue} \newline |