initial commit

This commit is contained in:
Sebastien Bourdeauducq 2021-07-19 16:49:16 +08:00
commit de4fd7bd0f
4 changed files with 355 additions and 0 deletions

226
2128.tex Normal file
View File

@ -0,0 +1,226 @@
\documentclass[10pt]{datasheet}
\usepackage{palatino}
\usepackage{textgreek}
\usepackage{minted}
\usepackage{tcolorbox}
\usepackage{etoolbox}
\BeforeBeginEnvironment{minted}{\begin{tcolorbox}[colback=white]}%
\AfterEndEnvironment{minted}{\end{tcolorbox}}%
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[english]{isodate}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{circuitikz}
\usetikzlibrary{calc}
\title{2128 SMA-TTL}
\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.}
\item{SMA connectors.}
\end{itemize}
\section{Applications}
\begin{itemize}
\item{Photon counting.}
\item{External equipment trigger.}
\item{Optical shutter control.}
\end{itemize}
\section{General Description}
The 2128 SMA-TTL card is a 4hp EEM module part of the ARTIQ Sinara family.
It adds general-purpose digital I/O capabilities to carrier cards such as 1124 Kasli and 1125 Kasli-SoC.
It provides two banks of four digital channels each, with SMA connectors.
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
\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)$);
\end{circuitikz}
\caption{Block diagram (TODO)}
\end{figure}
\begin{figure}[h]
\includegraphics[width=1.5in]{photo2128.jpg}
\caption{Card photo}
\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}
The sections below demonstrate simple usage scenarios of the 2128 SMA-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}
\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 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}.
\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}

BIN
artiq_sinara.pdf Normal file

Binary file not shown.

129
datasheet.cls Normal file
View File

@ -0,0 +1,129 @@
%% LaTeX document class for formatting electronics datasheets.
%%
%% Copyright 2020 Petteri Aimonen
%%
%% https://github.com/PetteriAimonen/latex-datasheet-template/
%%
%% --------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2003/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% This Current Maintainer of this work is Petteri Aimonen.
%%
%% This work consists of the file datasheet.cls and the example
%% document example.tex.
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{datasheet}[2020/11/13 LaTeX document class for datasheets]
% The class is based on the twocolumn article class.
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass[twocolumn]{article}
% Useful symbol and color definitions
\RequirePackage{gensymb}
\RequirePackage{xcolor}
% These packages allow full-width tables and combining cells in tables.
\RequirePackage{multirow}
\RequirePackage{multicol}
\RequirePackage{tabularx}
\RequirePackage{threeparttable}
% Align figure and table captions to left.
\RequirePackage[font=bf, skip=5pt, justification=raggedright, format=hang, singlelinecheck=off]{caption}
% Format hyperlinks as blue and set PDF title based on \title{} in the document.
\RequirePackage[pdfusetitle]{hyperref}
\hypersetup{
pdftex,
breaklinks=true,
colorlinks=true,
linkcolor=.,
urlcolor=blue
}
% Configure page margins
\RequirePackage{geometry}
\geometry{left=2cm, top=2cm, right=2cm, bottom=3cm}
% Command \companylogo{} can be used in document to specify a logo for the first page.
\gdef\@companylogo{}
\newcommand{\companylogo}[1]{\gdef\@companylogo{#1}}
% Command \revision{} can be used to include a document revision number in footer.
\gdef\@revision{}
\newcommand{\revision}[1]{\gdef\@revision{#1}}
% First page title layout is defined here
\renewcommand{\maketitle}{%
\twocolumn[%
{\@companylogo}\\
\vspace{1cm}\\
{\Huge\sffamily\bfseries\@title}\\
\noindent\rule{\textwidth}{1pt}
\medskip
]%
\pagestyle{normalpage}
\thispagestyle{firstpage}
}
% First page has footer but no header
\RequirePackage{fancyhdr}
\RequirePackage{lastpage}
\fancypagestyle{firstpage}{
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0.5pt}
\fancyfoot[L]{\@revision}
\fancyfoot[C]{\@date}
\fancyfoot[R]{Page \thepage\ of \pageref{LastPage}}
}
% Rest of the pages have both header and footer
\fancypagestyle{normalpage}{
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
\fancyhead[L]{\@author}
\fancyhead[C]{\slshape\@title}
\fancyhead[R]{\@date}
\fancyfoot[L]{\@revision}
\fancyfoot[C]{\@date}
\fancyfoot[R]{Page \thepage\ of \pageref{LastPage}}
}
% No line above footnotes
\renewcommand\footnoterule{}
% Section header size and spacing
\renewcommand{\section}{%
\@startsection
{section}{1}{0pt}{-3.5ex plus -2ex minus -1ex}%
{2.5ex plus .5ex}{\Large\bfseries\sffamily}%
}
% Spacing between paragraphs
\setlength{\parskip}{2ex plus 0.5ex minus 0.2ex}
\setlength{\parindent}{0pt}
% Spacing for tables.
% Other alternative is to use booktabs package, but I think normal LaTeX tables
% are more fitting in the usual data sheet style.
\renewcommand{\arraystretch}{1.5}
\newcommand{\thickhline}{\noalign {\ifnum 0=`}\fi \hrule height 1pt \futurelet \reserved@a \@xhline}
% No numbering for section titles
\setcounter{secnumdepth}{0}
\usepackage{titlesec}
\titlespacing*{\section}{0pt}{.2ex}{.2ex}
\titlespacing*{\subsection}{0pt}{.2ex}{.2ex}

BIN
photo2128.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB