From 6b24b54f6081fbcf8ed2b8eb0ce5cbada23d06f1 Mon Sep 17 00:00:00 2001 From: occheung Date: Tue, 11 Jan 2022 16:56:29 +0800 Subject: [PATCH] ttl: add switch desc section Closes #20. Closes #22. --- 2118-2128.tex | 33 +++++++++++++++++++++++++++++++-- 2238.tex | 22 ++++++++++++++++++++++ 2245.tex | 27 +++++++++++++++++++++++---- bnc_ttl_switches.jpg | Bin 0 -> 268353 bytes lvds_ttl_switches.jpg | Bin 0 -> 326190 bytes mcx_ttl_switches.jpg | Bin 0 -> 196231 bytes sma_ttl_switches.jpg | Bin 0 -> 123396 bytes 7 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 bnc_ttl_switches.jpg create mode 100644 lvds_ttl_switches.jpg create mode 100644 mcx_ttl_switches.jpg create mode 100644 sma_ttl_switches.jpg diff --git a/2118-2128.tex b/2118-2128.tex index f077903..928f9f4 100644 --- a/2118-2128.tex +++ b/2118-2128.tex @@ -19,6 +19,7 @@ \usepackage{tikz} \usepackage{pgfplots} \usepackage{circuitikz} +\usepackage{pifont} \usetikzlibrary{calc} \usetikzlibrary{fit,backgrounds} @@ -395,6 +396,32 @@ All specifications are in $0\degree C \leq T_A \leq 70\degree C$ unless otherwis \newpage +\section{Configuring IO Direction \& Termination} +The termination and IO direction can be configured by switches. +The per-channel termination and per-bank IO direction switches are found at the middle-left and middle-right of both cards respectively. + +Termination switches selects the termination of each channel, between high impedence (OFF) and 50\textOmega~(ON). + +IO direction switches partly decides the IO direction of each bank. +\begin{itemize} + \itemsep0em + \item Closed switch (ON) \\ + Fix the corresponding bank to output. The direction cannot be changed by I\textsuperscript{2}C. + \item Opened switch (OFF) \\ + Leave the direction configurable by I\textsuperscript{2}C. +\end{itemize} + +\begin{figure}[hbt!] + \centering + \subfloat[\centering BNC-TTL]{{ + \includegraphics[height=1.5in]{bnc_ttl_switches.jpg} + }}% + \subfloat[\centering SMA-TTL]{{ + \includegraphics[height=1.5in]{sma_ttl_switches.jpg} + }}% + \caption{Position of switches}% +\end{figure} + \section{Example ARTIQ code} The sections below demonstrate simple usage scenarios of the 2118 BNC-TTL/2128 SMA-TTL card with the ARTIQ control system. They do not exhaustively demonstrate all the features of the ARTIQ system. @@ -414,6 +441,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} @@ -437,8 +466,6 @@ def run(self): 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. @@ -462,6 +489,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/2238.tex b/2238.tex index 4ce0e12..ff9a792 100644 --- a/2238.tex +++ b/2238.tex @@ -524,6 +524,28 @@ All specifications are in the recommended operating temperature range unless oth \end{threeparttable} \end{table} +\section{Configuring IO Direction \& Termination} +The termination and IO direction can be configured by switches. +The per-channel termination and per-bank IO direction switches are found at the top and middle of the card respectively. +\begin{multicols}{2} +Termination switches selects the termination of each channel, between high impedence (OFF) and 50\textOmega~(ON). + +IO direction switches partly decides the IO direction of each bank. +\begin{itemize} + \itemsep0em + \item Closed switch (ON) \\ + Fix the corresponding bank to output. The direction cannot be changed by I\textsuperscript{2}C. + \item Opened switch (OFF) \\ + Leave the direction configurable by I\textsuperscript{2}C. +\end{itemize} +\columnbreak +\begin{center} + \centering + \includegraphics[height=1.8in]{mcx_ttl_switches.jpg} + \captionof{figure}{Position of switches} +\end{center} +\end{multicols} + \newpage \section{Example ARTIQ code} The sections below demonstrate simple usage scenarios of the 2245 LVDS-TTL card with the ARTIQ control system. diff --git a/2245.tex b/2245.tex index 895a903..eadf145 100644 --- a/2245.tex +++ b/2245.tex @@ -443,6 +443,27 @@ All typical values of AC specifications are at $T_A = 25\degree C$, $V_{ID} = 30 \end{threeparttable} \end{table} +\section{Configuring IO Direction \& Termination} +The IO direction can be configured by switches, which are found at the top of the card. +\begin{multicols}{2} +IO direction switches partly decides the IO direction of each bank. +\begin{itemize} + \itemsep0em + \item Closed switch (ON) \\ + Fix the corresponding channel to output. The direction cannot be changed by I\textsuperscript{2}C. + \item Opened switch (OFF) \\ + Leave the direction configurable by I\textsuperscript{2}C. +\end{itemize} +\columnbreak +\begin{center} + \centering + \includegraphics[height=1.5in]{lvds_ttl_switches.jpg} + \captionof{figure}{Position of switches} +\end{center} +\end{multicols} + +\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. @@ -462,8 +483,6 @@ 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} @@ -487,6 +506,8 @@ def run(self): 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. @@ -510,8 +531,6 @@ 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/bnc_ttl_switches.jpg b/bnc_ttl_switches.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4e045d56fb317147059095c4b1bd19eb4b0ce7c GIT binary patch literal 268353 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