2021-07-19 16:49:16 +08:00
\documentclass [10pt] { datasheet}
\usepackage { palatino}
\usepackage { textgreek}
\usepackage { minted}
\usepackage { tcolorbox}
\usepackage { etoolbox}
\BeforeBeginEnvironment { minted} { \begin { tcolorbox} [colback=white]} %
\AfterEndEnvironment { minted} { \end { tcolorbox} } %
2021-07-27 17:10:27 +08:00
\usepackage [justification=centering] { caption}
2021-07-19 16:49:16 +08:00
\usepackage [utf8] { inputenc}
\usepackage [english] { babel}
\usepackage [english] { isodate}
\usepackage { graphicx}
2021-12-23 12:56:11 +08:00
\usepackage { subfig}
2021-07-27 17:10:27 +08:00
2021-07-19 16:49:16 +08:00
\usepackage { tikz}
\usepackage { pgfplots}
\usepackage { circuitikz}
\usetikzlibrary { calc}
2021-07-27 17:10:27 +08:00
\usetikzlibrary { fit,backgrounds}
2021-07-19 16:49:16 +08:00
2021-12-23 12:56:11 +08:00
\title { 2118 BNC-TTL / 2128 SMA-TTL}
2021-07-19 16:49:16 +08:00
\author { M-Labs Limited}
\date { July 2021}
\revision { Revision 1}
\companylogo { \includegraphics [height=0.73in] { artiq_ sinara.pdf} }
\begin { document}
\maketitle
\section { Features}
\begin { itemize}
\item { 8 channels.}
\item { Input and output capable.}
\item { Galvanically isolated.}
\item { 3ns minimum pulse width.}
2021-12-23 12:56:11 +08:00
\item { BNC/SMA connectors.}
2021-07-19 16:49:16 +08:00
\end { itemize}
\section { Applications}
\begin { itemize}
\item { Photon counting.}
\item { External equipment trigger.}
\item { Optical shutter control.}
\end { itemize}
\section { General Description}
2021-12-23 12:56:11 +08:00
The 2118 BNC-TTL card is a 8hp EEM module, while the 2128 SMA-TTL card is a 4hp EEM module.
Both TTL cards add general-purpose digital I/O capabilities to carrier cards such as 1124 Kasli and 1125 Kasli-SoC.
2021-07-19 16:49:16 +08:00
2021-12-23 12:56:11 +08:00
Each card provides two banks of four digital channels each, with BNC/SMA connectors.
2021-07-19 16:49:16 +08:00
Each bank has individual ground isolation.
The direction (input or output) of each bank can be selected using DIP switches.
Each channel supports 50\textOmega ~terminations individually controllable using DIP switches.
Outputs tolerate short circuits indefinitely.
The card support a minimum pulse width of 3ns.
% Switch to next column
\vfill \break
2021-07-27 17:10:27 +08:00
\newcommand * { \MyLabel } [3][2cm]{ \parbox { #1} { \centering #2 \\ #3} }
\newcommand * { \MymyLabel } [3][4cm]{ \parbox { #1} { \centering #2 \\ #3} }
2021-07-19 16:49:16 +08:00
\begin { figure} [h]
2021-07-27 17:10:27 +08:00
\centering
\scalebox { 0.88} {
\begin { circuitikz} [european, scale=0.95, every label/.append style={ align=center} ]
\begin { scope} [yshift=1.3cm]
2021-12-23 12:56:11 +08:00
\draw [color=white, text=black] (-0.1,0) node[twoportshape,t={ IO 0} , circuitikz/bipoles/twoport/width=1.2, scale=0.4] (io0) { } ;
\draw [color=white, text=black] (-0.1,-0.7) node[twoportshape,t={ IO 1} , circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (io1) { } ;
\draw [color=white, text=black] (-0.1,-1.4) node[twoportshape,t={ IO 2} , circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (io2) { } ;
\draw [color=white, text=black] (-0.1,-2.1) node[twoportshape,t={ IO 3} , circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (io3) { } ;
2021-07-27 17:10:27 +08:00
2021-12-23 12:56:11 +08:00
\node [label={ [xshift=-0.18cm, yshift=-0.305cm]\tiny { IO 0} } ] { } ;
\node [label={ [xshift=-0.18cm, yshift=-0.97cm]\tiny { IO 1} } ] { } ;
\node [label={ [xshift=-0.18cm, yshift=-1.64cm]\tiny { IO 2} } ] { } ;
\node [label={ [xshift=-0.18cm, yshift=-2.302cm]\tiny { IO 3} } ] { } ;
2021-07-27 17:10:27 +08:00
% draw female SMA_0,1,2,3
\begin { scope} [scale=0.07 , rotate=-90, xshift=0cm, yshift=2cm]
\draw (0,0.65) -- (0,3);
\clip (-1.5,0) rectangle (1.5,1.5);
\draw (0,0) circle(1.5);
\clip (-0.8,0) rectangle (0.8,0.8);
\draw (0,0) circle(0.8);
\end { scope}
\begin { scope} [scale=0.07 , rotate=-90, xshift=10cm, yshift=2cm]
\draw (0,0.65) -- (0,3);
\clip (-1.5,0) rectangle (1.5,1.5);
\draw (0,0) circle(1.5);
\clip (-0.8,0) rectangle (0.8,0.8);
\draw (0,0) circle(0.8);
\end { scope}
\begin { scope} [scale=0.07 , rotate=-90, xshift=20cm, yshift=2cm]
\draw (0,0.65) -- (0,3);
\clip (-1.5,0) rectangle (1.5,1.5);
\draw (0,0) circle(1.5);
\clip (-0.8,0) rectangle (0.8,0.8);
\draw (0,0) circle(0.8);
\end { scope}
\begin { scope} [scale=0.07 , rotate=-90, xshift=30cm, yshift=2cm]
\draw (0,0.65) -- (0,3);
\clip (-1.5,0) rectangle (1.5,1.5);
\draw (0,0) circle(1.5);
\clip (-0.8,0) rectangle (0.8,0.8);
\draw (0,0) circle(0.8);
\end { scope}
\draw (1.6,-1.05) node[twoportshape,t={ Octal Bus Transceiver} , circuitikz/bipoles/twoport/width=2.5, scale=0.7, rotate=-90 ] (bus1) { } ;
\draw (3.05,-0) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (iso1) { } ;
\draw (3.05,-0.7) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (iso2) { } ;
\draw (3.05,-1.4) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (iso3) { } ;
\draw (3.05,-2.1) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (iso4) { } ;
\draw (3.05,-2.7) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (i2ciso1) { } ;
\draw (4.5,-1.15) node[twoportshape,t=\MymyLabel { 4-Channel LVDS} { Line Transceiver} , circuitikz/bipoles/twoport/width=2.6, scale=0.7, rotate=-90] (lvds1) { } ;
\draw (6.8,-0.9) -- ++(0.00001,0) node[twoportshape, anchor=left, t={ EEM port} , circuitikz/bipoles/twoport/width=6, scale=0.6, rotate=-90] (kasli) { } ;
\draw (0.8,-3.5) node[twoportshape,t=\MymyLabel { Per-bank \phantom { spac} } { Input/Output Switch} , circuitikz/bipoles/twoport/width=2.7, scale=0.44] (ioswitch) { } ;
\draw (3.05,-3.5) node[twoportshape,t=\MymyLabel { IO Expander} { for I2C Bus} , circuitikz/bipoles/twoport/width=1.8, scale=0.5] (i2c) { } ;
\draw (5.68,-2.3) node[twoportshape,t=EEPROM, circuitikz/bipoles/twoport/width=1.2, scale=0.5] (eeprom) { } ;
\draw (0.8,-2.7) node[twoportshape,t=\MymyLabel { High-Z/50\textOmega } { Switch \phantom { ssssss} } , circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch1) { } ;
% Termination Switch 1,2,3,4
\begin { scope} [xshift=0.9cm, yshift=-2.66cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
\begin { scope} [xshift=1cm, yshift=-2.66cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
\begin { scope} [xshift=1.1cm, yshift=-2.66cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
\begin { scope} [xshift=1.2cm, yshift=-2.66cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
\end { scope}
% I/O Switch 1, 2
\begin { scope} [xshift=1.2cm, yshift=-1.98cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
\begin { scope} [xshift=1.32cm, yshift=-1.98cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
\draw (0.8,-3.05) node[twoportshape,t=\MymyLabel { High-Z/50\textOmega } { Switch \phantom { ssssss} } , circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch2) { } ;
% Termination Switch 5,6,7,8
\begin { scope} [xshift=0.9cm, yshift=-3.02cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
\begin { scope} [xshift=1cm, yshift=-3.02cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
\begin { scope} [xshift=1.1cm, yshift=-3.02cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
\begin { scope} [xshift=1.2cm, yshift=-3.02cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
\draw (1.25,0)to[short,o-](1.6,0) ;
\end { scope}
% channel 5,6,7,8
\begin { scope} [yshift=-3.6cm]
2021-12-23 12:56:11 +08:00
\draw [color=white, text=black] (-0.1,0) node[twoportshape,t={ IO 4} , circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (io4) { } ;
\draw [color=white, text=black] (-0.1,-0.7) node[twoportshape,t={ IO 5} , circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (io5) { } ;
\draw [color=white, text=black] (-0.1,-1.4) node[twoportshape,t={ IO 6} , circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (io6) { } ;
\draw [color=white, text=black] (-0.1,-2.1) node[twoportshape,t={ IO 7} , circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (io7) { } ;
2021-07-27 17:10:27 +08:00
2021-12-23 12:56:11 +08:00
\node [label={ [xshift=-0.18cm, yshift=-0.305cm]\tiny { IO 4} } ] { } ;
\node [label={ [xshift=-0.18cm, yshift=-0.97cm]\tiny { IO 5} } ] { } ;
\node [label={ [xshift=-0.18cm, yshift=-1.64cm]\tiny { IO 6} } ] { } ;
\node [label={ [xshift=-0.18cm, yshift=-2.302cm]\tiny { IO 7} } ] { } ;
2021-07-27 17:10:27 +08:00
% draw female SMA 4,5,6,7
\begin { scope} [scale=0.07 , rotate=-90, xshift=0cm, yshift=2cm]
\draw (0,0.65) -- (0,3);
\clip (-1.5,0) rectangle (1.5,1.5);
\draw (0,0) circle(1.5);
\clip (-0.8,0) rectangle (0.8,0.8);
\draw (0,0) circle(0.8);
\end { scope}
\begin { scope} [scale=0.07 , rotate=-90, xshift=10cm, yshift=2cm]
\draw (0,0.65) -- (0,3);
\clip (-1.5,0) rectangle (1.5,1.5);
\draw (0,0) circle(1.5);
\clip (-0.8,0) rectangle (0.8,0.8);
\draw (0,0) circle(0.8);
\end { scope}
\begin { scope} [scale=0.07 , rotate=-90, xshift=20cm, yshift=2cm]
\draw (0,0.65) -- (0,3);
\clip (-1.5,0) rectangle (1.5,1.5);
\draw (0,0) circle(1.5);
\clip (-0.8,0) rectangle (0.8,0.8);
\draw (0,0) circle(0.8);
\end { scope}
\begin { scope} [scale=0.07 , rotate=-90, xshift=30cm, yshift=2cm]
\draw (0,0.65) -- (0,3);
\clip (-1.5,0) rectangle (1.5,1.5);
\draw (0,0) circle(1.5);
\clip (-0.8,0) rectangle (0.8,0.8);
\draw (0,0) circle(0.8);
\end { scope}
\draw (1.6,-1.05) node[twoportshape,t={ Octal Bus Transceiver} , circuitikz/bipoles/twoport/width=2.5, scale=0.7, rotate=-90 ] (bus2) { } ;
\draw (3.05,-0) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (iso5) { } ;
\draw (3.05,-0.7) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (iso6) { } ;
\draw (3.05,-1.4) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (iso7) { } ;
\draw (3.05,-2.1) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (iso8) { } ;
\draw (3.05,0.6) node[twoportshape,t={ Isolator} , circuitikz/bipoles/twoport/width=1.3, scale=0.4] (i2ciso2) { } ;
\draw (4.5,-1.05) node[twoportshape,t=\MymyLabel { 4-Channel LVDS} { Line Transceiver} , circuitikz/bipoles/twoport/width=2.6, scale=0.7, rotate=-90] (lvds2) { } ;
\end { scope}
% Drawing Connections
2021-12-23 12:56:11 +08:00
\draw [latexslim-latexslim] (io0.east) -- ++(1,0);
\draw [latexslim-latexslim] (io1.east) -- ++(1,0);
\draw [latexslim-latexslim] (io2.east) -- ++(1,0);
\draw [latexslim-latexslim] (io3.east) -- ++(1,0);
\draw [latexslim-latexslim] (io4.east) -- ++(1,0);
\draw [latexslim-latexslim] (io5.east) -- ++(1,0);
\draw [latexslim-latexslim] (io6.east) -- ++(1,0);
\draw [latexslim-latexslim] (io7.east) -- ++(1,0);
2021-07-27 17:10:27 +08:00
\draw [latexslim-latexslim] (iso1.west) -- ++(-0.72,0) ;
\draw [latexslim-latexslim] (iso2.west) -- ++(-0.72,0) ;
\draw [latexslim-latexslim] (iso3.west) -- ++(-0.72,0) ;
\draw [latexslim-latexslim] (iso4.west) -- ++(-0.72,0) ;
\draw [latexslim-latexslim] (iso1.east) -- ++(0.69,0);
\draw [latexslim-latexslim] (iso2.east) -- ++(0.69,0);
\draw [latexslim-latexslim] (iso3.east) -- ++(0.69,0);
\draw [latexslim-latexslim] (iso4.east) -- ++(0.69,0);
\draw [latexslim-latexslim] (iso5.west) -- ++(-0.72,0) ;
\draw [latexslim-latexslim] (iso6.west) -- ++(-0.72,0) ;
\draw [latexslim-latexslim] (iso7.west) -- ++(-0.72,0) ;
\draw [latexslim-latexslim] (iso8.west) -- ++(-0.72,0) ;
\draw [latexslim-latexslim] (iso5.east) -- ++(0.7,0);
\draw [latexslim-latexslim] (iso6.east) -- ++(0.7,0);
\draw [latexslim-latexslim] (iso7.east) -- ++(0.7,0);
\draw [latexslim-latexslim] (iso8.east) -- ++(0.7,0);
\draw [latexslim-] (eeprom.south) -- ++(0,-0.95);
\draw [latexslim-latexslim] (lvds1.north) -- ++(1.61,0);
\draw [latexslim-latexslim] (lvds2.north) -- ++(1.62,0);
\draw [latexslim-latexslim] (i2c.east) -- ++(2.77,0);
\draw [latexslim-] (i2c.west) -- (ioswitch.east) ;
\draw [-latexslim] (i2c.north east) -- (lvds1.south east);
\draw [-latexslim] (i2c.south east) -- (lvds2.south west);
\draw [-latexslim] (i2ciso1.west) -- (bus1.north east);
\draw [thin] [-latexslim] (i2c.north) -- (i2ciso1.south);
\draw [-latexslim] (i2ciso2.west) -- (bus2.north west);
\draw [thin] [-latexslim] (i2c.south) -- (i2ciso2.north);
% termination switch connection
\draw (0.65,-1.18) -- ++(0,2.47) ;
\draw (0.75,-1.18) -- ++(0,1.77) ;
\draw (0.85,-1.18) -- ++(0,1.07) ;
\draw (0.95,-1.18) -- ++(0,0.37) ;
\draw (0.65,-3.25) -- ++(0,-2.45) ;
\draw (0.75,-3.25) -- ++(0,-1.75) ;
\draw (0.85,-3.25) -- ++(0,-1.05) ;
\draw (0.95,-3.25) -- ++(0,-0.35) ;
2021-12-23 12:56:11 +08:00
\node [draw, dotted, thick, rounded corners, inner xsep=0.7em, inner ysep=0.4em, fit=(io0) (i2ciso1.south west)] (box1) { } ;
2021-07-27 17:10:27 +08:00
\node [fill=white, rotate=-90] at (box1.west) { GND BANK 1} ;
\node [fill=white,above] at (box1.north) { \tiny { Either all 4 channels are inputs or all 4 channels are outputs } } ;
2021-12-23 12:56:11 +08:00
\node [draw, dotted, thick, rounded corners, inner xsep=0.7em, inner ysep=0.4em, fit=(io4)(termswitch2) (iso8.south west)] (box2) { } ;
2021-07-27 17:10:27 +08:00
\node [fill=white, rotate=-90] at (box2.west) { GND BANK 2} ;
\node [fill=white,below] at (box2.south) { \tiny { Either all 4 channels are inputs or all 4 channels are outputs } } ;
2021-07-19 16:49:16 +08:00
\end { circuitikz}
2021-07-27 17:10:27 +08:00
}
\caption { Simplified Block Diagram}
2021-07-19 16:49:16 +08:00
\end { figure}
2021-12-23 12:56:11 +08:00
\begin { figure} [hbt!]
2021-07-27 17:10:27 +08:00
\centering
2022-01-06 11:46:26 +08:00
\subfloat [\centering BNC-TTL] { {
\includegraphics [height=1.8in] { DIO_ BNC_ FP.png}
\includegraphics [height=1.8in] { photo2118.jpg}
} } %
\subfloat [\centering SMA-TTL] { {
\includegraphics [height=1.8in] { DIO_ SMA_ FP.png}
\includegraphics [height=1.8in] { photo2128.jpg}
} } %
2021-12-23 12:56:11 +08:00
\caption { BNC-TTL/SMA-TTL Card photos} %
\label { fig:example} %
2021-07-19 16:49:16 +08:00
\end { figure}
% For wide tables, a single column layout is better. It can be switched
% page-by-page.
\onecolumn
\section { Electrical Specifications}
All specifications are in $ 0 \degree C \leq T _ A \leq 70 \degree C $ unless otherwise noted.
\begin { table} [h]
\begin { threeparttable}
\caption { Recommended Operating Conditions}
\begin { tabularx} { \textwidth } { l | c | c c c | c | X}
\thickhline
\textbf { Parameter} & \textbf { Symbol} & \textbf { Min.} & \textbf { Typ.} & \textbf { Max.} &
\textbf { Unit} & \textbf { Conditions} \\
\hline
High-level input voltage & $ V _ { IH } $ & 2 & & & V & \\
\hline
Low-level input voltage & $ V _ { IL } $ & & & 0.8 & V & \\
\hline
Input clamp current & $ I _ { OH } $ & & & -18 & mA & termination disabled \\
\hline
High-level output current & $ I _ { OH } $ & & & -160 & mA & \\
\hline
Low-level output current & $ I _ { OL } $ & & & 376 & mA & \\
\thickhline
\end { tabularx}
\end { threeparttable}
\end { table}
\begin { table} [h]
\begin { threeparttable}
\caption { Electrical Characteristics}
\begin { tabularx} { \textwidth } { l | c | c c c | c | X}
\thickhline
\textbf { Parameter} & \textbf { Symbol} & \textbf { Min.} & \textbf { Typ.} & \textbf { Max.} &
\textbf { Unit} & \textbf { Conditions} \\
\hline
High-level output voltage & $ V _ { OH } $ & 2 & & & V & $ I _ { OH } $ =-160mA \\
& & 2.7 & & & V & $ I _ { OH } $ =-6mA \\
\hline
Low-level output voltage & $ V _ { OL } $ & & 0.42 & 0.55 & V & $ I _ { OL } $ =188mA \\
& & & & 0.7 & V & $ I _ { OL } $ =376mA \\
\hline
Pulse width distortion & $ PWD $ & & 0.2 & 4.5 & ns & \\
\hline
Peak jitter & $ T _ { JIT ( PK ) } $ & & 350 & & ps & \\
\thickhline
\end { tabularx}
\end { threeparttable}
\end { table}
\section { Example ARTIQ code}
2021-12-23 12:56:11 +08:00
The sections below demonstrate simple usage scenarios of the 2118 BNC-TTL/2128 SMA-TTL card with the ARTIQ control system.
2021-07-19 16:49:16 +08:00
They do not exhaustively demonstrate all the features of the ARTIQ system.
The full documentation for the ARTIQ software and gateware is available at \url { https://m-labs.hk} .
Timing accuracy in the examples below is well under 1 nanosecond thanks to the ARTIQ RTIO system.
\subsection { One pulse per second}
The channel should be configured as output in both the gateware and hardware.
\begin { minted} { python}
@kernel
def run(self):
self.core.reset()
while True:
self.ttl0.pulse(500*ms)
delay(500*ms)
\end { minted}
2021-07-27 17:10:27 +08:00
\newpage
2021-07-19 16:49:16 +08:00
\subsection { Morse code}
This example demonstrates some basic algorithmic features of the ARTIQ-Python language.
\begin { minted} { python}
def prepare(self):
# As of ARTIQ-6, the ARTIQ compiler has limited string handling
# capabilities, so we pass a list of integers instead.
message = ".- .-. - .. --.-"
self.commands = [{ ".": 1, "-": 2, " ": 3} [c] for c in message]
@kernel
def run(self):
self.core.reset()
for cmd in self.commands:
if cmd == 1:
self.led.pulse(100*ms)
delay(100*ms)
if cmd == 2:
self.led.pulse(300*ms)
delay(100*ms)
if cmd == 3:
delay(700*ms)
\end { minted}
\subsection { Counting rising edges in a 1ms window}
The channel should be configured as input in both the gateware and hardware.
\begin { minted} { python}
@kernel
def run(self):
self.core.reset()
gate_ end_ mu = self.ttl0.gate_ rising(1*ms)
counts = self.ttl0.count()
print(counts)
\end { minted}
This example code uses the software counter, which has a maximum count rate of approximately 1 million events per second.
If the gateware counter is enabled on the TTL channel, it can typically count up to 125 million events per second:
\begin { minted} { python}
@kernel
def run(self):
self.core.reset()
self.edgecounter0.gate_ rising(1*ms)
counts = self.edgecounter0.fetch_ count()
print(counts)
\end { minted}
2021-07-27 17:10:27 +08:00
\newpage
2021-07-19 16:49:16 +08:00
\subsection { Responding to an external trigger}
One channel needs to be configured as input, and the other as output.
\begin { minted} { python}
@kernel
def run(self):
self.core.reset()
self.ttlin.gate_ rising(5*ms)
timestamp_ mu = self.ttlin.timestamp_ mu()
at_ mu(timestamp_ mu + self.core.seconds_ to_ mu(10*ms))
self.ttlout.pulse(1*us)
\end { minted}
2022-01-06 11:46:26 +08:00
\section { Front Panel Dimensions}
\begin { figure} [hbt!]
\centering
\includegraphics [height=2in] { DIO_ SMA_ drawings.jpg}
\includegraphics [height=2in] { DIO_ SMA_ assembly.jpg}
\caption { 2128 SMA-TTL front panel drawings.}
\end { figure}
2021-07-19 16:49:16 +08:00
\section { Ordering Information}
2021-12-23 12:56:11 +08:00
To order, please visit \url { https://m-labs.hk} and select the 2118 BNC-TTL/2128 SMA-TTL in the ARTIQ Sinara crate configuration tool. The card may also be ordered separately by writing to \url { mailto:sales@m-labs.hk} .
2021-07-19 16:49:16 +08:00
\section * { }
\vspace * { \fill }
\begin { footnotesize}
Information furnished by M-Labs Limited is believed to be accurate and reliable. However, no responsibility is assumed by M-Labs Limited for its use, nor for any infringements of patents or other rights of third parties that may result from its use.
Specifications subject to change without notice.
\end { footnotesize}
\end { document}