\input{preamble.tex}
\graphicspath{{images/5432}, {images}}

\title{5432 DAC Zotino}
\author{M-Labs Limited}
\date{January 2022}
\revision{Revision 2}
\companylogo{\includegraphics[height=0.73in]{artiq_sinara.pdf}}

\begin{document}
\maketitle

\section{Features}

    \begin{itemize}
        \item{32-channel DAC}
        \item{16-bits resolution}
        \item{1 MSPS shared between all channels}
        \item{Output voltage $\pm$10V}
        \item{HD68 connector}
        \item{Can be broken out to BNC/SMA/MCX}
    \end{itemize}

    \section{Applications}

    \begin{itemize}
        \item{Controlling setpoints of PID controllers for laser power stabilization}
        \item{Low-frequency arbitrary waveform generation}
        \item{Driving DC electrodes in ion traps}
    \end{itemize}

\section{General Description}

    The 5432 Zotino is a 4hp EEM module and part of the ARTIQ/Sinara family. It adds digital-analog conversion capabilities to carrier cards such as 1124 Kasli and 1125 Kasli-SoC.

    It provides four groups of eight analog channels each, exposed by one HD68 connector. Each channel supports output voltage from -10 V to 10 V. All channels can be updated simultaneously. Channels can broken out to BNC, SMA or MCX by adding external 5518 BNC-IDC, 5528 SMA-IDC or 5538 MCX-IDC cards.

% Switch to next column
\vfill\break

\begin{figure}[h]
    \centering
    \scalebox{0.88}{
    \begin{circuitikz}[european, scale=0.95, every label/.append style={align=center}]

        % HD68 Connector
        \draw (0, 0) node[muxdemux, muxdemux def={Lh=6.5, Rh=8, w=2, NL=0, NB=0, NR=0}, circuitikz/bipoles/twoport/width=3.2, scale=0.7] (hd68) {HD68};

        % IDC Connectors to IDC cards
        \draw (2.2, 1.2) node[twoportshape, t={\twocm{IDC}{DAC 16-23}}, circuitikz/bipoles/twoport/width=1.8, scale=0.5, rotate=-90] (eem2) {};
        \draw (1.4, 1.2) node[twoportshape, t={\twocm{IDC}{DAC 24-31}}, circuitikz/bipoles/twoport/width=1.8, scale=0.5, rotate=-90] (eem3) {};
        \draw (2.2, -1.2) node[twoportshape, t={\twocm{IDC}{DAC 8-15}}, circuitikz/bipoles/twoport/width=1.8, scale=0.5, rotate=-90] (eem1) {};
        \draw (1.4, -1.2) node[twoportshape, t={\twocm{IDC}{DAC 0-7}}, circuitikz/bipoles/twoport/width=1.8, scale=0.5, rotate=-90] (eem0) {};

        % Op-amp x32
        \draw (3, 0) node[buffer, circuitikz/bipoles/twoport/width=1.2, scale=-0.5] (amp) {};

        % DAC AD5372
        \draw (4.6, 0.2) node[twoportshape, t=\twocm{32-CH}{DAC}, circuitikz/bipoles/twoport/width=1.2, circuitikz/bipoles/twoport/height=1.2, scale=0.7] (dac) {};

        % LVDS Transceivers
        \draw (6.6, 0) node[twoportshape, t=\fourcm{LVDS}{Transceiever}, circuitikz/bipoles/twoport/width=1.8, scale=0.5, rotate=-90] (lvds0) {};
        \draw (6.6, -1.6) node[twoportshape, t=\fourcm{LVDS}{Transceiever}, circuitikz/bipoles/twoport/width=1.8, scale=0.5, rotate=-90] (lvds1) {};

        % Aesthetic EEPROM
        \draw (6.6, 1.6) node[twoportshape, t={EEPROM}, circuitikz/bipoles/twoport/width=1.6, scale=0.5, rotate=-90] (eeprom) {};

        % EEMs from core device / controllers
        \draw (8.2, 0.0) node[twoportshape, t={EEM Port}, circuitikz/bipoles/twoport/width=3.6, scale=0.7, rotate=-90] (eem_in) {};

        % Connect EEM IN to LVDS & EEMPROM
        \draw [latexslim-latexslim] (eeprom.north) -- (7.85, 1.6);
        \draw [latexslim-latexslim] (lvds0.north) -- (7.85, 0);
        \draw [latexslim-latexslim] (lvds1.north) -- (7.85, -1.6);

        % Connect LVDS to DAC
        \draw [latexslim-latexslim] (lvds0.south) -- (5.2, 0);
        \draw [latexslim-latexslim] (lvds1.south) -- (4.6, -1.6) -- (dac.south);

        % Connect DAC to Op-amp, label op-amp width x32
        \draw [-latexslim] (4, 0) -- (amp.west);
        \node [label=below:\tiny{Op-amp x32}] at (3.2, -0.2) {};
        \node [label=below:\tiny{1 per ch.}] at (3.2, -0.45) {};

        % Connect Op-amp to EEM OUT and HD68
        \draw [-latexslim] (amp.east) -- (hd68.east);
        \draw [-latexslim] (2.2, 0) -- (eem2.east);
        \draw [-latexslim] (1.4, 0) -- (eem3.east);
        \draw [-latexslim] (2.2, 0) -- (eem1.west);
        \draw [-latexslim] (1.4, 0) -- (eem0.west);

        % TEC Cooler on top of the DAC
        % To make it more obvious that it is cooling the DAC
        \draw (4.6, 1.45) node[twoportshape, t=\fourcm{TEC}{Cooler}, circuitikz/bipoles/twoport/width=1.2, circuitikz/bipoles/twoport/height=1.2, scale=0.7] (tec_cooler) {};

        % TEC Controller lined up with EEM IN
        \draw (8.2, 3.5) node[twoportshape, t=\fourcm{TEC Controller}{Connector}, circuitikz/bipoles/twoport/width=2.6, scale=0.7, rotate=-90] (tec_conn) {};

        % Thermistor for TEC controller
        \draw (6.6, 3.3) node[thermistorshape, scale=0.7, rotate=-90] (thermistor) {};
        \draw [latexslim-] (7.85, 3.3) -- (6.75, 3.3);

        % Connect the controller to the cooler
        \draw [-latexslim] (7.85, 4.2) -- (4.6, 4.2) -- (tec_cooler.north);

        % Thermal connection between DAC and thermistor
        \draw [densely dotted] (thermistor.south) -- (5.6, 3.3) -- (5.6, 0.5) -- (5.2, 0.5);

    \end{circuitikz}
    }

    \caption{Simplified Block Diagram}
