From 05b7f12c2b0ceca9e2af1389d04feee33f159753 Mon Sep 17 00:00:00 2001 From: occheung Date: Mon, 3 Jan 2022 17:21:05 +0800 Subject: [PATCH] 2238: init --- 2238.tex | 662 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 662 insertions(+) create mode 100644 2238.tex diff --git a/2238.tex b/2238.tex new file mode 100644 index 0000000..99fb63a --- /dev/null +++ b/2238.tex @@ -0,0 +1,662 @@ +\documentclass[10pt]{datasheet} +\usepackage{palatino} +\usepackage{textgreek} +\usepackage{minted} +\usepackage{tcolorbox} +\usepackage{etoolbox} +\BeforeBeginEnvironment{minted}{\begin{tcolorbox}[colback=white]}% +\AfterEndEnvironment{minted}{\end{tcolorbox}}% + +\usepackage[justification=centering]{caption} + +\usepackage[utf8]{inputenc} +\usepackage[english]{babel} +\usepackage[english]{isodate} + +\usepackage{graphicx} +\usepackage{subfig} + +\usepackage{tikz} +\usepackage{pgfplots} +\usepackage{circuitikz} +\usetikzlibrary{calc} +\usetikzlibrary{fit,backgrounds} + +\title{2238 MCX-TTL} +\author{M-Labs Limited} +\date{January 2022} +\revision{Revision 1} +\companylogo{\includegraphics[height=0.73in]{artiq_sinara.pdf}} + +\begin{document} +\maketitle + +\section{Features} + +\begin{itemize} +\item{16 channels.} +\item{Input and output capable.} +\item{No galvanic isolation.} +\item{High speed and low jitter.} +\item{MCX connectors.} +\end{itemize} + +\section{Applications} + +\begin{itemize} +\item{Photon counting.} +\item{External equipment trigger.} +\item{Optical shutter control.} +\end{itemize} + +\section{General Description} +The 2238 MCX-TTL card is a 4hp EEM module. +It adds general-purpose digital I/O capabilities to carrier cards such as 1124 Kasli and 1125 Kasli-SoC. + +Each card provides four banks of four digital channels each, with MCX connectors, controlled through 2 EEM connectors. +Each EEM connector controls two banks independently. +Single EEM operation is possible. +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. +This card can achieve higher speed and lower jitter than the isolated 2118/2128 BNC/SMA-TTL cards. + +% Switch to next column +\vfill\break + +\newcommand*{\MyLabel}[3][2cm]{\parbox{#1}{\centering #2 \\ #3}} +\newcommand*{\MymyLabel}[3][4cm]{\parbox{#1}{\centering #2 \\ #3}} + +\begin{figure}[h] + \centering + \scalebox{0.88}{ + \begin{circuitikz}[european, scale=0.95, every label/.append style={align=center}] + % Node to pin-point the locations of MCX symbols + \draw[color=white, text=black] (-0.1, 0) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx0) {}; + \draw[color=white, text=black] (-0.1, -0.35) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx1) {}; + \draw[color=white, text=black] (-0.1, -0.7) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx2) {}; + \draw[color=white, text=black] (-0.1, -1.05) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx3) {}; + \draw[color=white, text=black] (-0.1, -1.75) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx4) {}; + \draw[color=white, text=black] (-0.1, -2.1) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx5) {}; + \draw[color=white, text=black] (-0.1, -2.45) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx6) {}; + \draw[color=white, text=black] (-0.1, -2.8) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx7) {}; + \draw[color=white, text=black] (-0.1, -3.5) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx8) {}; + \draw[color=white, text=black] (-0.1, -3.85) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx9) {}; + \draw[color=white, text=black] (-0.1, -4.2) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx10) {}; + \draw[color=white, text=black] (-0.1, -4.55) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx11) {}; + \draw[color=white, text=black] (-0.1, -5.25) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx12) {}; + \draw[color=white, text=black] (-0.1, -5.6) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx13) {}; + \draw[color=white, text=black] (-0.1, -5.95) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx14) {}; + \draw[color=white, text=black] (-0.1, -6.3) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx15) {}; + + % Labels for IO 0-15 + \node [label=left:\tiny{IO 0}] at (0.35, 0) {}; + \node [label=left:\tiny{IO 1}] at (0.35, -0.35) {}; + \node [label=left:\tiny{IO 2}] at (0.35, -0.7) {}; + \node [label=left:\tiny{IO 3}] at (0.35, -1.05) {}; + \node [label=left:\tiny{IO 4}] at (0.35, -1.75) {}; + \node [label=left:\tiny{IO 5}] at (0.35, -2.1) {}; + \node [label=left:\tiny{IO 6}] at (0.35, -2.45) {}; + \node [label=left:\tiny{IO 7}] at (0.35, -2.8) {}; + \node [label=left:\tiny{IO 8}] at (0.35, -3.5) {}; + \node [label=left:\tiny{IO 9}] at (0.35, -3.85) {}; + \node [label=left:\tiny{IO 10}] at (0.35, -4.2) {}; + \node [label=left:\tiny{IO 11}] at (0.35, -4.55) {}; + \node [label=left:\tiny{IO 12}] at (0.35, -5.25) {}; + \node [label=left:\tiny{IO 13}] at (0.35, -5.6) {}; + \node [label=left:\tiny{IO 14}] at (0.35, -5.95) {}; + \node [label=left:\tiny{IO 15}] at (0.35, -6.3) {}; + + % Draw all female MCX connectors + % Bank 1 + \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=5cm, 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=15cm, 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} + + % Bank 2 + \begin{scope}[scale=0.07 , rotate=-90, xshift=25cm, 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} + \begin{scope}[scale=0.07 , rotate=-90, xshift=35cm, 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=40cm, 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} + + % Bank 3 + \begin{scope}[scale=0.07 , rotate=-90, xshift=50cm, 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=55cm, 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=60cm, 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=65cm, 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} + + % Bank 4 + \begin{scope}[scale=0.07 , rotate=-90, xshift=75cm, 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=80cm, 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=85cm, 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=90cm, 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 bank boundaries + \node[draw, dotted, thick, rounded corners, inner xsep=0.7em, inner ysep=0.2em, fit=(mcx0)(mcx3)] (bank0) {}; + \node[fill=white, scale=0.7, rotate=-90] at (bank0.west) {Bank 0}; + \node[draw, dotted, thick, rounded corners, inner xsep=0.7em, inner ysep=0.2em, fit=(mcx4)(mcx7)] (bank1) {}; + \node[fill=white, scale=0.7, rotate=-90] at (bank1.west) {Bank 1}; + \node[draw, dotted, thick, rounded corners, inner xsep=0.7em, inner ysep=0.2em, fit=(mcx8)(mcx11)] (bank2) {}; + \node[fill=white, scale=0.7, rotate=-90] at (bank2.west) {Bank 2}; + \node[draw, dotted, thick, rounded corners, inner xsep=0.7em, inner ysep=0.2em, fit=(mcx12)(mcx15)] (bank3) {}; + \node[fill=white, scale=0.7, rotate=-90] at (bank3.west) {Bank 3}; + + % Draw bus transceivers + \draw (3.8, -0.025) node[twoportshape,t={Bus Transceiver}, circuitikz/bipoles/twoport/width=2.0, scale=0.5, rotate=-90 ] (bus0) {}; + \draw (3.8, -1.675) node[twoportshape,t={Bus Transceiver}, circuitikz/bipoles/twoport/width=2.0, scale=0.5, rotate=-90 ] (bus1) {}; + \draw (3.8, -4.625) node[twoportshape,t={Bus Transceiver}, circuitikz/bipoles/twoport/width=2.0, scale=0.5, rotate=-90 ] (bus2) {}; + \draw (3.8, -6.275) node[twoportshape,t={Bus Transceiver}, circuitikz/bipoles/twoport/width=2.0, scale=0.5, rotate=-90 ] (bus3) {}; + + % Draw termination switches + % Bus transceiver 0 + \draw (2.6, 0.5) node[twoportshape,t=\MymyLabel{High-Z/50\textOmega}{Switch \phantom{ssssss} }, circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch0) {}; + \begin{scope}[xshift=2.7cm, yshift=0.53cm, 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=2.8cm, yshift=0.53cm, 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=2.9cm, yshift=0.53cm, 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=3cm, yshift=0.53cm, 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} + + % Bus transceiver 1 + \draw (2.6, -1.15) node[twoportshape,t=\MymyLabel{High-Z/50\textOmega}{Switch \phantom{ssssss} }, circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch1) {}; + \begin{scope}[xshift=2.7cm, yshift=-1.12cm, 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=2.8cm, yshift=-1.12cm, 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=2.9cm, yshift=-1.12cm, 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=3cm, yshift=-1.12cm, 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} + + % Bus transceiver 2 + \draw (2.6, -5.15) node[twoportshape,t=\MymyLabel{High-Z/50\textOmega}{Switch \phantom{ssssss} }, circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch2) {}; + \begin{scope}[xshift=2.7cm, yshift=-5.12cm, 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=2.8cm, yshift=-5.12cm, 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=2.9cm, yshift=-5.12cm, 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=3cm, yshift=-5.12cm, 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} + + % Bus transceiver 3 + \draw (2.6, -6.8) node[twoportshape,t=\MymyLabel{High-Z/50\textOmega}{Switch \phantom{ssssss} }, circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch3) {}; + \begin{scope}[xshift=2.7cm, yshift=-6.77cm, 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=2.8cm, yshift=-6.77cm, 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=2.9cm, yshift=-6.77cm, 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=3cm, yshift=-6.77cm, 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} + + % Left-extend the upcoming boundary + \draw[color=white, text=black] (1.9, -3.15) node[twoportshape, circuitikz/bipoles/twoport/width=0.4, scale=0.4 ] (bus_west) {}; + + % Connect bus transceivers & termination switches to the boundary (I/O side) + \draw [latexslim-latexslim] (3.55, -0.4) -- (1.55, -0.4); + \draw [-] (termswitch0.south) -- (2.6, -0.4); + \node [label=center:\tiny{IO}] at (2.1, -0.3) {}; + \node [label=center:\tiny{0,2,4,6}] at (2.1, -0.5) {}; + + \draw [latexslim-latexslim] (3.55, -2.05) -- (1.55, -2.05); + \draw [-] (termswitch1.south) -- (2.6, -2.05); + \node [label=center:\tiny{IO}] at (2.1, -1.95) {}; + \node [label=center:\tiny{8,10,12,14}] at (2.1, -2.15) {}; + + \draw [latexslim-latexslim] (3.55, -4.25) -- (1.55, -4.25); + \draw [-] (termswitch2.north) -- (2.6, -4.25); + \node [label=center:\tiny{IO}] at (2.1, -4.15) {}; + \node [label=center:\tiny{1,3,5,7}] at (2.1, -4.35) {}; + + \draw [latexslim-latexslim] (3.55, -5.85) -- (1.55, -5.85); + \draw [-] (termswitch3.north) -- (2.6, -5.85); + \node [label=center:\tiny{IO}] at (2.1, -5.75) {}; + \node [label=center:\tiny{9,11,13,15}] at (2.1, -5.95) {}; + + % Connect bus transceivers to the boundary (EEM side) + \draw [latexslim-latexslim] (4.05, 0.35) -- (5.2, 0.35); + \node [label=center:\tiny{EEM}] at (4.65, 0.45) {}; + \node [label=center:\tiny{0,2,4,6}] at (4.65, 0.25) {}; + \draw [latexslim-] (4.05, -0.4) -- (5.2, -0.4); + \node [label=center:\tiny{Direction}] at (4.65, -0.3) {}; + \node [label=center:\tiny{Bank 0,1}] at (4.65, -0.5) {}; + + \draw [latexslim-latexslim] (4.05, -1.3) -- (5.2, -1.3); + \node [label=center:\tiny{EEM}] at (4.65, -1.2) {}; + \node [label=center:\tiny{8,10,12,14}] at (4.65, -1.4) {}; + \draw [latexslim-] (4.05, -2.05) -- (5.2, -2.05); + \node [label=center:\tiny{Direction}] at (4.65, -1.95) {}; + \node [label=center:\tiny{Bank 2,3}] at (4.65, -2.15) {}; + + \draw [latexslim-latexslim] (4.05, -4.25) -- (5.2, -4.25); + \node [label=center:\tiny{EEM}] at (4.65, -4.15) {}; + \node [label=center:\tiny{1,3,5,7}] at (4.65, -4.35) {}; + \draw [latexslim-] (4.05, -5) -- (5.2, -5); + \node [label=center:\tiny{Direction}] at (4.65, -4.9) {}; + \node [label=center:\tiny{Bank 0,1}] at (4.65, -5.1) {}; + + \draw [latexslim-latexslim] (4.05, -5.85) -- (5.2, -5.85); + \node [label=center:\tiny{EEM}] at (4.65, -5.75) {}; + \node [label=center:\tiny{9,11,13,15}] at (4.65, -5.95) {}; + \draw [latexslim-] (4.05, -6.6) -- (5.2, -6.6); + \node [label=center:\tiny{Direction}] at (4.65, -6.5) {}; + \node [label=center:\tiny{Bank 2,3}] at (4.65, -6.7) {}; + + % Right-extend the upcoming boundary + \draw[color=white, text=black] (4.85, -3.15) node[twoportshape, circuitikz/bipoles/twoport/width=0.4, scale=0.4 ] (bus_east) {}; + + % Draw central tranceivers boundary + \node[draw, dotted, thick, rounded corners, inner xsep=0.7em, inner ysep=0.4em, fit=(bus0)(termswitch3)(bus_west)(bus_east)] () {}; + + % Draw partition between baseboard and mezzanie with labels at the center + \draw [line width=0.4mm] (bus_west) -- (bus_east); + \node [label=above:{Baseboard}] at (3.375, -3.15) {}; + \node [label=below:{Mezzanie}] at (3.375, -3.15) {}; + + % Connect I/Os to tranceivers block + \draw [latexslim-latexslim] (mcx0) -- (1.5, 0); + \draw [latexslim-latexslim] (mcx1) -- (1.5, -0.35); + \draw [latexslim-latexslim] (mcx2) -- (1.5, -0.7); + \draw [latexslim-latexslim] (mcx3) -- (1.5, -1.05); + + \draw [latexslim-latexslim] (mcx4) -- (1.5, -1.75); + \draw [latexslim-latexslim] (mcx5) -- (1.5, -2.1); + \draw [latexslim-latexslim] (mcx6) -- (1.5, -2.45); + \draw [latexslim-latexslim] (mcx7) -- (1.5, -2.8); + + \draw [latexslim-latexslim] (mcx8) -- (1.5, -3.5); + \draw [latexslim-latexslim] (mcx9) -- (1.5, -3.85); + \draw [latexslim-latexslim] (mcx10) -- (1.5, -4.2); + \draw [latexslim-latexslim] (mcx11) -- (1.5, -4.55); + + \draw [latexslim-latexslim] (mcx12) -- (1.5, -5.25); + \draw [latexslim-latexslim] (mcx13) -- (1.5, -5.6); + \draw [latexslim-latexslim] (mcx14) -- (1.5, -5.95); + \draw [latexslim-latexslim] (mcx15) -- (1.5, -6.3); + + % Draw LVDS transceivers + \draw (6.6, -0.025) node[twoportshape,t={\MymyLabel{LVDS}{Transceiver}}, circuitikz/bipoles/twoport/width=2, scale=0.5, rotate=-90 ] (lvds0) {}; + \draw (6.6, -1.675) node[twoportshape,t={\MymyLabel{LVDS}{Transceiver}}, circuitikz/bipoles/twoport/width=2, scale=0.5, rotate=-90 ] (lvds1) {}; + \draw (6.6, -4.625) node[twoportshape,t={\MymyLabel{LVDS}{Transceiver}}, circuitikz/bipoles/twoport/width=2, scale=0.5, rotate=-90 ] (lvds2) {}; + \draw (6.6, -6.275) node[twoportshape,t={\MymyLabel{LVDS}{Transceiver}}, circuitikz/bipoles/twoport/width=2, scale=0.5, rotate=-90 ] (lvds3) {}; + + % Aesthetic EEPROM at each end of LVDS transceivers + \draw (6.6, 1.1) node[twoportshape,t={EEPROM}, circuitikz/bipoles/twoport/width=1.2, scale=0.5] (eeprom0) {}; + \draw (6.6, -7.4) node[twoportshape,t={EEPROM}, circuitikz/bipoles/twoport/width=1.2, scale=0.5] (eeprom1) {}; + + % I/O expander + \draw (8.2, -3.5) node[twoportshape,t=\MymyLabel{IO Expander}{for I2C Bus}, circuitikz/bipoles/twoport/width=1.8, scale=0.5] (i2c) {}; + + % I/O direction switches + \draw (6.6, -2.8) node[twoportshape,t=\MymyLabel{Per-bank \phantom{space} }{Input/Output Switch}, circuitikz/bipoles/twoport/width=2.7, scale=0.44] (ioswitch) {}; + \begin{scope}[xshift=6.85cm, yshift=-2.57cm, 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=6.95cm, yshift=-2.57cm, 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=7.05cm, yshift=-2.57cm, 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=7.15cm, yshift=-2.57cm, 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} + + % EEM Ports + \draw (8.2, -0.5) node[twoportshape, t={EEM Port 0}, circuitikz/bipoles/twoport/width=3.6, scale=0.7, rotate=-90] (eem0) {}; + \draw (8.2, -5.8) node[twoportshape, t={EEM Port 1}, circuitikz/bipoles/twoport/width=3.6, scale=0.7, rotate=-90] (eem1) {}; + + % Connect I/O expander & direction switches to bus transceivers block, with labelling + \draw [latexslim-latexslim] (i2c.west) -- (5.25, -3.5); + \draw [-] (ioswitch.south) -- (6.6, -3.5); + \node [label=center:\tiny{Direction}] at (5.8, -3.4) {}; + \node [label=center:\tiny{Bank 0..3}] at (5.8, -3.6) {}; + + % Connect LVDS transceivers to bus transceivers, with labelling + \draw [latexslim-latexslim] (lvds0.south) -- (5.25, -0.025); + \node [label=center:\tiny{EEM}] at (5.7, 0.075) {}; + \node [label=center:\tiny{0..3}] at (5.7, -0.125) {}; + \draw [latexslim-latexslim] (lvds1.south) -- (5.25, -1.675); + \node [label=center:\tiny{EEM}] at (5.7, -1.575) {}; + \node [label=center:\tiny{4..7}] at (5.7, -1.775) {}; + \draw [latexslim-latexslim] (lvds2.south) -- (5.25, -4.625); + \node [label=center:\tiny{EEM}] at (5.7, -4.525) {}; + \node [label=center:\tiny{8..11}] at (5.7, -4.725) {}; + \draw [latexslim-latexslim] (lvds3.south) -- (5.25, -6.275); + \node [label=center:\tiny{EEM}] at (5.7, -6.175) {}; + \node [label=center:\tiny{12..15}] at (5.7, -6.375) {}; + + % Connect EEM0 & EEM1 + \draw [latexslim-latexslim] (lvds0.north) -- (7.85, -0.025); + \draw [latexslim-latexslim] (lvds1.north) -- (7.85, -1.675); + \draw [latexslim-latexslim] (lvds2.north) -- (7.85, -4.625); + \draw [latexslim-latexslim] (lvds3.north) -- (7.85, -6.275); + \draw [latexslim-latexslim] (eeprom0.east) -- (7.85, 1.1); + \draw [latexslim-latexslim] (eeprom1.east) -- (7.85, -7.4); + \draw [latexslim-latexslim] (eem0.east) -- (i2c.north); + + % Reminder: IO directions are only selectable by bank. Channels from the same bank must have the same IO direction. + % Might be unnecessary as I/O directions signals are labelled with the "Bank" prefix. + \node [label={center:\tiny{Channels from the same bank must have the same IO direction.}}] at (2.2, -7.3) {}; + + \end{circuitikz} + } + + \caption{Simplified Block Diagram} +\end{figure} + +\begin{figure}[hbt!] + \centering + \includegraphics[width=3.6in]{photo2238.jpg} + \caption{MCX-TTL Card photo} +\end{figure} + +% For wide tables, a single column layout is better. It can be switched +% page-by-page. +\onecolumn + +\section{Electrical Specifications} +\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 + Input voltage & $V_{I}$ & 0 & & 5.5 & V \\ + \hline + High-level output current & $I_{OH}$ & & & -24 & mA \\ + \hline + Low-level output current & $I_{OL}$ & & & 24 & mA \\ + \hline + Input edge rate & $\frac{\Delta t}{\Delta V}$ & 0 & & 10 & ns/V & $0.8V \leq V_I \leq 2.0V$ \\ + \thickhline +\end{tabularx} +\end{threeparttable} +\end{table} +The recommended operating temperature is $-40\degree C \leq T_A \leq 85\degree C$. + +All specifications are in the recommended operating temperature range unless otherwise noted. + +\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 + Input clamp diode voltage & $V_{IK}$ & & & -1.2 & V & $I_I =-36 mA$ \\ + \hline + Input high voltage & $V_{IH}$ & 2.0 & & & V & \\ + \hline + Input low voltage & $V_{IL}$ & & & 0.8 & V & \\ + \hline + Output high voltage & $V_{OH}$ & 2.0 & & & V & $I_{OH}=-24mA$ \\ + & & 3.1 & & & V & $I_{OH}=-200\mu A$ \\ + \hline + Output low voltage & $V_{OL}$ & & & 0.8 & V & $I_{OL}=-24mA$ \\ + & & & & 0.2 & V & $I_{OL}=-200\mu A$ \\ + \hline + Input current & $I_I$ & & & 20 & \textmu A & $V_I=5.5V$ \\ + & & & & 2 & \textmu A & $V_I=3.3V$ \\ + & & & & -10 & \textmu A & $V_I=0V$ \\ + \hline + Quiet output & & & & & & $C_L=50pF$, $R_L=500\Omega$, $T_A=25\degree C$\\ + \hspace{3mm} Maximum dynamic $V_{OL}$ & $V_{OLP}$ & & 0.8 & & V & \\ + \hspace{3mm} Minimum dynamic $V_{OL}$ & $V_{OLV}$ & & -0.8 & & V & \\ + \hline + Input/Output capacitance & $C_{I/O}$ & 8 & & & pF & 1 MHz frequency\\ + \thickhline +\end{tabularx} +\end{threeparttable} +\end{table} + +\newpage +\section{Example ARTIQ code} +The sections below demonstrate simple usage scenarios of the 2245 LVDS-TTL card with the ARTIQ control system. +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} + +\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} + +\newpage +\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} + +\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} + +\section{Ordering Information} +To order, please visit \url{https://m-labs.hk} and select the 2238 MCX-TTL in the ARTIQ Sinara crate configuration tool. The card may also be ordered separately by writing to \url{mailto:sales@m-labs.hk}. + +\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}