4410-4412/RAM: add amplitude ramp example
This commit is contained in:
parent
4b3f0c5612
commit
9251da4ce0
|
@ -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}.
|
||||
|
|
Loading…
Reference in New Issue