aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNao Pross <np@0hm.ch>2021-11-01 16:29:17 +0100
committerNao Pross <np@0hm.ch>2021-11-01 16:29:17 +0100
commit0b4422f6508fd6f5d2d28c0465f48476edd700ea (patch)
treef51b8430f082cb7f29dc64f1075d2771cd67d314
parentDraw figure for frequency selective channels (diff)
downloadFading-0b4422f6508fd6f5d2d28c0465f48476edd700ea.tar.gz
Fading-0b4422f6508fd6f5d2d28c0465f48476edd700ea.zip
Review construction of orthogonal carriers
-rw-r--r--doc/thesis/chapters/theory.tex31
-rw-r--r--doc/thesis/figures/tikz/qam-constellation.tex3
-rw-r--r--doc/thesis/figures/tikz/qam-example.tex49
-rw-r--r--doc/thesis/figures/tikz/qam-modulator.tex45
4 files changed, 70 insertions, 58 deletions
diff --git a/doc/thesis/chapters/theory.tex b/doc/thesis/chapters/theory.tex
index 2506333..6354328 100644
--- a/doc/thesis/chapters/theory.tex
+++ b/doc/thesis/chapters/theory.tex
@@ -86,23 +86,14 @@ Notice that assuming \(m_i\) and \(m_q\) are constant\footnote{This is an approx
\end{align*}
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 signal can represent one of \(\sqrt{M}\) values, by having two we obtain \(\sqrt{M} \cdot \sqrt{M} = M\) possible combinations.
-A graphical way to see what is happening, is to observe a so called \emph{constellation diagram}. An example is shown in figure \ref{fig:qam-constellation} for \(M = 16\). The two carrier signals \(\phi_i\) and \(\phi_q\) can be understood as bases of a coordinate system.
-
-\subsection{Construction of orthogonal carrier signals}
+A graphical way to see what is happening, is to observe a so called \emph{constellation diagram}. An example is shown in figure \ref{fig:qam-constellation} for \(M = 16\). The two carrier signals \(\phi_i\) and \(\phi_q\) can be understood as bases of a coordinate system, in which the two amplitude levels of the two modulated messages, determine a position in the grid.
+\paragraph{Example}
-If \(\phi_i\) is a real valued signal (which is typical) it is possible to find a function the quadrature carrier using the \emph{Hilbert transform}:
-\begin{equation}
- \hilbert g(t) = g(t) * \frac{1}{\pi t}
- = \frac{1}{\pi} \int_\mathbb{R} \frac{g(\tau)}{t - \tau} \,d\tau
- = \frac{1}{\pi} \int_\mathbb{R} \frac{g(t - \tau)}{\tau} \,d\tau,
-\end{equation}
-i.e. a linear operator that introduces a phase shift of \(\pi / 2\) over all frequencies \cite{Hsu,Gallager}. It is a known property of the Hilbert transform that given a real valued function \(g(t)\) then \(\langle g, \hilbert g \rangle = 0\) \cite{Kschischang,Kneubuehler}.
-In practice \(\phi_i(t) = \cos(\omega_c t)\) and \(\phi_q(t) = \hilbert \phi_i(t) = \sin(\omega_c t)\).
+A concrete example for \(M = 16\): if the message is 1110 the bit splitter creates two values \(\vec{m}_q = 11\) and \(\vec{m}_i = 10\); both are converted into an analog amplitudes \(m_q = 3\) and \(m_i = 4\); that are then mixed with their respective carrier, resulting in \(s(t)\) being the point inside the bottom right sub-quadrant of the top right quadrant (blue dot in figure \ref{fig:qam-constellation}).
-\paragraph{Oscillator and phase shifter}
+In figure \ref{fig:qam-constellation} the dots of the constellation have coordinates that begin on the bottom left corner, and are nicely aligned on a grid. Both are not a necessary requirement for QAM, in fact there are many schemes (for example when \(M = 32\)) that are arranged on a non square shape, and place the dots in different orders. The only constraint that most QAM modulators have in common, with regards to the geometry of the constellation, is that between any two adjacent dots (along the axis, not diagonally) only one bit of the represented value changes (gray code). This is done to improve the bit error rate (BER) of the transmission.
-\subsection{Spectral properties of a QAM signal}
\begin{figure}
\hfill
@@ -121,6 +112,20 @@ In practice \(\phi_i(t) = \cos(\omega_c t)\) and \(\phi_q(t) = \hilbert \phi_i(t
}
\end{figure}
+\subsection{Construction of orthogonal carrier signals}
+
+Knowing why there is a need for orthogonal carriers, we should now discuss which functions satisfy the property described by \eqref{eqn:orthogonal-condition}. If \(\phi_i\) is a real valued signal (which is typical) it is possible to find a function the quadrature carrier using the \emph{Hilbert transform} (sometimes called Hilbert filter):
+\begin{equation}
+ \hilbert g(t) = g(t) * \frac{1}{\pi t}
+ = \frac{1}{\pi} \int_\mathbb{R} \frac{g(\tau)}{t - \tau} \,d\tau
+ = \frac{1}{\pi} \int_\mathbb{R} \frac{g(t - \tau)}{\tau} \,d\tau.
+\end{equation}
+The Hilbert transform is a linear operator that introduces a phase shift of \(\pi / 2\) over all frequencies \cite{Hsu,Gallager}, and it is possible to show that given a real valued function \(g(t)\) then \(\langle g, \hilbert g \rangle = 0\) \cite{Kschischang,Kneubuehler}. There are many functions that are Hilbert transform pairs, however in practice the pair \(\phi_i(t) = \cos(\omega_c t)\) and \(\phi_q(t) = \hilbert \phi_i(t) = \sin(\omega_c t)\) is always used.
+
+% \paragraph{Oscillator and phase shifter}
+% TODO: what to write here?
+
+\subsection{Spectral properties of a QAM signal}
\section{Phase shift keying (\(M\)-PSK)}
diff --git a/doc/thesis/figures/tikz/qam-constellation.tex b/doc/thesis/figures/tikz/qam-constellation.tex
index 6481650..eeeddc3 100644
--- a/doc/thesis/figures/tikz/qam-constellation.tex
+++ b/doc/thesis/figures/tikz/qam-constellation.tex
@@ -21,6 +21,9 @@
}
}
+ % special node for the example
+ \node[star, fill = blue!40!white] at (s32) {};
+
\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}};
diff --git a/doc/thesis/figures/tikz/qam-example.tex b/doc/thesis/figures/tikz/qam-example.tex
new file mode 100644
index 0000000..2d37f55
--- /dev/null
+++ b/doc/thesis/figures/tikz/qam-example.tex
@@ -0,0 +1,49 @@
+% vim: set ts=2 sw=2 noet:
+
+%% TODO: finish this figure
+
+\begin{tikzpicture}
+ % Draw digital signals
+ \begin{scope}[font = \ttfamily\footnotesize, text = blue!70!white]
+ \node[above = 1mm of M, xshift = 2mm] {\(\ldots 1100101\)};
+ \node[above = 7mm of vmi, xshift = 3mm]
+ {\(\overbracket[.8pt]{\,11\ldots 00\,}^{\sqrt{M} \text{ bits}}\)};
+ \end{scope}
+
+ % Draw analog waveform
+ \begin{scope}[font = \ttfamily\tiny]
+ \coordinate (O) at ($(mi)+(-2mm,10.5mm)$);
+
+ \node[left, red!70!white, anchor = east, text width = 8mm, align = right]
+ at ($(O) + (-2mm,0)$) {\(2^{\sqrt{M}}\) levels};
+
+ \foreach \y in {-3mm,0,3mm} {
+ \draw[gray, densely dotted] (O) ++(-2mm,\y) -- ++(22mm,0);
+ }
+
+ \draw[thick, draw = red!70!white] (O)
+ -- ++(3mm,0) -- ++(0,-3mm) -- ++(3mm,0) -- ++(0,6mm)
+ -- ++(3mm,0) -- ++(0,-3mm) -- ++(3mm,0) -- ++(0,-3mm)
+ -- ++(3mm,0) -- ++(0,3mm) -- ++(3mm,0);
+ \end{scope}
+
+ % Draw constellation diagram
+ \begin{scope}
+ \coordinate (O) at ($(S)+(-7mm,8mm)$);
+ \draw[gray, -latex] (O) ++(-2mm,0) -- ++(12mm,0) node[right] {\tiny \(\phi_i\)};
+ \draw[gray, -latex] (O) ++(0,-2mm) -- ++(0,12mm) node[above] {\tiny \(\phi_q\)};
+
+ \node[
+ circle, thick,
+ minimum size = 3pt,
+ inner sep = 0, outer sep = .8pt,
+ draw = gray, fill = red!50!white
+ ] (P) at ($(O)+(5mm, 4mm)$) {};
+
+ \node[gray, above right] at (P) {\tiny \(s\)};
+
+ \draw[gray, densely dotted]
+ (P) -- (P |- O)
+ (P) -- (P -| O);
+ \end{scope}
+\end{tikzpicture}
diff --git a/doc/thesis/figures/tikz/qam-modulator.tex b/doc/thesis/figures/tikz/qam-modulator.tex
index a55ff29..7ebc2c5 100644
--- a/doc/thesis/figures/tikz/qam-modulator.tex
+++ b/doc/thesis/figures/tikz/qam-modulator.tex
@@ -77,51 +77,6 @@
\node[above left] at (si) {\(s_i(t)\)};
\node[below left] at (sq) {\(s_q(t)\)};
- % Draw digital signals
- \begin{scope}[font = \ttfamily\footnotesize, text = blue!70!white]
- \node[above = 1mm of M, xshift = 2mm] {\(\ldots 1100101\)};
- \node[above = 7mm of vmi, xshift = 3mm]
- {\(\overbracket[.8pt]{\,11\ldots 00\,}^{\sqrt{M} \text{ bits}}\)};
- \end{scope}
-
- % Draw analog waveform
- \begin{scope}[font = \ttfamily\tiny]
- \coordinate (O) at ($(mi)+(-2mm,10.5mm)$);
-
- \node[left, red!70!white, anchor = east, text width = 8mm, align = right]
- at ($(O) + (-2mm,0)$) {\(2^{\sqrt{M}}\) levels};
-
- \foreach \y in {-3mm,0,3mm} {
- \draw[gray, densely dotted] (O) ++(-2mm,\y) -- ++(22mm,0);
- }
-
- \draw[thick, draw = red!70!white] (O)
- -- ++(3mm,0) -- ++(0,-3mm) -- ++(3mm,0) -- ++(0,6mm)
- -- ++(3mm,0) -- ++(0,-3mm) -- ++(3mm,0) -- ++(0,-3mm)
- -- ++(3mm,0) -- ++(0,3mm) -- ++(3mm,0);
- \end{scope}
-
- % Draw constellation diagram
- \begin{scope}
- \coordinate (O) at ($(S)+(-7mm,8mm)$);
- \draw[gray, -latex] (O) ++(-2mm,0) -- ++(12mm,0) node[right] {\tiny \(\phi_i\)};
- \draw[gray, -latex] (O) ++(0,-2mm) -- ++(0,12mm) node[above] {\tiny \(\phi_q\)};
-
- \node[
- circle, thick,
- minimum size = 3pt,
- inner sep = 0, outer sep = .8pt,
- draw = gray, fill = red!50!white
- ] (P) at ($(O)+(5mm, 4mm)$) {};
-
- \node[gray, above right] at (P) {\tiny \(s\)};
-
- \draw[gray, densely dotted]
- (P) -- (P |- O)
- (P) -- (P -| O);
- \end{scope}
-
-
% Background elements
\begin{pgfonlayer}{background}
\fill[left color = white, right color = blue!20, draw = white]