2024-11-08 00:25:08 +08:00
\input { preamble.tex}
2024-10-23 02:34:00 +08:00
\graphicspath { { images/2238} { images} }
2024-11-08 00:25:08 +08:00
2022-01-03 17:21:05 +08:00
\title { 2238 MCX-TTL}
\author { M-Labs Limited}
\date { January 2022}
2022-01-19 15:34:54 +08:00
\revision { Revision 2}
2022-01-03 17:21:05 +08:00
\companylogo { \includegraphics [height=0.73in] { artiq_ sinara.pdf} }
\begin { document}
\maketitle
\section { Features}
\begin { itemize}
2024-11-08 00:25:08 +08:00
\item { 16 MCX-TTL channels}
\item { Input and output capable}
\item { No galvanic isolation}
\item { High speed and low jitter}
\item { MCX connectors}
2022-01-03 17:21:05 +08:00
\end { itemize}
\section { Applications}
\begin { itemize}
2024-11-08 00:25:08 +08:00
\item { Photon counting}
\item { External equipment trigger}
\item { Optical shutter control}
2022-01-03 17:21:05 +08:00
\end { itemize}
\section { General Description}
2024-11-08 00:25:08 +08:00
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.
2024-11-10 19:29:07 +08:00
Each card provides four banks of four digital channels each for a total of sixteen digital channels, with MCX connectors in the front panel, controlled through two EEM connectors. Each individual 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, and applies to all four channels of the bank.
2024-11-08 00:25:08 +08:00
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.
2022-01-03 17:21:05 +08:00
% 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} ]
% Node to pin-point the locations of MCX symbols
2022-01-07 13:57:17 +08:00
\draw [color=white, text=black] (-0.1, 0.7) 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) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx2) { } ;
\draw [color=white, text=black] (-0.1, -0.35) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx3) { } ;
\draw [color=white, text=black] (-0.1, -1.05) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx4) { } ;
\draw [color=white, text=black] (-0.1, -1.4) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx5) { } ;
\draw [color=white, text=black] (-0.1, -1.75) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx6) { } ;
\draw [color=white, text=black] (-0.1, -2.1) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx7) { } ;
\draw [color=white, text=black] (-0.1, -4.2) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx8) { } ;
\draw [color=white, text=black] (-0.1, -4.55) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx9) { } ;
\draw [color=white, text=black] (-0.1, -4.9) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx10) { } ;
\draw [color=white, text=black] (-0.1, -5.25) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx11) { } ;
\draw [color=white, text=black] (-0.1, -5.95) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx12) { } ;
\draw [color=white, text=black] (-0.1, -6.3) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx13) { } ;
\draw [color=white, text=black] (-0.1, -6.65) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx14) { } ;
\draw [color=white, text=black] (-0.1, -7) node[twoportshape, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (mcx15) { } ;
2022-01-03 17:21:05 +08:00
% Labels for IO 0-15
2022-01-07 13:57:17 +08:00
\node [label=left:\tiny { IO 0} ] at (0.35, 0.7) { } ;
\node [label=left:\tiny { IO 1} ] at (0.35, 0.35) { } ;
\node [label=left:\tiny { IO 2} ] at (0.35, 0) { } ;
\node [label=left:\tiny { IO 3} ] at (0.35, -0.35) { } ;
\node [label=left:\tiny { IO 4} ] at (0.35, -1.05) { } ;
\node [label=left:\tiny { IO 5} ] at (0.35, -1.4) { } ;
\node [label=left:\tiny { IO 6} ] at (0.35, -1.75) { } ;
\node [label=left:\tiny { IO 7} ] at (0.35, -2.1) { } ;
\node [label=left:\tiny { IO 8} ] at (0.35, -4.2) { } ;
\node [label=left:\tiny { IO 9} ] at (0.35, -4.55) { } ;
\node [label=left:\tiny { IO 10} ] at (0.35, -4.9) { } ;
\node [label=left:\tiny { IO 11} ] at (0.35, -5.25) { } ;
\node [label=left:\tiny { IO 12} ] at (0.35, -5.95) { } ;
\node [label=left:\tiny { IO 13} ] at (0.35, -6.3) { } ;
\node [label=left:\tiny { IO 14} ] at (0.35, -6.65) { } ;
\node [label=left:\tiny { IO 15} ] at (0.35, -7) { } ;
2022-01-03 17:21:05 +08:00
% Draw all female MCX connectors
% Bank 1
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=-10cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=-5cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=0cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=5cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=15cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=20cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=25cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=30cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=60cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=65cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=70cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=75cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=85cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=90cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=95cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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}
2022-01-07 13:57:17 +08:00
\begin { scope} [scale=0.07 , rotate=-90, xshift=100cm, yshift=2cm]
2022-01-03 17:21:05 +08:00
\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
2024-10-23 21:50:25 +08:00
\draw (3.25, -0.7) node[twoportshape,t=\fourcm { IO Bus} { Transceivers} , circuitikz/bipoles/twoport/width=3.2, scale=0.7, rotate=-90 ] (bus0) { } ;
\draw (3.25, -5.6) node[twoportshape,t=\fourcm { IO Bus} { Transceivers} , circuitikz/bipoles/twoport/width=3.2, scale=0.7, rotate=-90 ] (bus1) { } ;
2022-01-03 17:21:05 +08:00
% Draw termination switches
% Bus transceiver 0
2024-10-23 21:50:25 +08:00
\draw (1.7, 1.2) node[twoportshape,t=\fourcm { High-Z/50\textOmega } { Switch \phantom { ssssss} } , circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch0) { } ;
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.8cm, yshift=1.23cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.9cm, yshift=1.23cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=2.0cm, yshift=1.23cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=2.1cm, yshift=1.23cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
% Bus transceiver 1
2024-10-23 21:50:25 +08:00
\draw (1.5, -2.6) node[twoportshape,t=\fourcm { High-Z/50\textOmega } { Switch \phantom { ssssss} } , circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch1) { } ;
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.6cm, yshift=-2.57cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.7cm, yshift=-2.57cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.8cm, yshift=-2.57cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.9cm, yshift=-2.57cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
% Bus transceiver 2
2024-10-23 21:50:25 +08:00
\draw (1.7, -3.7) node[twoportshape,t=\fourcm { High-Z/50\textOmega } { Switch \phantom { ssssss} } , circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch2) { } ;
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.8cm, yshift=-3.67cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.9cm, yshift=-3.67cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=2cm, yshift=-3.67cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=2.1cm, yshift=-3.67cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
% Bus transceiver 3
2024-10-23 21:50:25 +08:00
\draw (1.5, -7.5) node[twoportshape,t=\fourcm { High-Z/50\textOmega } { Switch \phantom { ssssss} } , circuitikz/bipoles/twoport/width=2, scale=0.4] (termswitch3) { } ;
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.6cm, yshift=-7.47cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.7cm, yshift=-7.47cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.8cm, yshift=-7.47cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=1.9cm, yshift=-7.47cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2024-11-08 00:25:08 +08:00
% Connection termination switches to each IO line
2022-01-07 13:57:17 +08:00
% IO 0, 2, 4, 6
\draw [-] (1.4, 1) -- (1.4, 0.7);
\draw [-] (1.6, 1) -- (1.6, 0);
\draw [-] (1.8, 1) -- (1.8, -1.05);
\draw [-] (2, 1) -- (2, -1.75);
% IO 1, 3, 5, 7
\draw [-] (1.2, -2.4) -- (1.2, 0.35);
\draw [-] (1.4, -2.4) -- (1.4, -0.35);
\draw [-] (1.6, -2.4) -- (1.6, -1.4);
\draw [-] (1.8, -2.4) -- (1.8, -2.1);
% IO 8, 10, 12, 14
\draw [-] (1.4, -3.9) -- (1.4, -4.2);
\draw [-] (1.6, -3.9) -- (1.6, -4.9);
\draw [-] (1.8, -3.9) -- (1.8, -5.95);
\draw [-] (2, -3.9) -- (2, -6.65);
% IO 9, 11, 13, 15
\draw [-] (1.2, -7.3) -- (1.2, -4.55);
\draw [-] (1.4, -7.3) -- (1.4, -5.25);
\draw [-] (1.6, -7.3) -- (1.6, -6.3);
\draw [-] (1.8, -7.3) -- (1.8, -7);
% Connect I/Os to corresponding tranceivers
\draw [latexslim-latexslim] (mcx0) -- (2.9, 0.7);
\draw [latexslim-latexslim] (mcx1) -- (2.9, 0.35);
\draw [latexslim-latexslim] (mcx2) -- (2.9, 0);
\draw [latexslim-latexslim] (mcx3) -- (2.9, -0.35);
\draw [latexslim-latexslim] (mcx4) -- (2.9, -1.05);
\draw [latexslim-latexslim] (mcx5) -- (2.9, -1.4);
\draw [latexslim-latexslim] (mcx6) -- (2.9, -1.75);
\draw [latexslim-latexslim] (mcx7) -- (2.9, -2.1);
\draw [latexslim-latexslim] (mcx8) -- (2.9, -4.2);
\draw [latexslim-latexslim] (mcx9) -- (2.9, -4.55);
\draw [latexslim-latexslim] (mcx10) -- (2.9, -4.9);
\draw [latexslim-latexslim] (mcx11) -- (2.9, -5.25);
\draw [latexslim-latexslim] (mcx12) -- (2.9, -5.95);
\draw [latexslim-latexslim] (mcx13) -- (2.9, -6.3);
\draw [latexslim-latexslim] (mcx14) -- (2.9, -6.65);
\draw [latexslim-latexslim] (mcx15) -- (2.9, -7);
2022-01-03 17:21:05 +08:00
% Draw LVDS transceivers
2024-10-23 21:50:25 +08:00
\draw (5.05, -0.025) node[twoportshape,t={ \fourcm { LVDS} { Transceiver} } , circuitikz/bipoles/twoport/width=2, scale=0.5, rotate=-90 ] (lvds0) { } ;
\draw (5.05, -1.675) node[twoportshape,t={ \fourcm { LVDS} { Transceiver} } , circuitikz/bipoles/twoport/width=2, scale=0.5, rotate=-90 ] (lvds1) { } ;
\draw (5.05, -4.625) node[twoportshape,t={ \fourcm { LVDS} { Transceiver} } , circuitikz/bipoles/twoport/width=2, scale=0.5, rotate=-90 ] (lvds2) { } ;
\draw (5.05, -6.275) node[twoportshape,t={ \fourcm { LVDS} { Transceiver} } , circuitikz/bipoles/twoport/width=2, scale=0.5, rotate=-90 ] (lvds3) { } ;
2022-01-03 17:21:05 +08:00
% Aesthetic EEPROM at each end of LVDS transceivers
2022-01-07 13:57:17 +08:00
\draw (5.05, 1.1) node[twoportshape,t={ EEPROM} , circuitikz/bipoles/twoport/width=1.2, scale=0.5] (eeprom0) { } ;
\draw (5.05, -7.4) node[twoportshape,t={ EEPROM} , circuitikz/bipoles/twoport/width=1.2, scale=0.5] (eeprom1) { } ;
2022-01-03 17:21:05 +08:00
% I/O expander
2024-10-23 21:50:25 +08:00
\draw (6.65, -3.5) node[twoportshape,t=\fourcm { IO Expander} { for I2C Bus} , circuitikz/bipoles/twoport/width=1.8, scale=0.5] (i2c) { } ;
2022-01-03 17:21:05 +08:00
% I/O direction switches
2024-10-23 21:50:25 +08:00
\draw (5.05, -2.8) node[twoportshape,t=\fourcm { Per-bank \phantom { space} } { Input/Output Switch} , circuitikz/bipoles/twoport/width=2.7, scale=0.44] (ioswitch) { } ;
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=5.3cm, yshift=-2.57cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=5.4cm, yshift=-2.57cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=5.5cm, yshift=-2.57cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
2022-01-07 13:57:17 +08:00
\begin { scope} [xshift=5.6cm, yshift=-2.57cm, scale=0.12, every node/.style={ scale=0.1} , rotate=-90 ]
2022-01-03 17:21:05 +08:00
\draw (0.4,0) to[short,-o](0.75,0);
\draw (0.78,0)-- +(30:0.46);
2024-11-08 00:25:08 +08:00
\draw (1.25,0)to[short,o-](1.6,0);
2022-01-03 17:21:05 +08:00
\end { scope}
% EEM Ports
2022-01-07 13:57:17 +08:00
\draw (6.65, -0.5) node[twoportshape, t={ EEM Port 0} , circuitikz/bipoles/twoport/width=3.6, scale=0.7, rotate=-90] (eem0) { } ;
\draw (6.65, -5.8) node[twoportshape, t={ EEM Port 1} , circuitikz/bipoles/twoport/width=3.6, scale=0.7, rotate=-90] (eem1) { } ;
2022-01-03 17:21:05 +08:00
2022-01-07 13:57:17 +08:00
% Connect I/O expander & direction switches to bus transceivers block
% The transceivers had been grouped up, there is no need to label I/O direction indices anymore
% It might still be useful to identify the direction line itself, though
\draw [latexslim-] (i2c.west) -- (3.25, -3.5);
\draw [-] (ioswitch.south) -- (5.05, -3.5);
\draw [latexslim-latexslim] (bus0.east) -- (bus1.west);
\node [label=center:\tiny { IO Direction} ] at (4.1, -3.4) { } ;
2022-01-03 17:21:05 +08:00
% Connect LVDS transceivers to bus transceivers, with labelling
2022-01-07 13:57:17 +08:00
\draw [latexslim-latexslim] (lvds0.south) -- (3.6, -0.025);
\node [label=center:\tiny { EEM} ] at (4.2, 0.075) { } ;
\node [label=center:\tiny { 0..3} ] at (4.2, -0.125) { } ;
\draw [latexslim-latexslim] (lvds1.south) -- (3.6, -1.675);
\node [label=center:\tiny { EEM} ] at (4.2, -1.575) { } ;
\node [label=center:\tiny { 4..7} ] at (4.2, -1.775) { } ;
\draw [latexslim-latexslim] (lvds2.south) -- (3.6, -4.625);
\node [label=center:\tiny { EEM} ] at (4.2, -4.525) { } ;
\node [label=center:\tiny { 8..11} ] at (4.2, -4.725) { } ;
\draw [latexslim-latexslim] (lvds3.south) -- (3.6, -6.275);
\node [label=center:\tiny { EEM} ] at (4.2, -6.175) { } ;
\node [label=center:\tiny { 12..15} ] at (4.2, -6.375) { } ;
2022-01-03 17:21:05 +08:00
% Connect EEM0 & EEM1
2022-01-07 13:57:17 +08:00
\draw [latexslim-latexslim] (lvds0.north) -- (6.3, -0.025);
\draw [latexslim-latexslim] (lvds1.north) -- (6.3, -1.675);
\draw [latexslim-latexslim] (lvds2.north) -- (6.3, -4.625);
\draw [latexslim-latexslim] (lvds3.north) -- (6.3, -6.275);
\draw [latexslim-latexslim] (eeprom0.east) -- (6.3, 1.1);
\draw [latexslim-latexslim] (eeprom1.east) -- (6.3, -7.4);
2022-01-03 17:21:05 +08:00
\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.
2022-01-07 13:57:17 +08:00
\node [label={ center:\tiny { Channels from the same bank} } ] at (1.4, -3.05) { } ;
\node [label={ center:\tiny { must have the same IO direction.} } ] at (1.4, -3.25) { } ;
2022-01-03 17:21:05 +08:00
\end { circuitikz}
}
\caption { Simplified Block Diagram}
\end { figure}
\begin { figure} [hbt!]
\centering
2022-01-25 15:54:23 +08:00
\includegraphics [height=2in] { photo2238.jpg}
2024-11-08 00:25:08 +08:00
\caption { MCX-TTL card}
\includegraphics [angle=90, height=0.6in] { DIO_ MCX_ FP.pdf}
\caption { MCX-TTL front panel}
2022-01-03 17:21:05 +08:00
\end { figure}
% For wide tables, a single column layout is better. It can be switched
% page-by-page.
\onecolumn
2024-11-08 00:25:08 +08:00
\sourcesection { 2238 MCX-TTL} { https://github.com/sinara-hw/DIO_ MCX/wiki}
2022-01-03 17:21:05 +08:00
\section { Electrical Specifications}
2022-01-14 14:09:25 +08:00
2024-11-08 00:25:08 +08:00
All specifications are in $ - 40 \degree C \leq T _ A \leq 85 \degree C $ unless otherwise noted. Information in this section is based on the datasheet of the bus transceiver IC (74LVT162245MTD\footnote { \label { transceiver} \url { https://www.onsemi.com/pdf/datasheet/74lvt162245-d.pdf} } ).
2022-01-14 14:09:25 +08:00
2022-01-03 17:21:05 +08:00
\begin { table} [h]
\begin { threeparttable}
\caption { Recommended Operating Conditions}
2024-11-08 00:25:08 +08:00
\begin { tabularx} { \textwidth } { l | c c c | c | X}
2022-01-03 17:21:05 +08:00
\thickhline
2024-11-08 00:25:08 +08:00
\textbf { Parameter} & \textbf { Min.} & \textbf { Typ.} & \textbf { Max.} &
2022-01-03 17:21:05 +08:00
\textbf { Unit} & \textbf { Conditions} \\
\hline
2024-11-08 00:25:08 +08:00
Input voltage & 0 & & 5.5* & V \\
2022-01-03 17:21:05 +08:00
\hline
2024-11-08 00:25:08 +08:00
High-level output current & & & -24 & mA \\
2022-01-03 17:21:05 +08:00
\hline
2024-11-08 00:25:08 +08:00
Low-level output current & & & 24 & mA \\
2022-01-03 17:21:05 +08:00
\hline
2024-11-08 00:25:08 +08:00
Input edge rate & & & 10 & ns/V & $ 0 . 8 V \leq V _ I \leq 2 . 0 V $ \\
2022-01-03 17:21:05 +08:00
\thickhline
2024-11-08 00:25:08 +08:00
\multicolumn { 6} { l} { *With the 50\textOmega ~termination enabled, the input voltage should not exceed 5V.}
2022-01-03 17:21:05 +08:00
\end { tabularx}
\end { threeparttable}
\end { table}
\begin { table} [h]
\begin { threeparttable}
\caption { Electrical Characteristics}
2024-11-08 00:25:08 +08:00
\begin { tabularx} { \textwidth } { l | c c c | c | X}
2022-01-03 17:21:05 +08:00
\thickhline
2024-11-08 00:25:08 +08:00
\textbf { Parameter} & \textbf { Min.} & \textbf { Typ.} & \textbf { Max.} &
2022-01-03 17:21:05 +08:00
\textbf { Unit} & \textbf { Conditions} \\
\hline
2024-11-08 00:25:08 +08:00
Input clamp diode voltage & & & -1.2 & V & $ I _ I = - 36 mA $ \\
2022-01-03 17:21:05 +08:00
\hline
2024-11-08 00:25:08 +08:00
Input high voltage & 2.0 & & & V & \\
2022-01-03 17:21:05 +08:00
\hline
2024-11-08 00:25:08 +08:00
Input low voltage & & & 0.8 & V & \\
2022-01-03 17:21:05 +08:00
\hline
2024-11-08 00:25:08 +08:00
Output high voltage & 2.0 & & & V & $ I _ { OH } = - 24 mA $ \\
& 3.1 & & & V & $ I _ { OH } = - 200 \mu A $ \\
2022-01-03 17:21:05 +08:00
\hline
2024-11-08 00:25:08 +08:00
Output low voltage & & & 0.8 & V & $ I _ { OL } = - 24 mA $ \\
& & & 0.2 & V & $ I _ { OL } = - 200 \mu A $ \\
2022-01-03 17:21:05 +08:00
\hline
2024-11-08 00:25:08 +08:00
Input current & & & 20 & \textmu A & $ V _ I = 5 . 5 V $ \\
& & & 2 & \textmu A & $ V _ I = 3 . 3 V $ \\
& & & -10 & \textmu A & $ V _ I = 0 V $ \\
2022-01-03 17:21:05 +08:00
\thickhline
\end { tabularx}
\end { threeparttable}
\end { table}
2022-01-18 12:10:11 +08:00
\newpage
2022-01-11 16:56:29 +08:00
\section { Configuring IO Direction \& Termination}
2024-11-08 00:25:08 +08:00
IO direction and termination must be configured by switches. The termination switches are found at the top and the IO direction switches at the middle of the card respectively.
2022-01-11 16:56:29 +08:00
\begin { multicols} { 2}
2024-11-08 00:25:08 +08:00
Termination switches between high impedence (OFF) and 50\textOmega ~(ON). Note that termination switches are by-channel but IO direction switches are by-bank.
2022-01-11 16:56:29 +08:00
\begin { itemize}
\itemsep 0em
2024-11-08 00:25:08 +08:00
\item IO direction switch closed (\texttt { ON} ) \\
Fixes the corresponding bank to output. The IO direction cannot be changed by I\textsuperscript { 2} C.
\item IO direction switch open (OFF) \\
The corresponding bank is set to input by default. IO direction \textit { can} be changed by I\textsuperscript { 2} C.
2022-01-11 16:56:29 +08:00
\end { itemize}
\columnbreak
\begin { center}
\centering
2022-01-14 14:09:25 +08:00
\includegraphics [height=1.7in] { mcx_ ttl_ switches.jpg}
2022-01-11 16:56:29 +08:00
\captionof { figure} { Position of switches}
\end { center}
\end { multicols}
2022-01-03 17:21:05 +08:00
\newpage
\section { Example ARTIQ code}
2024-11-08 00:25:08 +08:00
\codesection { 2238 MCX-TTL card}
2022-01-03 17:21:05 +08:00
2024-11-08 00:25:08 +08:00
Timing accuracy in these examples is well under 1 nanosecond thanks to ARTIQ RTIO infrastructure.
2022-01-03 17:21:05 +08:00
\subsection { One pulse per second}
The channel should be configured as output in both the gateware and hardware.
2022-01-20 14:58:40 +08:00
\inputcolorboxminted { firstline=9,lastline=14} { examples/ttl.py}
2022-01-03 17:21:05 +08:00
\subsection { Morse code}
This example demonstrates some basic algorithmic features of the ARTIQ-Python language.
2022-01-20 14:58:40 +08:00
\inputcolorboxminted { firstline=22,lastline=39} { examples/ttl.py}
2022-01-03 17:21:05 +08:00
\newpage
2024-11-08 00:25:08 +08:00
\subsection { Edge counting in an 1ms window}
The channel should be configured as input in both gateware and hardware.
2022-01-20 14:58:40 +08:00
\inputcolorboxminted { firstline=47,lastline=52} { examples/ttl.py}
2022-01-03 17:21:05 +08:00
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:
2022-01-20 14:58:40 +08:00
\inputcolorboxminted { firstline=60,lastline=65} { examples/ttl.py}
2022-01-03 17:21:05 +08:00
\subsection { Responding to an external trigger}
One channel needs to be configured as input, and the other as output.
2022-01-20 14:58:40 +08:00
\inputcolorboxminted { firstline=74,lastline=80} { examples/ttl.py}
2022-01-03 17:21:05 +08:00
2024-11-08 00:25:08 +08:00
\ordersection { 2238 MCX-TTL}
2022-01-03 17:21:05 +08:00
2024-11-08 00:25:08 +08:00
\finalfootnote
2022-01-03 17:21:05 +08:00
\end { document}