diff --git a/2128.pdf b/2128.pdf new file mode 100644 index 0000000..c066a4f Binary files /dev/null and b/2128.pdf differ diff --git a/2128.tex b/2128.tex index bcdc8f1..121fd61 100644 --- a/2128.tex +++ b/2128.tex @@ -7,15 +7,20 @@ \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{subfigure} + \usepackage{tikz} \usepackage{pgfplots} \usepackage{circuitikz} \usetikzlibrary{calc} +\usetikzlibrary{fit,backgrounds} \title{2128 SMA-TTL} \author{M-Labs Limited} @@ -59,28 +64,266 @@ The card support a minimum pulse width of 3ns. % 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] - \begin{circuitikz}[european] - \node[op amp] (amp1) {}; - \node[op amp, below = 0.5cm, xscale = -1] (amp2) {}; - \draw (amp1.out) |- (amp2.-); - \draw (amp2.-) ++(0, 0.3cm) node[circ]{} to +(2,0) node[above left]{5}; - \draw (amp2.out) to (amp1.+); - \draw (amp1.+) ++(0, -0.3cm) node[circ]{} to +(-2,0) node[above right]{2}; - \draw (amp1.-) to +(-2,0) node[above right]{1}; - \draw (amp2.+) to +(2,0) node[above left]{4}; - \draw (amp1.out) +(0,0.5cm) node (Vdd) {$\mathrm{V_{DD}}$}; - \draw (Vdd.east) to +(1.5,0) node [above left]{6}; - \draw (amp2.out) +(0,-0.5cm) node (Vss) {$\mathrm{V_{SS}}$}; - \draw (Vss.west) to +(-1.6,0) node [above right]{3}; - \draw ($(amp1.north west) + (-0.5,0.5)$) rectangle ($(amp2.south west) + (0.5,-0.5)$); + \centering + \scalebox{0.88}{ + \begin{circuitikz}[european, scale=0.95, every label/.append style={align=center}] + + \begin{scope}[yshift=1.3cm] + + \draw[color=white, text=black] (-0.1,0) node[twoportshape,t={SMA 0}, circuitikz/bipoles/twoport/width=1.2, scale=0.4] (sma0) {}; + \draw[color=white, text=black] (-0.1,-0.7) node[twoportshape,t={SMA 1}, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (sma1) {}; + \draw[color=white, text=black] (-0.1,-1.4) node[twoportshape,t={SMA 2}, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (sma2) {}; + \draw[color=white, text=black] (-0.1,-2.1) node[twoportshape,t={SMA 3}, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (sma3) {}; + + \node [label={[xshift=-0.18cm, yshift=-0.305cm]\tiny{SMA 0}}] {}; + \node [label={[xshift=-0.18cm, yshift=-0.97cm]\tiny{SMA 1}}] {}; + \node [label={[xshift=-0.18cm, yshift=-1.64cm]\tiny{SMA 2}}] {}; + \node [label={[xshift=-0.18cm, yshift=-2.302cm]\tiny{SMA 3}}] {}; + + % 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] + \draw[color=white, text=black] (-0.1,0) node[twoportshape,t={SMA 4}, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (sma4) {}; + \draw[color=white, text=black] (-0.1,-0.7) node[twoportshape,t={SMA 5}, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (sma5) {}; + \draw[color=white, text=black] (-0.1,-1.4) node[twoportshape,t={SMA 6}, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (sma6) {}; + \draw[color=white, text=black] (-0.1,-2.1) node[twoportshape,t={SMA 7}, circuitikz/bipoles/twoport/width=1.2, scale=0.4 ] (sma7) {}; + + \node [label={[xshift=-0.18cm, yshift=-0.305cm]\tiny{SMA 4}}] {}; + \node [label={[xshift=-0.18cm, yshift=-0.97cm]\tiny{SMA 5}}] {}; + \node [label={[xshift=-0.18cm, yshift=-1.64cm]\tiny{SMA 6}}] {}; + \node [label={[xshift=-0.18cm, yshift=-2.302cm]\tiny{SMA 7}}] {}; + + % 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 + \draw [latexslim-latexslim] (sma0.east) -- ++(1,0); + \draw [latexslim-latexslim] (sma1.east) -- ++(1,0); + \draw [latexslim-latexslim] (sma2.east) -- ++(1,0); + \draw [latexslim-latexslim] (sma3.east) -- ++(1,0); + \draw [latexslim-latexslim] (sma4.east) -- ++(1,0); + \draw [latexslim-latexslim] (sma5.east) -- ++(1,0); + \draw [latexslim-latexslim] (sma6.east) -- ++(1,0); + \draw [latexslim-latexslim] (sma7.east) -- ++(1,0); + + \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) ; + + \node[draw, dotted, thick, rounded corners, inner xsep=0.7em, inner ysep=0.4em, fit=(sma0) (i2ciso1.south west)] (box1) {}; + \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 }}; + + + \node[draw, dotted, thick, rounded corners, inner xsep=0.7em, inner ysep=0.4em, fit=(sma4)(termswitch2) (iso8.south west)] (box2) {}; + \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 }}; + \end{circuitikz} - \caption{Block diagram (TODO)} + } + + \caption{Simplified Block Diagram} \end{figure} \begin{figure}[h] - \includegraphics[width=1.5in]{photo2128.jpg} - \caption{Card photo} + \centering + \includegraphics[width=1.18in]{photo2128.jpg} + \caption{SMA-TTL Card photo} \end{figure} % For wide tables, a single column layout is better. It can be switched @@ -153,6 +396,8 @@ def run(self): delay(500*ms) \end{minted} +\newpage + \subsection{Morse code} This example demonstrates some basic algorithmic features of the ARTIQ-Python language. \begin{minted}{python} @@ -199,6 +444,8 @@ def run(self): print(counts) \end{minted} +\newpage + \subsection{Responding to an external trigger} One channel needs to be configured as input, and the other as output. diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..0c11f5d --- /dev/null +++ b/shell.nix @@ -0,0 +1,44 @@ +let + pkgs = import {}; +in + pkgs.mkShell { + buildInputs = [ + + #pkgs.texlive.combined.scheme-small + + (pkgs.texlive.combine { + inherit (pkgs.texlive) + scheme-small + collection-latexextra + collection-fontsextra + collection-fontsrecommended + palatino + textgreek + minted + tcolorbox + etoolbox + maths-symbols + greek-inputenc + babel + isodate + pst-graphicx + visualtikz + quantikz + tikz-feynman + pgfplots + cbfonts-fd + cbfonts + mathpazo + helvetic + circuitikz ; + + # To compile, call: + # $ pdflatex -shell-escape xxx.tex + # if missing packages, you can search if the required tex packages is in nixpkgs or not from here + # https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/tools/typesetting/tex/texlive/pkgs.nix + # if available, just add it to the above list + + }) + ]; + } +