5632: init
This commit is contained in:
parent
035e04f673
commit
0ab9d37c20
163
5632.tex
Normal file
163
5632.tex
Normal file
@ -0,0 +1,163 @@
|
||||
\input{preamble.tex}
|
||||
\input{shared/dactino.tex}
|
||||
\graphicspath{{images/5632}, {images}}
|
||||
|
||||
\title{5632 DAC Fastino}
|
||||
\author{M-Labs Limited}
|
||||
\date{January 2025}
|
||||
\revision{Revision 1}
|
||||
\companylogo{\includegraphics[height=0.73in]{artiq_sinara.pdf}}
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
\section{Features}
|
||||
|
||||
\begin{itemize}
|
||||
\item{32-channel fast DAC}
|
||||
\item{16-bit resolution}
|
||||
\item{2.55 MSPS per channel}
|
||||
\item{Output voltage $\pm$10V}
|
||||
\item{Gateware CIC interpolation}
|
||||
\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}
|
||||
|
||||
\generaldescription{5632 DAC Fastino}{slower 5432 DAC Zotino}
|
||||
|
||||
% Switch to next column
|
||||
\vfill\break
|
||||
|
||||
%\begin{figure}[h]
|
||||
% \centering
|
||||
% \scalebox{1.15}{
|
||||
% \begin{circuitikz}[european, every label/.append style={align=center}]
|
||||
% \begin{scope}[]
|
||||
% % if applicable
|
||||
% \end{scope}
|
||||
% \end{circuitikz}
|
||||
% }
|
||||
|
||||
% \caption{Simplified Block Diagram}
|
||||
%\end{figure}
|
||||
|
||||
\begin{figure}[hbt!]
|
||||
\centering
|
||||
\includegraphics[height=2.25in]{photo5632.jpg}
|
||||
\caption{Fastino card}
|
||||
\includegraphics[height=3in, angle=90]{fp5632.pdf}
|
||||
\caption{Fastino front panel}
|
||||
\end{figure}
|
||||
|
||||
% For wide tables, a single column layout is better. It can be switched
|
||||
% page-by-page.
|
||||
\onecolumn
|
||||
|
||||
\sourcesection{5632 DAC Fastino}{https://github.com/sinara-hw/Fastino}
|
||||
|
||||
\section{Electrical Specifications}
|
||||
|
||||
% \hypersetup{hidelinks}
|
||||
% \urlstyle{same}
|
||||
These specifications are based on the datasheet of the DAC IC
|
||||
(AD5542ABCPZ\footnote{\label{dac}\url{https://www.analog.com/media/en/technical-documentation/data-sheets/AD5512A_5542A.pdf}}),
|
||||
and various information from the Sinara wiki\footnote{\label{fastino_wiki}\url{https://github.com/sinara-hw/Fastino/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 is this accurate here?
|
||||
% Output impedance\repeatfootnote{zotino_wiki} & \multicolumn{4}{c|}{470 $\Omega$ $||$ 2.2nF} & \\
|
||||
\hline
|
||||
Resolution\repeatfootnote{dac} & & 16 & & bits & \\
|
||||
\hline
|
||||
Settling time\repeatfootnote{dac} & & 1 & & \textmu s & \\
|
||||
\hline
|
||||
Temperature coefficient\repeatfootnote{fastino_wiki} & & & 7 & ppm & \\
|
||||
%\hline is this accurate here?
|
||||
%3dB bandwidth\repeatfootnote{zotino_wiki} & & 75 & & kHz & \\
|
||||
\thickhline
|
||||
\end{tabularx}
|
||||
\end{threeparttable}
|
||||
\end{table}
|
||||
|
||||
The following table records cross-talk and transient behavior by Fastino, collected in various Sinara issues, see spur analysis\footnote{\label{fastino56}\url{https://github.com/sinara-hw/Fastino/issues/56}}, cross-talk\footnote{\url{https://github.com/sinara-hw/Fastino/issues/85}}, and noise summary\footnote{\url{https://github.com/sinara-hw/Fastino/issues/51}}. DAC output during output noise measurement was 6.875 V, updating continuously, channel 27 used for recording.
|
||||
|
||||
\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 & & & -65 & dBmV & \\
|
||||
\hline
|
||||
% Is this the same measurement as 'Output noise'?
|
||||
Broadband noise (??) & & & & & \\
|
||||
\hspace{18mm} @ 100 kHz & & 14 & & nV/rtHz & \\
|
||||
\hspace{18mm} @ 1 MHz & & 56 & & nV/rtHz & \\
|
||||
\hline
|
||||
Output noise & & & & & \\
|
||||
\hspace{18mm} @ 500 kHz & & 60 & 80 & nV/rtHz & \\
|
||||
\hspace{18mm} @ 2 MHz & & & 12 & nV/rtHz & \\
|
||||
\hspace{18mm} @ 10 MHz & & & 4 & nV/rtHz & \\
|
||||
\hline
|
||||
Spur-free range & 0.1 & & 5 & MHz & Correctly configured\repeatfootnote{fastino56} \\
|
||||
Digital update spurs & & 560 & & nVrm & @ 2.55MHz \\
|
||||
\thickhline
|
||||
\end{tabularx}
|
||||
\end{threeparttable}
|
||||
\end{table}
|
||||
|
||||
% Is it worth recounting spur summary issue here?
|
||||
|
||||
\section{LEDs}
|
||||
|
||||
5632 DAC Fastino provides eight user LEDs in the front panel. These are directly accessible in the ARTIQ RTIO. Four additional LEDs indicate, respectively, power good (\texttt{PG}), ??? (\texttt{FD}), overtemperature (\texttt{OT}), and gateware or initialization error (\texttt{ERR}).
|
||||
|
||||
\sysdescsection
|
||||
|
||||
5632 DAC Fastino 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": "fastino",
|
||||
"ports": [0],
|
||||
"log2_width": 0 // select 0 to 5, default is 0
|
||||
}
|
||||
\end{minted}
|
||||
\end{tcolorbox}
|
||||
|
||||
Replace 0 with the EEM port used on the core device. Any port may be used on the core device side. Despite providing two EEM ports, Fastino only requires one of two under ARTIQ control. This should always be \texttt{EEM0}. If connected, \texttt{EEM1} will be ignored.
|
||||
|
||||
The \texttt{log2\_width} field accepts a number from 0 to 5 inclusive and represents (in powers of two) the number of DAC channels packed into a single RTIO write (1 to 32). This allows and defines the use of \texttt{set\_group()} functions rather than \texttt{set\_dac()} as in examples given below.
|
||||
|
||||
\codesectiondactino{5632 DAC Fastino}{Fastino}{fastino.py}
|
||||
|
||||
\subsection{CIC interpolators}
|
||||
|
||||
Fastino gateware features dynamically configurable CIC (cubic B-spline) interpolators, defined individually by channel, with interpolation rates from 1 (2.55 MSPS) to 65536 (39 SPS). For more details, see manual documentation on ARTIQ driver functions \texttt{stage\_cic} and \texttt{apply\_cic}.
|
||||
|
||||
\ordersection{5632 DAC Fastino}
|
||||
|
||||
\finalfootnote
|
||||
|
||||
\end{document}
|
50
examples/fastino.py
Normal file
50
examples/fastino.py
Normal file
@ -0,0 +1,50 @@
|
||||
from artiq.experiment import *
|
||||
from scipy import signal
|
||||
import numpy
|
||||
|
||||
# duplicated from zotino.py with name replaced
|
||||
class Voltage(EnvExperiment):
|
||||
def build(self):
|
||||
self.setattr_device("core")
|
||||
self.fastino = self.get_device("fastino0")
|
||||
|
||||
def prepare(self):
|
||||
self.channels = [0, 1, 2, 3]
|
||||
self.voltages = [1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
@kernel
|
||||
def run(self):
|
||||
self.core.reset()
|
||||
self.core.break_realtime()
|
||||
self.fastino.init()
|
||||
|
||||
delay(1*ms)
|
||||
self.fastino.set_dac(self.voltages, self.channels)
|
||||
|
||||
# duplicated from zotino.py with name replaced
|
||||
class TriangularWave(EnvExperiment):
|
||||
def build(self):
|
||||
self.setattr_device("core")
|
||||
self.zotino = self.get_device("fastino0")
|
||||
|
||||
def prepare(self):
|
||||
self.period = 0.1*s
|
||||
self.sample = 128
|
||||
t = numpy.linspace(0, 1, self.sample)
|
||||
self.voltages = 8*signal.sawtooth(2*numpy.pi*t, 0.5)
|
||||
self.interval = self.period/self.sample
|
||||
|
||||
@kernel
|
||||
def run(self):
|
||||
self.core.reset()
|
||||
self.core.break_realtime()
|
||||
self.fastino.init()
|
||||
|
||||
delay(1*ms)
|
||||
|
||||
counter = 0
|
||||
while True:
|
||||
self.fastino.set_dac([self.voltages[counter]], [0])
|
||||
counter = (counter + 1) % self.sample
|
||||
delay(self.interval)
|
||||
|
BIN
images/5632/fp5632.pdf
Normal file
BIN
images/5632/fp5632.pdf
Normal file
Binary file not shown.
BIN
images/5632/photo5632.jpg
Normal file
BIN
images/5632/photo5632.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 364 KiB |
Loading…
Reference in New Issue
Block a user