aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorNao Pross <np@0hm.ch>2021-10-28 00:33:05 +0200
committerNao Pross <np@0hm.ch>2021-10-28 00:41:41 +0200
commitd042357d4abba1b2c6a6e1e66a7d764b3fe5c9f2 (patch)
tree254cbefb4ad6ed69584fddc2fdd3464070ca73f6 /doc
parentBlock diagram for QAM modulator (diff)
downloadFading-d042357d4abba1b2c6a6e1e66a7d764b3fe5c9f2.tar.gz
Fading-d042357d4abba1b2c6a6e1e66a7d764b3fe5c9f2.zip
Typos and add constellation diagrams
Diffstat (limited to '')
-rw-r--r--doc/thesis/Fading.tex4
-rw-r--r--doc/thesis/Makefile5
-rw-r--r--doc/thesis/chapters/theory.tex48
-rw-r--r--doc/thesis/figures/tikz/qam-constellation.tex25
-rw-r--r--doc/thesis/figures/tikz/qam-modulator.tex6
-rw-r--r--doc/thesis/figures/tikz/qpks-constellation.tex13
-rw-r--r--doc/thesis/figures/tikz/qpsk-constellation.tex23
7 files changed, 85 insertions, 39 deletions
diff --git a/doc/thesis/Fading.tex b/doc/thesis/Fading.tex
index 694484b..3ec7f46 100644
--- a/doc/thesis/Fading.tex
+++ b/doc/thesis/Fading.tex
@@ -50,6 +50,10 @@
%% Include pictures
\usepackage{graphicx}
+%% Subfigures
+\usepackage{subcaption}
+
+
\begin{document}
\hypersetup{pageanchor = false}
diff --git a/doc/thesis/Makefile b/doc/thesis/Makefile
index b9b6d9c..7095689 100644
--- a/doc/thesis/Makefile
+++ b/doc/thesis/Makefile
@@ -15,8 +15,9 @@ SOURCES := \
chapters/conclusions.tex \
\
figures/tikz/overview.tex \
- figures/tikz/qpks-constellation.tex \
- figures/tikz/qam-modulator.tex
+ figures/tikz/qpsk-constellation.tex \
+ figures/tikz/qam-modulator.tex \
+ figures/tikz/qam-constellation.tex
# Get the main file from the file
MAIN := $(shell sed -ne 's/^.*\!TeX root =\(.*\)$$/\1/ p' $(SOURCES))
diff --git a/doc/thesis/chapters/theory.tex b/doc/thesis/chapters/theory.tex
index 4a30b92..97d00cc 100644
--- a/doc/thesis/chapters/theory.tex
+++ b/doc/thesis/chapters/theory.tex
@@ -21,7 +21,7 @@ In this section we will briefly give the mathematical background required by the
\centering
\input{figures/tikz/qam-modulator}
\caption{
- %% TODO: caption
+ Block diagram of a \(M\)-ary QAM modulator.
\label{fig:quadrature-modulation}
}
\end{figure}
@@ -38,52 +38,58 @@ As mentioned earlier, quadrature modulation allows sending more than one bit per
%% TODO: explain why gray code
-Both bit vectors \(\vec{m}_i, \vec{m}_q \in \{0,1\}^{\sqrt{M}}\) are sent through a binary to level converter. It's purpose is to reinterpret the bit vector as a number, usually in gray code, and to convert them into an analog waveform, which we will denote with \(m_i(t)\) and \(m_q(t)\) respectively. Mathematically the binary to level converter can be described as:
+Both bit vectors \(\vec{m}_i, \vec{m}_q \in \{0,1\}^{\sqrt{M}}\) are sent through a binary to level converter. It's purpose is to reinterpret the bit vectors as a numbers, usually in gray code, and to convert them into an analog waveform, which we will denote with \(m_i(t)\) and \(m_q(t)\) respectively. Mathematically the binary to level converter can be described as:
\begin{equation}
m_i(t) = \text{Level}(\vec{m}_i) \cdot p(t),
\end{equation}
-i.e. with a pulse function \(p(t)\) (typically a root raised cosine to optimize for bandwidth) scaled by the interpreted binary value, which we will write here with a ``Level'' function. So at this point the analog waveform is already encoding \(\sqrt{M}\) bits per unit time, but actually it is possible to do better.
+i.e. with a pulse function\footnote{Typically a root raised cosine to optimize for bandwidth.} \(p(t)\) scaled by the interpreted binary value, which is denoted here using a ``Level'' function. So at this point the analog waveform is already encoding \(\sqrt{M}\) bits per unit time, but actually it is possible to do better.
\paragraph{Mixer}
Having analog level signals, it is this now possible to mix them with radio frequency carriers. Because there are two waveforms, one might expect that two carrier frequencies are necessary, however this is not the case.
-The two component \(m_i(t)\) and \(m_q(t)\) are mixed with two different periodic signals \(\phi_i(t)\) and \(\phi_q(t)\) that have the same frequency \(\omega_c = 2\pi / T\). Now the clever part: the carrier functions are picked to be \emph{orthonormal}, mathematically this is expressed by the conditions
-\begin{subequations}
+The two component \(m_i(t)\) and \(m_q(t)\) are mixed with two different periodic signals \(\phi_i(t)\) and \(\phi_q(t)\) that have the same frequency \(\omega_c = 2\pi / T\). Now the clever part: the carrier signals are picked to be \emph{orthonormal}\footnote{Orthonormal here can be understood in the same sense as in finite dimensional vector spaces, where orthonormal vectors behave exactly like equations \eqref{eqn:orthonormal-conditions} under the dot product.} to each other, mathematically this is expressed by the conditions
+\begin{subequations} \label{eqn:orthonormal-conditions}
\begin{align}
\langle \phi_i | \phi_q \rangle
&= \int_T \phi_i^* \phi_q \, dt = \int_T \phi_i \phi_q^* \, dt
= 0, \text{ and } \\
\langle \phi_k | \phi_k \rangle
&= \int_T \phi_k^* \phi_k \,dt = 1,
- \text{ where } k \text{ can be either } i \text{ or } q.
+ \text{ where } k \text{ is either } i \text{ or } q.
\end{align}
\end{subequations}
-
-These rather abstract conditions remarkably allow for something very special. By defining a new signal
+In practice typically \(\phi_i(t) = \cos(\omega_c t)\) and \(\phi_q(t) = j\sin(\omega_c t)\). Provided these rather abstract conditions, let's define a new signal
\begin{equation}
- s = m_i\phi_i + m_q\phi_q,
+ s = m_i\phi_i + m_q\phi_q.
\end{equation}
%% TODO: is this assumption correct?
-notice that assuming \(m_i\) and \(m_q\) are constant over the period carrier's period \(T\),
+Notice that assuming \(m_i\) and \(m_q\) are constant\footnote{This of is an approximation which assumes that the signal changes much slower than the carrier's modulation frequency.} over the carrier's period \(T\),
\begin{align*}
\langle s | \phi_i \rangle = \int_T s^* \phi_i \,dt
&= \int m_i \phi_i^* \phi_i + m_q \phi_q^* \phi_i \,dt \\
&= m_i \underbrace{\int_T \phi_i^* \phi_i \,dt}_{1}
+ m_q \underbrace{\int_T \phi_q^* \phi_i \,dt}_{0} = m_i,
\end{align*}
-which effectively means that it is possible to isolate a single component of the signal out of \(s\). The same of course works with \(\phi_q\) as well resulting in \(\langle s | \phi_q \rangle = m_q\).
-
-% This formulation is rather abstract, in practice we usually pick \(\phi_i(t) = \cos(\omega_c t)\) and \(\phi_q(t) = j\sin(\omega_c t)\).
+which effectively means that it is possible to isolate a single component \(m_i(t)\) out of \(s(t)\). The same of course works with \(\phi_q\) as well resulting in \(\langle s | \phi_q \rangle = m_q\). Thus (remarkably) it is possible to send two signals on the same frequency, without them interfering with each other. Since each can represent one of \(\sqrt{M}\) values, by having two we obtain \(\sqrt{M} \cdot \sqrt{M} = M\) possible combinations.
-% \begin{figure}
-% \centering
-% \input{figures/tikz/qpks-constellation}
-% \caption{
-% % TODO: write caption
-% \label{fig:qpks-constellation}
-% }
-% \end{figure}
+\begin{figure}
+ \hfill
+ \begin{subfigure}{.4\linewidth}
+ \input{figures/tikz/qam-constellation}
+ \caption{16--QAM}
+ \end{subfigure}
+ \hfill
+ \begin{subfigure}{.4\linewidth}
+ \input{figures/tikz/qpsk-constellation}
+ \caption{8--QPSK}
+ \end{subfigure}
+ \hfill
+ \caption{
+ Examples of constellation diagrams. Each dot represents a possible location for the complex amplitude of the passband signal.
+ \label{fig:qam-constellation}
+ }
+\end{figure}
\subsection{Phase Shift Keying (PSK)}
diff --git a/doc/thesis/figures/tikz/qam-constellation.tex b/doc/thesis/figures/tikz/qam-constellation.tex
new file mode 100644
index 0000000..e9a7778
--- /dev/null
+++ b/doc/thesis/figures/tikz/qam-constellation.tex
@@ -0,0 +1,25 @@
+% vim: set ts=2 sw=2 noet:
+\begin{tikzpicture}[
+ axis/.style = {
+ thick, -latex, black,
+ },
+ star/.style = {
+ draw = black, thick, fill = red!50,
+ circle, outer sep = 1mm, inner sep = 0,
+ minimum size = 1.5mm,
+ },
+ ]
+ \draw[axis] (-25mm,0) to (25mm,0) node[right] {\(\phi_i\)};
+ \draw[axis] (0,-25mm) to (0,25mm) node[above] {\(\phi_q\)};
+
+ \foreach \i in {0,1,...,3}{
+ \foreach \q in {0,1,...,3}{
+ \node[star] (s\i\q) at ({\i*10mm - 15mm},{\q*10mm - 15mm}) {};
+ }
+ }
+
+ \foreach \i/\l in {0/00,1/01,2/11,3/10}{
+ \node[lightgray, below = 3mm] at (s\i0) {\texttt{\l}};
+ \node[lightgray, left = 2mm] at (s0\i) {\texttt{\l}};
+ }
+\end{tikzpicture}
diff --git a/doc/thesis/figures/tikz/qam-modulator.tex b/doc/thesis/figures/tikz/qam-modulator.tex
index c792fae..6eb60ea 100644
--- a/doc/thesis/figures/tikz/qam-modulator.tex
+++ b/doc/thesis/figures/tikz/qam-modulator.tex
@@ -72,7 +72,7 @@
\node[below] at (mq) {\(m_q(t)\)};
\node[above right] at (phii) {\(\phi_i\)};
- \node[right] at (phiq) {\(\phi_q\)};
+ \node[right, yshift = 1mm] at (phiq) {\(\phi_q\)};
\node[above left] at (si) {\(s_i(t)\)};
\node[below left] at (sq) {\(s_q(t)\)};
@@ -83,7 +83,7 @@
\fill[right color = white, left color = red!20, draw = white]
($(B2Li.north) + (0,1)$) coordinate (A) rectangle ($(B2Lq.south) + (9,-1)$);
- \node[blue!50, anchor = south east] at (D) {\bfseries\ttfamily Digital bits};
- \node[red!50, anchor = south west] at (A) {\bfseries\ttfamily Analog waveform};
+ \node[blue!50, anchor = south east, xshift = -4mm] at (D) {\bfseries\ttfamily Digital bits};
+ \node[red!50, anchor = south west, xshift = 4mm] at (A) {\bfseries\ttfamily Analog waveform};
\end{pgfonlayer}
\end{circuitikz}
diff --git a/doc/thesis/figures/tikz/qpks-constellation.tex b/doc/thesis/figures/tikz/qpks-constellation.tex
deleted file mode 100644
index 5ccad1a..0000000
--- a/doc/thesis/figures/tikz/qpks-constellation.tex
+++ /dev/null
@@ -1,13 +0,0 @@
-% vim: set ts=2 sw=2 noet spell:
-
-\begin{tikzpicture}
- \begin{axis}[
- axis lines = middle,
- colormap/cool,
- ]
- \pgfmathsetmacro{\fc}{10}
-
- \addplot3[]
- {sin(x) + 1};
- \end{axis}
-\end{tikzpicture}
diff --git a/doc/thesis/figures/tikz/qpsk-constellation.tex b/doc/thesis/figures/tikz/qpsk-constellation.tex
new file mode 100644
index 0000000..d927b19
--- /dev/null
+++ b/doc/thesis/figures/tikz/qpsk-constellation.tex
@@ -0,0 +1,23 @@
+% vim: set ts=2 sw=2 noet:
+\begin{tikzpicture}[
+ axis/.style = {
+ thick, -latex, black,
+ },
+ star/.style = {
+ draw = black, thick, fill = red!50,
+ circle, outer sep = 1mm, inner sep = 0,
+ minimum size = 1.5mm,
+ },
+ ]
+ \draw[axis] (-25mm,0) to (25mm,0) node[right] {\(\phi_i\)};
+ \draw[axis] (0,-25mm) to (0,25mm) node[above] {\(\phi_q\)};
+
+ \draw[lightgray, densely dotted, thick] (0,0) circle (15mm);
+ \foreach \a in {0,1,...,8}{
+ \node[star] (s\a) at ({360/8*(.5 + \a)}:15mm) {};
+ }
+
+ \foreach \i/\l in {0/000,1/001,2/011,3/010,4/110,5/111,6/101,7/100}{
+ \node[lightgray] at ($(s\i) + ({360/8*(.5 + \i)}:5mm)$) {\texttt{\l}};
+ }
+\end{tikzpicture}