\end{figure}


\begin{figure}[hbt!]
    \centering
    \includegraphics[height=2in]{photo5432.jpg}
    \caption{Zotino card photograph}
\end{figure}


\begin{figure}[hbt!]
    \centering
    \includegraphics[height=2.3in, angle=90]{Zotino_FP.jpg}
    \caption{Zotino front panel}
\end{figure}

% For wide tables, a single column layout is better. It can be switched
% page-by-page.
\onecolumn

\sourcesection{5432 DAC Zotino}{https://github.com/sinara-hw/Zotino/}

\section{Electrical Specifications}

    % \hypersetup{hidelinks}
    % \urlstyle{same}
    These specifications are based on the datasheet of the DAC IC
    (AD5372BCPZ\footnote{\label{dac}\url{https://www.analog.com/media/en/technical-documentation/data-sheets/AD5372\_5373.pdf}}),
    and various information from the Sinara wiki\footnote{\label{zotino_wiki}\url{https://github.com/sinara-hw/Zotino/wiki}}.

    \begin{table}[h]
    \centering
    \begin{threeparttable}
    \caption{Output Specifications}
    \begin{tabularx}{0.8\textwidth}{l | c c c | c | X}
        \thickhline
        \textbf{Parameter} & \textbf{Min.} & \textbf{Typ.} & \textbf{Max.} &
        \textbf{Unit} & \textbf{Conditions} \\
        \hline
        Output voltage & -10 & & 10 & V & \\
        \hline
        Output impedance\repeatfootnote{zotino_wiki} & \multicolumn{4}{c|}{470 $\Omega$ $||$ 2.2nF} & \\
        \hline
        Resolution\repeatfootnote{dac} & & 16 & & bits & \\
        \hline
        3dB bandwidth\repeatfootnote{zotino_wiki} & & 75 & & kHz & \\
        \hline
        Power consumption\repeatfootnote{zotino_wiki} & 3 & & 8.7 & W & \\
        \thickhline
    \end{tabularx}
    \end{threeparttable}
    \end{table}

    The following table records the cross-talk and transient behavior of Zotino\footnote{\label{zotino21}\url{https://github.com/sinara-hw/Zotino/issues/21}}. In terms of output noise, measurements were made after a 15-cm IDC cable, IDC-SMA, 100 cm coax ($\sim$50 pF), and 500 k$\Omega$ $||$ 150 pF\footnote{\label{zotino27}\url{https://github.com/sinara-hw/Zotino/issues/27}}. DAC output during noise measurement was 3.5 V.

    \begin{table}[h]
    \centering
    \begin{threeparttable}
    \caption{Electrical Characteristics}
    \begin{tabularx}{0.8\textwidth}{l | c c c | c | X}
        \thickhline
        \textbf{Parameter} & \textbf{Min.} & \textbf{Typ.} & \textbf{Max.} &
        \textbf{Unit} & \textbf{Conditions / Comments} \\
        \hline
        DC cross-talk\repeatfootnote{zotino21}  & & -116 & & dB & \\
        \hline
        Fall-time\repeatfootnote{zotino21}  & & 18.5 & & $\mu$s & 10\% to 90\% fall-time \\
        & & 25 & & $\mu$s & 1\% to 99\% fall-time \\
        \hline
        Negative overshoot\repeatfootnote{zotino21}  & & 0.5\% & & - & \\
        \hline
        Rise-time\repeatfootnote{zotino21}  & & 30 & & $\mu$s & 1\% to 99\% rise-time \\
        \hline
        Positive overshoot\repeatfootnote{zotino21} & & 0.65\% & & - & \\
        \hline
        Output noise\repeatfootnote{zotino27} & & & & & \\
        \hspace{18mm} @ 100 Hz & & 500 & & nV/rtHz & 6.9 Hz bandwidth \\
        \hspace{18mm} @ 300 Hz & & 300 & & nV/rtHz & 6.9 Hz bandwidth \\
        \hspace{18mm} @ 50 kHz & & 210 & & nV/rtHz & 6.9 kHz bandwidth \\
        \hspace{18mm} @ 1 MHz & & 4.6 & & nV/rtHz & 6.9 kHz bandwidth \\
        \hspace{18mm} $>$ 4 MHz & & & 1 & nV/rtHz & 6.9 kHz bandwidth \\
        \thickhline
    \end{tabularx}
    \end{threeparttable}
    \end{table}

\newpage

    Step response was found by setting the DAC register to 0x0000 (-10V) or 0xFFFF (10V) and observing the waveform\repeatfootnote{zotino21}.

    \begin{figure}[hbt!]
        \centering
        \subfloat[\centering Switching from -10V to +10V]{{
            \includegraphics[height=1.8in]{zotino_step_response_rising.png}
        }}%
        \subfloat[\centering Switching from +10V to -10V]{{
            \includegraphics[height=1.8in]{zotino_step_response_falling.png}
        }}%
        \caption{Step response}%
    \end{figure}

    Far-end crosstalk was measured using the following setup\repeatfootnote{zotino21}:

    \begin{enumerate}
        \item CH1 as aggressor, CH0 as victim
        \item CH0, 2-7 terminated, CH 8-31 open
        \item Aggressor signal from BNC passed through 15cm IDC26, 2m HD68-HD68 SCSI-3 shielded twisted pair, 15cm IDC26, converted back to BNC with adapters between all different cables and connectors.
    \end{enumerate}

    \begin{figure}[hbt!]
        \centering
        \includegraphics[width=3.3in]{zotino_fext.png}
        \caption{Step crosstalk}
    \end{figure}

\section{LEDs}

    5432 DAC Zotino provides eight user LEDs in the front panel. These are directly accessible in ARTIQ RTIO.

\newpage

\sysdescsection 

    5432 DAC Zotino should be entered in the \texttt{peripherals} list of the corresponding core device in the following format:

    \begin{tcolorbox}[colback=white]
        \begin{minted}{json}
            {
                "type": "zotino",
                "ports": [0]
            }
        \end{minted}
    \end{tcolorbox}

    Replace 0 with the EEM port used on the core device. Any port may be used.

\codesection{5432 DAC Zotino}

    \subsection{Setting output voltage}

    The following example initializes the Zotino card, then emits 1.0 V, 2.0 V, 3.0 V and 4.0 V at channels 0, 1, 2, and 3 respectively. Voltages of all 4 channels are updated simultaneously with the use of \texttt{set\char`_dac()}.

    \inputcolorboxminted{firstline=11,lastline=22}{examples/zotino.py}

\newpage

    \subsection{Triangular wave}

    Generates a triangular waveform at 10 Hz, 16 V peak-to-peak. Timing accuracy of the RTIO system can be demonstrated by the precision of the frequency.

    Import \texttt{scipy.signal} and \texttt{numpy} modules to run this example.

    \inputcolorboxminted{firstline=30,lastline=49}{examples/zotino.py}

\ordersection{5432 DAC Zotino}

\finalfootnote

\end{document}
