forked from sinara-hw/datasheets
parent
708330a57a
commit
48eb5a5ae3
47
5432.tex
47
5432.tex
@ -4,8 +4,6 @@
|
||||
\usepackage{minted}
|
||||
\usepackage{tcolorbox}
|
||||
\usepackage{etoolbox}
|
||||
\BeforeBeginEnvironment{minted}{\begin{tcolorbox}[colback=white]}%
|
||||
\AfterEndEnvironment{minted}{\end{tcolorbox}}%
|
||||
|
||||
\usepackage[justification=centering]{caption}
|
||||
|
||||
@ -65,6 +63,11 @@ Channels can broken out to BNC, SMA or MCX by adding external 5518 BNC-IDC, 5528
|
||||
\newcommand*{\MyLabel}[3][2cm]{\parbox{#1}{\centering #2 \\ #3}}
|
||||
\newcommand*{\MymyLabel}[3][4cm]{\parbox{#1}{\centering #2 \\ #3}}
|
||||
\newcommand{\repeatfootnote}[1]{\textsuperscript{\ref{#1}}}
|
||||
\newcommand{\inputcolorboxminted}[2]{%
|
||||
\begin{tcolorbox}[colback=white]
|
||||
\inputminted[#1, gobble=4]{python}{#2}
|
||||
\end{tcolorbox}
|
||||
}
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
@ -265,51 +268,15 @@ The full documentation for the ARTIQ software and gateware is available at \url{
|
||||
The following example initializes the Zotino card, then emits 1.0 V, 2.0 V, 3.0 V and 4.0 V at channel 0, 1, 2, 3 respectively.
|
||||
Voltages of all 4 channels are updated simultaneously with the use of \texttt{set\char`_dac()}.
|
||||
|
||||
\begin{minted}{python}
|
||||
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.zotino.init()
|
||||
|
||||
delay(1*ms)
|
||||
self.zotino.set_dac(self.voltages, self.channels)
|
||||
\end{minted}
|
||||
\inputcolorboxminted{firstline=11,lastline=22}{examples/zotino.py}
|
||||
|
||||
\newpage
|
||||
|
||||
\subsection{Triangular Wave}
|
||||
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.
|
||||
\begin{minted}{python}
|
||||
from scipy import signal
|
||||
import numpy
|
||||
|
||||
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.zotino.init()
|
||||
|
||||
delay(1*ms)
|
||||
|
||||
counter = 0
|
||||
while True:
|
||||
self.zotino.set_dac([self.voltages[counter]], [0])
|
||||
counter = (counter + 1) % self.sample
|
||||
delay(self.interval)
|
||||
\end{minted}
|
||||
\inputcolorboxminted{firstline=30,lastline=52}{examples/zotino.py}
|
||||
|
||||
\section{Ordering Information}
|
||||
To order, please visit \url{https://m-labs.hk} and select the 5432 Zotino in the ARTIQ Sinara crate configuration tool. The card may also be ordered separately by writing to \url{mailto:sales@m-labs.hk}.
|
||||
|
52
examples/zotino.py
Normal file
52
examples/zotino.py
Normal file
@ -0,0 +1,52 @@
|
||||
from artiq.experiment import *
|
||||
from scipy import signal
|
||||
import numpy
|
||||
|
||||
|
||||
class Voltage(EnvExperiment):
|
||||
def build(self):
|
||||
self.setattr_device("core")
|
||||
self.zotino = self.get_device("zotino0")
|
||||
|
||||
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.zotino.init()
|
||||
|
||||
delay(1*ms)
|
||||
self.zotino.set_dac(self.voltages, self.channels)
|
||||
|
||||
|
||||
class TriangularWave(EnvExperiment):
|
||||
def build(self):
|
||||
self.setattr_device("core")
|
||||
self.zotino = self.get_device("zotino0")
|
||||
|
||||
from scipy import signal
|
||||
import numpy
|
||||
|
||||
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.zotino.init()
|
||||
|
||||
delay(1*ms)
|
||||
|
||||
counter = 0
|
||||
while True:
|
||||
self.zotino.set_dac([self.voltages[counter]], [0])
|
||||
counter = (counter + 1) % self.sample
|
||||
delay(self.interval)
|
Loading…
Reference in New Issue
Block a user