4410-4412: sysdesc section and SUServo

This commit is contained in:
architeuthis 2025-01-29 19:50:30 +01:00
parent c8c158a422
commit 0f6efadfed

View File

@ -30,12 +30,11 @@
\end{itemize}
\section{General Description}
The 4410/4412 DDS Urukul card is a 4hp EEM module, part of the ARTIQ/Sinara family. It adds frequency generation capabilities to carrier cards such as 1124 Kasli and 1125 Kasli-SoC.
The 4410/4412 DDS Urukul card is a 4hp EEM module, part of the ARTIQ/Sinara family. It adds frequency generation capabilities to carrier cards such as 1124 Kasli and 1125 Kasli-SoC. It can also be combined with 5018 ADC Sampler to form the ARTIQ SU-Servo configuration.
It provides 4 channels of DDS (direct digital synthesis) at 1GS/s. Output frequencies from \textless 1 to \textgreater 400 MHz are supported. The nominal maximum output power of each channel is 10dBm. Each channel can be attenuated from 0 to -31.5 dB by a digital attenuator. RF switches (1ns temporal resolution) on each channel provide 70 dB isolation.
4410 DDS Urukul features AD9910 chips, while 4412 DDS Urukul features AD9912 chips. AD9912 is capable of higher frequency precision (~8 \textmu Hz) than the AD9910 (~0.25 Hz). The ARTIQ SU-Servo configuration is only available for AD9910.
4410 DDS Urukul features AD9910 chips, while 4412 DDS Urukul features AD9912 chips. AD9912 is capable of higher frequency precision ($\sim$8 \textmu Hz) than the AD9910 ($\sim$0.25 Hz). The ARTIQ SU-Servo configuration is only available for AD9910.
% Switch to next column
\vfill\break
@ -545,7 +544,7 @@ Harmonic content of the DDS signals from 4410 DDS Urukul is tabulated below\foot
\newpage
The RMS voltage of a 4410 DDS Urukul channel at different amplitude scale factors is measured below. The DDS channel is directly connected to an oscilloscope with a 50\textOmega~termination. The reported values are obtained from the oscilloscope.
The RMS voltage of a 4410 DDS Urukul channel at different amplitude scale factors is measured below. The DDS channel is directly connected to an oscilloscope with a 50\textOmega$\sim$termination. The reported values are obtained from the oscilloscope.
\begin{multicols}{2}
\begin{figure}[H]
@ -829,22 +828,44 @@ The measured RMS voltage divided by the full scale ideal RMS voltage (i.e. $V_\m
\section{Urukul Single-/Double-EEM Modes}
4410/4412 DDS Urukul cards can operate with either a single or double EEM connections. When only EEM0 is connected, the card will act in single-EEM mode; when both EEM0 and EEM1 are connected, the card will act in double-EEM mode. 2-EEM mode when both EEM0 \& EEM1 are connected. Double-EEM mode provides these additional features in comparison to single-EEM mode:
4410/4412 DDS Urukul cards can operate with either a single or double EEM connections. When only EEM0 is connected, the card will act in single-EEM mode; when both EEM0 and EEM1 are connected, the card will act in double-EEM mode. Double-EEM mode provides these additional features in comparison to single-EEM mode:
\begin{itemize}
\item \textbf{1 ns temporal resolution RF switches} \\
Without EEM1, the only way to access the switches is through the CPLD, using SPI. \\
With EEM1, RF switches can be controlled as a TTL output through the LVDS transceiver. 1 ns temporal resolution can then be achieved using the ARTIQ RTIO system.
Without EEM1, the only way to access the switches is through the CPLD, using SPI. With EEM1, RF switches can be controlled as a TTL output through the LVDS transceiver. 1 ns temporal resolution can then be achieved using the ARTIQ RTIO system.
\item \textbf{SU-Servo (4410 DDS Urukul feature)} \\
SU-Servo requires both EEM0 \& EEM1 to allow the control of multiple DDS channels simultaneously using the QSPI interface.
\end{itemize}
\sysdescsection
4410/4412 Urukul should be entered in the peripherals list of the corresponding core device in the following format:
\begin{tcolorbox}[colback=white]
\begin{minted}{json}
{
"type": "urukul",
"dds": "ad9910", // or "ad9912", as appropriate
"ports": [0, 1], // second port is optional
"synchronization": true, // or false, for AD9910 only
"clk_sel": 2, // select 1 to 3 for clock source
"pll_en": 0 // PLL bypass, for higher external frequencies
"refclk": 125e6, // for external clock signal
}
\end{minted}
\end{tcolorbox}
Replace 0 and 1 with the EEM port numbers used on the core device. Any ports can be used. For single-EEM mode, simply specify only one port. The \texttt{synchronization} field is boolean, false by default, and only applies to AD9910. The \texttt{pll\_en} field may be specified \texttt{0} or \texttt{1} and is \texttt{1} by default.
\newpage
\codesection{4410/4412 DDS Urukul}
For details of AD9910 capabilities, operation modes, profiles, signals, etc., see also the corresponding datasheet, e.g. \url{https://www.analog.com/media/en/technical-documentation/data-sheets/AD9910.pdf}.
\subsection{10 MHz sinusoidal wave}
Generates a 10MHz sinusoid from RF0 with full scale amplitude, attenuated by 6 dB. Both the CPLD and the DDS channels should be initialized. By default, AD9910 single-tone profiles are programmed to profile 7.
@ -873,8 +894,7 @@ The measured RMS voltage divided by the full scale ideal RMS voltage (i.e. $V_\m
\item No signal for 3 microseconds.
\item Go back to item 1.
\end{enumerate}
The expected waveform 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.
The expected waveform is plotted on the following figure. Note that phase of the RF pulses may drift gradually. Urukul was operated with 50$\Omega$ termination for this waveform.
\begin{tikzpicture}[
declare function={
@ -912,8 +932,7 @@ The measured RMS voltage divided by the full scale ideal RMS voltage (i.e. $V_\m
\inputcolorboxminted{firstline=95,lastline=98}{examples/dds.py}
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.
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 50$\Omega$ termination for this waveform.
\begin{tikzpicture}[
declare function={
@ -947,7 +966,6 @@ The measured RMS voltage divided by the full scale ideal RMS voltage (i.e. $V_\m
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}
@ -955,6 +973,7 @@ The measured RMS voltage divided by the full scale ideal RMS voltage (i.e. $V_\m
\newpage
\subsection{RAM synchronization (AD9910 only)}
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}. For example, set phase to 0 for the channels (\texttt{phase=0.0}):
\inputcolorboxminted{firstline=116,lastline=116}{examples/dds.py}
@ -963,66 +982,10 @@ The measured RMS voltage divided by the full scale ideal RMS voltage (i.e. $V_\m
\inputcolorboxminted{firstline=122,lastline=134}{examples/dds.py}
Two phase-coherent RF signal with the same waveform as the previous figure (from either RAM examples) should be generated.
Two phase-coherent RF signals with the same waveform as the previous figure (from either RAM examples) should be generated.
\subsection{Voltage-controlled DDS amplitude (SU-Servo only)}
The SU-Servo feature can be enabled by integrating the 4410 DDS Urukul with a 5108 Sampler. Amplitude of the DDS output can be controlled by the ADC input of the Sampler through PI control, characterised by the following transfer function:
\[H(s)=k_p+\frac{k_i}{s+\frac{k_i}{g}}\]
In the following example, the amplitude of DDS is proportional to the ADC input from Sampler. First, initialize the RTIO, SU-Servo and its channel. Note that the programmable gain of the Sampler is $10^0=1$ and the input range is [-10V, 10V].
\inputcolorboxminted{firstline=10,lastline=17}{examples/suservo.py}
Next, setup the PI control as an IIR filter. It has -1 proportional gain $k_p$ and no integrator gain $k_i$.
\inputcolorboxminted{firstline=18,lastline=25}{examples/suservo.py}
Then, configure the DDS frequency to 10 MHz with 3V input offset.
When input voltage $\geq$ offset voltage, the DDS output amplitude is 0.
\inputcolorboxminted{firstline=26,lastline=30}{examples/suservo.py}
SU-Servo encodes the ADC voltage in a linear scale [-1, 1]. Therefore, 3V is converted to 0.3. Note that the ASF of all DDS channels are capped at 1.0 and the amplitude clips when ADC input $\leq -7V$ with the above IIR filter.
Finally, enable the SU-Servo channel with the IIR filter programmed beforehand:
\inputcolorboxminted{firstline=32,lastline=33}{examples/suservo.py}
A 10 MHz DDS signal is generated from the example above, with amplitude controllable by ADC. The RMS voltage of the DDS channel against the ADC voltage is plotted. The DDS channel is terminated with 50\textOmega.
\begin{center}
\begin{tikzpicture}[
declare function={
func(\x)= and(\x>=-10, \x<-7) * (160) +
and(\x>=-7, \x<3) * (16*(3-x)) +
and(\x>=3, \x<10) * (0);
}
]
\begin{axis}[
axis x line=middle, axis y line=middle,
every axis x label/.style={
at={(axis description cs:0.5,-0.1)},
anchor=north,
},
every axis y label/.style={
at={(ticklabel* cs:1.05)},
anchor=south,
},
minor x tick num=3,
grid=both,
height=8cm,
width=12cm,
ymin=-5, ymax=180, ytick={0,16,...,160}, ylabel=DDS RMS Voltage ($mV_{rms}$),
xmin=-10, xmax=10, xtick={-10,-8,...,10}, xlabel=Sampler Voltage ($V$),
]
\addplot[very thick, blue, samples=21, domain=-10:10]{func(x)};
\end{axis}
\end{tikzpicture}
\end{center}
DDS signal should be attenuated. High output power affects the linearity due to the 1 dB compression point of the amplifier at 13 dBm output power. 15 dB attenuation at the digital attenuator was applied in this example.
% Direct input to avoid issues with minted
\input{shared/suservo.tex}
\ordersection{4410/4412 DDS Urukul}