From d9e0d7c6e250e95def7be1642c35419838c0ac23 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Sun, 14 Nov 2021 22:23:04 +0100 Subject: Discrete time model as tapped delay line --- doc/thesis/Makefile | 3 +- doc/thesis/chapters/theory.tex | 18 ++++++-- doc/thesis/figures/tikz/tapped-delay-line.tex | 62 +++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 doc/thesis/figures/tikz/tapped-delay-line.tex (limited to 'doc/thesis') diff --git a/doc/thesis/Makefile b/doc/thesis/Makefile index 8933fe7..c207a17 100644 --- a/doc/thesis/Makefile +++ b/doc/thesis/Makefile @@ -21,7 +21,8 @@ SOURCES := \ figures/tikz/qam-constellation.tex \ figures/tikz/multipath-sketch.tex \ figures/tikz/multipath-impulse-response.tex \ - figures/tikz/multipath-frequency-response-plots.tex + figures/tikz/multipath-frequency-response-plots.tex \ + figures/tikz/tapped-delay-line.tex DATA := figures/data/multipath_frequency_response.dat diff --git a/doc/thesis/chapters/theory.tex b/doc/thesis/chapters/theory.tex index 1a0945b..9d61b60 100644 --- a/doc/thesis/chapters/theory.tex +++ b/doc/thesis/chapters/theory.tex @@ -248,7 +248,16 @@ This result is very similar to the continuous time model described by \eqref{eqn \end{equation} is different from \eqref{eqn:multipath-impulse-response} consider again the plot of \(h(\tau,t)\) in \figref{fig:multipath-impulse-response}. The plot of \(h_l(m)\) would have discrete axes with \(m\) replacing \(t\) and \(l\) instead of \(\tau\), and because of the finite bandwidth in the \(l\) axis instead of Dirac deltas there would be superposed sinc functions. -From another perspective equation \eqref{eqn:discrete-multipath-impulse-response} is a simple tapped delay line FIR filter, which is very easy to implement. In fact multipath channels can be easily simulated with just a few lines of code. For example \figref{fig:multipath-frequency-response} is implemented in four lines of Python as shown in listing \ref{lst:two-tap-fir}. +\begin{figure} + \centering + \input{figures/tikz/tapped-delay-line} + \caption{ + Fading channel as a tapped delay line. + \label{fig:tapped-delay-line} + } +\end{figure} + +From a signal processing perspective \eqref{eqn:discrete-multipath-impulse-response} can be interpreted as a simple tapped delay line, schematically drawn in \figref{fig:tapped-delay-line}, which confirms that the presented mathematical model is indeed a FIR filter. Simple multipath channels can be simulated with just a few lines of code, for example the data for \figref{fig:multipath-frequency-response-plots} is generated in just four lines of Python shown in listing \ref{lst:two-tap-fir}. The difficulty of fading channels in practice lies in the estimation of the values for the constantly changing parmeters \(c_k(t)\) and \(\tau_k(t)\). \begin{lstlisting}[language=python, captionpos=b, caption={ Simulation of a multipath channel using a 2 tap FIR filter. @@ -262,11 +271,14 @@ f = np.logspace(5, 8, num=320) multipath = tap(.8, 500e-9, f) + tap(.4, 300e-9, f) \end{lstlisting} -\skelpar[3]{Discrete frequency response. Discuss bins, etc.} +\subsection{Difficulties caused by discrete time} + +\skelpar{Not sampling at peaks of sincs.} +\skelpar{Discrete frequency response. Discuss bins, etc.} \subsection{Statistical model} -\skelpar[5]{Advantages of statistical model over geometric model.} +Because as mentioned earlier it is difficult to estimate the time-dependent parameters of \(h_l(t)\) in many cases it is easier to model the components of the CIR as stochastic processes, thus greatly reducing the number of parameters. This is especially effective for channels that are constantly changing, because by the central limit theorem the cumulative effect of many small changes tend to a normal statistical distribution. \begin{figure} \centering diff --git a/doc/thesis/figures/tikz/tapped-delay-line.tex b/doc/thesis/figures/tikz/tapped-delay-line.tex new file mode 100644 index 0000000..ef0095d --- /dev/null +++ b/doc/thesis/figures/tikz/tapped-delay-line.tex @@ -0,0 +1,62 @@ +% vim: set ts=2 sw=2 noet: +\begin{tikzpicture}[ + dot/.style = { + circle, + fill = black, draw = black, + minimum size = 1.5mm, + outer sep = 0, inner sep = 0, + }, + block/.style = { + rectangle, draw, thick, + black, fill = white, + minimum height = 8mm, minimum width = 8mm, + }, + prod/.style = { + circle, draw, thick, + black, fill = white, + minimum size = 6mm, + inner sep = 0, outer sep = 0, + }, + sum/.style = { + circle, draw, thick, + black, fill = white, + minimum size = 4mm, + }, + ] + + \matrix[column sep = 5mm, row sep = 3mm] { + \node[block] (B0) {\(z^{-1}\)}; & \node[dot] (D0) {}; & + \node[block] (B1) {\(z^{-1}\)}; & \node[dot] (D1) {}; & + \node[block] (B2) {\(z^{-1}\)}; & \node[dot] (D2) {}; & \node (dots) {\ldots}; & + \node[block] (Bk) {\(z^{-1}\)}; & \node[dot] (Dk) {}; + \\ + & \node[prod] (P0) {\(\times\)}; & + & \node[prod] (P1) {\(\times\)}; & + & \node[prod] (P2) {\(\times\)}; & & + & \node[prod] (Pk) {\(\times\)}; & + \\ + & & & & \node[sum] (S) {\(\Sigma\)}; \\ + }; + + \draw[thick] + % tapped delayed line + (B0.west) -- ++(-5mm,0) node[left] {\(s\)} + (B0.east) -- (D0) -- (B1.west) + (B1.east) -- (D1) -- (B2.west) + (B2.east) -- (D2) -- (dots) -- (Bk.west) + (Bk.east) -- (Dk) -- ++(5mm,0) + % taps asd sum + (D0) -- (P0) |- (S) + (D1) -- (P1) -- ++(0,-6mm) -- (S) + (D2) -- (P2) -- ++(0,-6mm) -- (S) + (Dk) -- (Pk) |- (S) + % product weights + (P0.west) -- ++(-3mm,0) node[left] {\(h_1\)} + (P1.west) -- ++(-3mm,0) node[left] {\(h_2\)} + (P2.west) -- ++(-3mm,0) node[left] {\(h_3\)} + (Pk.west) -- ++(-3mm,0) node[left] {\(h_l\)} + % result + (S.south) |- ++(1cm,-3mm) node[right] {\(r\)} + ; + +\end{tikzpicture} -- cgit v1.2.1