Page MenuHomec4science

4_oversampling.tex
No OneTemporary

File Metadata

Created
Thu, Mar 13, 00:49

4_oversampling.tex

\documentclass[aspectratio=169]{beamer}
\def\stylepath{../styles}
\usepackage{\stylepath/com303}
\begin{document}
\begin{frame} \frametitle{Oversampling}
\begin{itemize}
\item oversampled D/A
\begin{itemize}
\item use cheaper hardware for interpolation
\end{itemize}
\vspace{2em}
\item oversampled A/D
\begin{itemize}
\item reduce quantization error
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame} \frametitle{From Discrete to Continuous Time}
\[ x[n] \longrightarrow x(t) \]
\setbeamercovered{invisible}
\begin{table}
\centering
\begin{tabular}{>{\centering\arraybackslash}m{0.45\paperwidth}m{0.001\paperwidth}>{\centering\arraybackslash}m{0.5\paperwidth}}
{\color{darkred} ideally} & & {\color{darkred} in practice} \\ \\
{$\displaystyle x_c(t) = \sum_{n = -\infty}^{\infty}x[n]\,\sinc\left(\frac{t - nT_s}{T_s}\right)$} & &
{$\displaystyle x_c(t) = \sum_{n = -\infty}^{\infty}x[n]\,i\left(\frac{t - nT_s}{T_s}\right)$} \\ \\
{$\displaystyle X_c(f) = \frac{1}{F_s}X(e^{j2\pi f/F_s})\rect\left(\frac{f}{F_s}\right)$} & &
{$\displaystyle X_c(f) = \frac{1}{F_s}\,X(e^{j2\pi f/F_s})\, I\left(\frac{f}{F_s}\right)$}
\end{tabular}
\end{table}
\end{frame}
\begin{frame} \frametitle{Practical interpolation}
\centering
The cheapest and most common interpolator is the zero-order hold:
\[
i_0(t) = \rect(t)
\]
\[
I_0(f) = \sinc(f)
\]
\vspace{2em}
CT spectrum of interpolated signal:
\[
X(f) = \frac{1}{F_s}\,X(e^{j2\pi f/F_s})\, \sinc\left(\frac{f}{F_s}\right)
\]
\end{frame}
\begin{frame} \frametitle{ZOH interpolation}
\begin{center}
\begin{figure}
\only<1-|handout:1->{
\begin{dspPlot}[height=2.1cm,xtype=freq,yticks=1,ylabel={$X(e^{j\omega})$}]{-1,1}{0,1.2}
\moocStyle \psset{linecolor=blue!80}
\dspFunc{x \dspPorkpie{0}{0.95}}
\end{dspPlot}}
\only<2-|handout:2->{
\begin{dspPlot}[height=2.1cm,xtype=freq,xticks=custom,yticks=1,]{-6,6}{0,1.2}
\moocStyle
\dspCustomTicks[axis=x]{0 0 1 $F_s/2$ 2 $F_s$ 4 $2F_s$ 6 $3F_s$}
\only<2-3|handout:2-3>{\dspFunc{x \dspPeriodize \dspPorkpie{0}{0.95}} \dspText(0,-.6){$X(e^{j2\pi f/F_s})$} }
\only<3|handout:3>{\dspFunc[linecolor=green!80,linestyle=dashed]{x \dspSinc{0}{2} abs } }
\only<4-|handout:4->{\dspFunc{x \dspPeriodize \dspPorkpie{0}{0.95} x \dspSinc{0}{2} abs mul} \dspText(0,-.6){$X(f) \neq X_c(f)$} }
\end{dspPlot}}
\end{figure}
\end{center}
\end{frame}
\begin{frame} \frametitle{ZOH interpolation}
\begin{itemize}
\item we need to remove the out-of-band leakage
\item we need to undo the in-band distortion in the analog domain
\item i.e. we need an analog filter with frequency response $H_c(f) = \rect(f/F_s)/\sinc(f/F_s)$
\end{itemize}
\centering
\vspace{1em}
\begin{dspPlot}[height=2.1cm,xtype=freq,xticks=custom,yticks=1,]{-6,6}{0,1.2}
\moocStyle
\dspCustomTicks[axis=x]{0 0 1 $F_s/2$ 2 $F_s$ 4 $2F_s$ 6 $3F_s$}
\dspFunc{x \dspPeriodize \dspPorkpie{0}{0.95} x \dspSinc{0}{2} abs mul}
\dspFunc[linecolor=orange!80,linestyle=dashed]{x abs 1 ge {0} {1 x \dspSinc{0}{2} abs div 0.7 mul} ifelse}
\end{dspPlot}
such an analog filter is exceedingly complicated and costly
\end{frame}
\begin{frame} \frametitle{Oversampled D/A}
\center
\begin{dspBlocks}{1.2}{0.3}
$x[n]$~ & \BDupsmp{$N$} & \BDfilter{$H(e^{j\omega})$} & \BDfilter{$I_0(f)$} & $x(t)$ \\
& & & $F_o = NF_s$
\end{dspBlocks}
\psset{linewidth=1pt}
\ncline{-}{1,1}{1,2} \ncline{->}{1,2}{1,3}
\ncline{->}{1,3}{1,4}\taput{$x_o[n]$}\ncline{->}{1,4}{1,5}
\ncline{->}{1,5}{1,6}
\vspace{2em}
\begin{itemize}
\item $H(e^{j\omega}) = \displaystyle N\,\frac{\rect\left(\frac{\omega}{2\pi/N}\right)}{\sinc\left(\frac{\omega}{2\pi}\right)}$
\item rect is the lowpass for the upsampler
\item $1/\sinc$ pre-compensates for the ZOH's in-band distortion
\item filter is discrete-time, so ``easy'' and cheap
\end{itemize}
\end{frame}
\begin{frame} \frametitle{Oversampled D/A ($N=2$)}
\begin{center}
\begin{figure}
\only<1-|handout:1->{
\begin{dspPlot}[height=2.1cm,xtype=freq,yticks=1,ylabel=%
\only<1|handout:1>{{$X(e^{j\omega})$}}%
\only<2-3|handout:2-3>{{$X_{2U}(e^{j\omega})$}}%
\only<4|handout:4>{{$X_o(e^{j\omega})$}}%
]{-1,1}{0,1.2}
\moocStyle \psset{linecolor=blue!80}
\only<1|handout:1>{\dspFunc{x \dspPorkpie{0}{0.95}}}
\only<2-3|handout:2-3>{
\dspFunc[linecolor=lightgray]{x 2 mul \dspPeriodize \dspPorkpie{0}{0.95}}
\dspFunc{x 2 mul \dspPorkpie{0}{0.95}}}
\only<3|handout:3>{\dspFunc[linecolor=green!80,linestyle=dashed]{x abs 0.5 ge {0} {1 x \dspSinc{0}{1} abs div 0.7 mul} ifelse} }
\only<4-|handout:4->{\dspFunc{x abs 0.5 ge {0} {x 2 mul \dspPorkpie{0}{0.95} x \dspSinc{0}{1} abs div } ifelse} }
\end{dspPlot}}
\end{figure}
\end{center}
\end{frame}
\begin{frame} \frametitle{Oversampled D/A}
interpolate $x_o[n]$ with $F_o = NF_s$:
\begin{align*}
X_o(f) &= \frac{1}{F_o}\,X_o(e^{j2\pi f / F_o})\, I_0\left(\frac{f}{F_o}\right) \\ \pause
&= \frac{1}{F_o}\, \left[ X(e^{j\omega N})\, H(e^{j\omega}) \right]_{\omega = 2\pi f/F_o}\, \sinc\left(\frac{f}{F_o}\right) \\ \pause
&= \frac{N}{F_o}\, \left[ X(e^{j\omega N})\, \rect\left(\frac{\omega N}{2\pi}\right)/\sinc\left(\frac{\omega}{2\pi}\right) \right]_{\omega = 2\pi f/F_o}\, \sinc\left(\frac{f}{F_o}\right) \\ \pause
&= \frac{1}{F_s}\, X(e^{j2\pi f/F_s})\, \rect\left(\frac{f}{F_s}\right) / \sinc(f/F_o) \cdot \sinc\left(\frac{f}{F_o}\right) \\ \pause
&= X_c(f) \quad \mbox{for $|f| < F_s/2$}
\end{align*}
\end{frame}
\begin{frame} \frametitle{Oversampled D/A, using a ZOH ($N=2$)}
\begin{center}
\begin{figure}
\only<1->{
\begin{dspPlot}[height=2.1cm,xtype=freq,yticks=1,ylabel=%
\only<1-2|handout:1-2>{{$X_{2\uparrow}(e^{j\omega})$}}%
\only<3-|handout:3->{{$X_{o}(e^{j\omega})$}}%
]{-1,1}{0,1.2}
\smallStems \psset{linecolor=blue}
\only<1-2|handout:1-2>{\dspFunc[linecolor=lightgray]{x 2 mul \dspPeriodize \dspPorkpie{0}{0.95}} \dspFunc{x 2 mul \dspPorkpie{0}{0.95}}}
\only<2|handout:2>{\dspFunc[linecolor=darkgreen!60,linestyle=dashed]{x abs 0.5 ge {0} {1 x \dspSinc{0}{1} abs div 0.7 mul} ifelse} }
\only<3-|handout:3->{\dspFunc{x abs 0.5 ge {0} {x 2 mul \dspPorkpie{0}{0.95} x \dspSinc{0}{1} abs div } ifelse} }
\end{dspPlot}}
\only<4-|handout:4->{
\begin{dspPlot}[height=2.1cm,xtype=freq,xticks=custom,yticks=1,ylabel={$X\only<4|handout4>{_o}(f)$}]{-6,6}{0,1.2}
\smallStems \moocStyle
\dspCustomTicks[axis=x]{0 0 1 $F_s/2$ 2 $F_o/2$ 4 $F_o$}
\only<4|handout:4>{
\dspFunc{x \dspPeriod{2} \dspPorkpie{0}{0.95}}
\dspFunc[linecolor=green,linestyle=dashed]{x \dspSinc{0}{4} abs } }
\only<5-|handout:5->{\dspFunc{x \dspPeriod{2} \dspPorkpie{0}{0.95} x \dspSinc{0}{4} abs mul} }
\end{dspPlot}}
\end{figure}
\end{center}
\end{frame}
\begin{frame} \frametitle{ZOH interpolation}
\centering
we still have some out-of-band leakage but, because of oversampling, they can be eliminated with a cheap analog lowpass with a wide transition band
\vspace{1em}
\begin{dspPlot}[height=2.1cm,xtype=freq,xticks=custom,yticks=1,ylabel={$X\only<3|handout3>{_c}(f)$}]{-6,6}{0,1.2}
\smallStems \moocStyle
\dspCustomTicks[axis=x]{0 0 1 $F_s/2$ 2 $F_o/2$ 4 $F_o$}
\only<1-2|handout:1-2>{\dspFunc{x \dspPeriod{2} \dspPorkpie{0}{0.95} x \dspSinc{0}{4} abs mul} }
\only<2|handout:2>{\dspFunc[linecolor=orange,linestyle=dashed]{x 0.8 mul 4 exp 1 add 1 exch div} }
\only<3|handout:3>{\dspFunc{x \dspPeriod{2} \dspPorkpie{0}{0.95} x \dspSinc{0}{4} abs mul x 0.8 mul 4 exp 1 add 1 exch div mul} }
\end{dspPlot}
\end{frame}
\begin{frame} \frametitle{Oversampled D/A}\
key points:
\begin{itemize}
\item we can pre-compensate the in-band distortion in the digital domain
\item we can interpolate with a cheap ZOH
\item the higher the upsampling, the cheaper the analog lowpass needed to eliminate out-of-band distortion
\item only price: higher D/A rate
\end{itemize}
\end{frame}
\end{document}

Event Timeline