From 9251da4ce0074a2979a0c6a79447218ffcc4414a Mon Sep 17 00:00:00 2001 From: occheung Date: Wed, 22 Dec 2021 17:16:21 +0800 Subject: [PATCH] 4410-4412/RAM: add amplitude ramp example --- 4410-4412.tex | 58 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/4410-4412.tex b/4410-4412.tex index e9f4c1a..83baeba 100644 --- a/4410-4412.tex +++ b/4410-4412.tex @@ -566,11 +566,59 @@ Urukul was operated with a 50$\Omega$ termination to produce the waveform. \end{axis} \end{tikzpicture} -\begin{figure}[h] - \centering - \includegraphics[width=\textwidth]{ad9910_amp_mod.png} - \caption{Expected waveform from the RAM modulation example} -\end{figure} +\subsection{Simple Amplitude Ramp (AD9910 Only)} +An amplitude ramp of an RF signal can be generated by modifying the \texttt{self.amp} array in the previous example. +\begin{minted}{python} +def prepare(self): + # Reversed Order + self.amp = [1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0.0] + self.asf_ram = [0] * len(self.amp) +\end{minted} + +The generated RF output has an incrementing amplitude scale factor (ASF), increasing by 0.1 at every microsecond. +Once the ASF reaches 1.0, it drops back to 0.0 at the next microsecond. +The expected waveform over 1 cycle is plotted on the following figure. +Note that phase of the RF pulses may drift gradually. +Urukul was operated with a 50$\Omega$ termination to produce the waveform. + +\begin{tikzpicture}[ + declare function={ + func(\x)= and(\x>=0, \x<1) * (0) + + and(\x>=1, \x<2) * (0.05*cos(deg(10*pi*\x))) + + and(\x>=2, \x<3) * (0.1*cos(deg(10*pi*\x))) + + and(\x>=3, \x<4) * (0.15*cos(deg(10*pi*\x))) + + and(\x>=4, \x<5) * (0.2*cos(deg(10*pi*\x))) + + and(\x>=5, \x<6) * (0.25*cos(deg(10*pi*\x))) + + and(\x>=6, \x<7) * (0.3*cos(deg(10*pi*\x))) + + and(\x>=7, \x<8) * (0.35*cos(deg(10*pi*\x))) + + and(\x>=8, \x<9) * (0.4*cos(deg(10*pi*\x))) + + and(\x>=9, \x<10) * (0.45*cos(deg(10*pi*\x))) + + and(\x>=10, \x<11) * (0.5*cos(deg(10*pi*\x))); + } +] +\begin{axis}[ + axis x line=middle, axis y line=middle, + every axis x label/.style={ + at={(ticklabel* cs:1.05)}, + anchor=west, + }, + every axis y label/.style={ + at={(ticklabel* cs:1.05)}, + anchor=south, + }, + minor tick num=4, + grid=both, + height=8cm, + width=16cm, + ymin=-0.7, ymax=0.7, ytick={-0.5,...,0,...,0.5}, ylabel=Voltage ($V$), + xmin=0, xmax=11.5, xtick={0,...,11}, xlabel=Time ($\mu s$), +] + +\addplot[blue, samples=1500, domain=0:11]{func(x)}; +\end{axis} +\end{tikzpicture} + +\newpage Multiple RAM channels can also be synchronized. Similar to the 10 MHz single-tone RF signals, specify \texttt{phase} when calling \texttt{dds.set()} in \texttt{configure\char`_ram\char`_mode}.