From adc00a39baff866a3b68b52ffc55a4aae71e61c4 Mon Sep 17 00:00:00 2001
From: Nao Pross <np@0hm.ch>
Date: Sun, 31 Oct 2021 00:20:51 +0200
Subject: Fix math error in QAM, improve QAM modulator diagram, rename (wrong)
 QPSK to PSK

---
 doc/thesis/figures/tikz/psk-constellation.tex  | 23 ++++++++++
 doc/thesis/figures/tikz/qam-modulator.tex      | 58 +++++++++++++++++++++++---
 doc/thesis/figures/tikz/qpsk-constellation.tex | 23 ----------
 3 files changed, 76 insertions(+), 28 deletions(-)
 create mode 100644 doc/thesis/figures/tikz/psk-constellation.tex
 delete mode 100644 doc/thesis/figures/tikz/qpsk-constellation.tex

(limited to 'doc/thesis/figures/tikz')

diff --git a/doc/thesis/figures/tikz/psk-constellation.tex b/doc/thesis/figures/tikz/psk-constellation.tex
new file mode 100644
index 0000000..d927b19
--- /dev/null
+++ b/doc/thesis/figures/tikz/psk-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}
diff --git a/doc/thesis/figures/tikz/qam-modulator.tex b/doc/thesis/figures/tikz/qam-modulator.tex
index 59d989f..a55ff29 100644
--- a/doc/thesis/figures/tikz/qam-modulator.tex
+++ b/doc/thesis/figures/tikz/qam-modulator.tex
@@ -57,7 +57,7 @@
 		\draw (B2Lq.east) -- (Mq.west);
 		\draw (Mq.east) -| (SUM.south);
 
-		\draw (SUM) -- (S);
+		\draw (SUM.east) -- (S);
 
 		\draw (OSC.east) -| (Mi.south);
 		\draw (OSC.west) -- (H.east);
@@ -77,13 +77,61 @@
 	\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]
-			($(B2Li.north) + (0,1)$) coordinate (D) rectangle ($(B2Lq.south) - (3,1)$);
+			($(B2Li.north) + (0,1.1)$) coordinate (D) rectangle ($(B2Lq.south) - (3,1)$);
 		\fill[right color = white, left color = red!20, draw = white]
-			($(B2Li.north) + (0,1)$) coordinate (A) rectangle ($(B2Lq.south) + (9,-1)$);
+			($(B2Li.north) + (0,1.1)$) coordinate (A) rectangle ($(B2Lq.south) + (9,-1)$);
 
-		\node[blue!50, anchor = south east, font = \ttfamily\bfseries, xshift = -4mm] at (D) {\bfseries\ttfamily Digital bits};
-		\node[red!50, anchor = south west, font = \bfseries\ttfamily, xshift = 4mm]  at (A) {Analog waveform};
+		\node[blue!50, anchor = south east, font = \ttfamily\bfseries, xshift = -4mm]
+			at (D) {\bfseries\ttfamily Digital bits};
+		\node[red!50, anchor = south west, font = \bfseries\ttfamily, xshift = 4mm]
+			at (A) {Analog waveform};
 	\end{pgfonlayer}
 \end{circuitikz}
diff --git a/doc/thesis/figures/tikz/qpsk-constellation.tex b/doc/thesis/figures/tikz/qpsk-constellation.tex
deleted file mode 100644
index d927b19..0000000
--- a/doc/thesis/figures/tikz/qpsk-constellation.tex
+++ /dev/null
@@ -1,23 +0,0 @@
-% 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}
-- 
cgit v1.2.1