\documentclass[english,a4paper,10pt]{article} \usepackage{fontspec} \usepackage[bookmarks=true,bookmarksopen=true,colorlinks=true,hyperfootnotes=false,filecolor=black,linkcolor=blue,urlcolor=blue,pdfauthor={Robert Blazek},pdftitle={pinouTikz},pdfsubject={package for strings of tokens},pdfkeywords={pinouTikz,latex,chip,pinout},pdfcreator={LaTeX}]{hyperref} \usepackage[margin=1.9cm]{geometry} \usepackage{libertine} \usepackage[scale=0.85]{noto-mono} \usepackage[bottom]{footmisc} \usepackage{amsmath,amssymb,amsfonts,color,eurosym,xspace,babel,listings} \usepackage{pinoutikz} \makeatletter \definecolor{@xs@bckgcolor}{rgb}{0.9,1,1} \definecolor{@xs@keywordspinouTikz}{rgb}{0,0,0.9} \definecolor{@xs@keywordslatex}{rgb}{1,0,0} \definecolor{@xs@arguments}{rgb}{0,0,0} \definecolor{@xs@comments}{rgb}{0.5,0.5,0.5} \definecolor{violet}{rgb}{0.66,0,0.66} \lstset{% language=[AlLaTeX]TeX,% morekeywords={numexpr,detokenize},% float=hbp,% basicstyle=\small\ttfamily,% identifierstyle=\color{@xs@arguments},% keywordstyle=\color{@xs@keywordslatex},% commentstyle=\itshape\color{@xs@comments},% columns=fixed,% tabsize=4,% frame=single,% extendedchars=true,% showspaces=false,% showstringspaces=false,% numbers=left,% numberstyle=\tiny\ttfamily,% breaklines=true,% breakindent=3em,% backgroundcolor=\color{@xs@bckgcolor},% breakautoindent=true,% captionpos=t,% xleftmargin=1em,% xrightmargin=1em,% lineskip=0pt,% numbersep=1em,% classoffset=1,% morekeywords={% macros and commands of pinouTikz PDIP,% pctPDIP,% PLCC,% pctPLCC,% TQFP,% pctTQFP,% SOP},% keywordstyle=\color{@xs@keywordspinouTikz},% classoffset=0} \makeatother \newcommand\guill[1]{"#1"} \newcommand\argu[1]{$\langle$\textit{#1}$\rangle$} \newcommand\ARGU[1]{\texttt{\{}\argu{#1}\texttt{\}}} \newcommand\arguC[1]{\texttt{[}\argu{#1}\texttt{]}} \newcommand\arguCC[2]{\texttt{[}\argu{#1}{,}\argu{#2}\texttt{]}} \newcommand\arguD[1]{\texttt{(}\argu{#1}\texttt{)}} \newcommand\texte[1]{\texttt{text}${}_{#1}$} \newcommand\etoile{$\langle$\texttt{[*]}$\rangle$} \newenvironment{Conditions}[1][1cm]% {\begin{list}% {$\vartriangleright$}% {\setlength{\leftmargin}{#1} \setlength{\itemsep}{0pt} \setlength{\parsep}{0pt} \setlength{\topsep}{2ptplus3ptminus2pt} }}% {\end{list}} \renewcommand\th{${}^\text{th}$\xspace} \newcommand\US{syntax unit\xspace} \newcommand\USs{syntax units\xspace} \newcommand\pinouTikz{\textsf{pinouTikz}\xspace} \newcommand\styleexemple{\small\baselineskip1.03\baselineskip\vskip\baselineskip\relax} \newcommand\styleexercice{\footnotesize} \newcommand\verbinline{\lstinline[basicstyle=\normalsize\ttfamily]} \newcommand\colorise{\color{violet}} \begin{document} \setlength{\parindent}{0pt} \begin{titlepage} \null\par\vfill \begin{center} \begin{minipage}{0.75\linewidth} \begin{center} \Huge\bfseries \pinoutikzname\par\vspace{5pt} \small v\pinoutikzversion\par\vspace{25pt} \normalsize User's manual \end{center} \end{minipage} \end{center} \vspace{1cm} \begin{center} Robert {\sc Blazek}\par\small \href{mailto:robert.h.blazek@gmail.com}{\nolinkurl{robert.h.blazek@gmail.com}}\par\vspace{5pt} %\xstringenglishdate \end{center} \vfill\hrulefill \begin{center} \begin{minipage}{0.85\linewidth} \noindent \hfill\textbf{\textit{Abstract}}\hfill{}\medskip\par This package which requires $\varepsilon$-\TeX{}, provides macros for creating pinout diagrams of chips. \end{minipage} \end{center} \hrulefill\vfill{} \end{titlepage} \tableofcontents \section{Introduction} \subsection{Description} This package defines macros for generating symbolic pinout diagrams for different package classes, such as DIP, PLCC, etc. \subsection{Motivation} Whoever has ever had to do with FPGA or MCUs (whether for living or leisure), it's just natural he or she might have been in a need to document some pins. So was my case and since I failed in finding any package in \LaTeX{} to suit my needs, I opted for creating one myself. I hope others will find it as useful as it was to me and my colleagues. This is my first latex package documentation ever - and since I hate reinventing the wheel - this manual has been based upon that of \textbf{xstrings} - with the courtesy of the author, of course. \section{The macros} For a better understanding, let's see first the macros with the simpler arguments possible. No special catcode, no exotic token, no control sequence either: only alphanumeric chars will be contained in the arguments.\medskip In the following chapters, all the macros will be presented this way: \begin{itemize} \item a short description of the operation; \item the operation under special conditions. For each conditions considered, the operation described has priority on that (those) below; \item finally, several examples are given. I tried to find them most easily comprehensible and most representative of the situations met in normal use. \end{itemize}\smallskip \textbf{Important}: in the following, a \argu{number} can be an integer written with numeric chars, a counter, or the result of an arithmetic operation made with the command \verbinline|\numexpr|.\smallskip All the macros of \pinouTikz are displayed in {\makeatletter\color{@xs@keywordspinouTikz}blue}. \subsection{The pinout diagrams} \subsubsection{\ttfamily\textbackslash PDIP} \verbinline|\PDIP|\arguD{pincount}\ARGU{pinarray} \smallskip Draws a PDIP package with generic number of pins, as a standalone glyph. \verbinline|\pctPDIP|\arguD{pincount}\ARGU{pinarray} \smallskip Draws a PDIP package with generic number of pins, as a picture sub-element. \begin{itemize} \item \argu{pincount} the number of pins of a DIP package and should be an even number. \item \ARGU{pinarray} is a comma-separated list of pins - each pin definition is as follows: \argu{pinnumber}/\ARGU{pinlabel}. \end{itemize} %% 4-pin example, as a glyph \begin{lstlisting} \begin{figure} \centering \PDIP(4){% 1/{E},2/B,3/NC,4/C} \caption{NPN-Transistor, 4-pin PDIP package, as a glyph} \label{fig:X_DIP4} \end{figure} \end{lstlisting}% %% 4-pin example \begin{figure}[ht!] \centering \PDIP(4){% 1/{E}, 2/B, 3/NC, 4/C }% \caption{NPN-Transistor, 4-pin PDIP package, as a glyph} \label{fig:X_DIP4} \end{figure} %% 4-pin example, within a picture \begin{lstlisting} \begin{figure}[ht!] \centering \begin{tikzpicture} % an arbitrary picture laid over the PDIP diagram \draw[thick,rounded corners=8pt](0,0)-- (0,2)-- (1,3.25)-- (2,2)-- (2,0)-- (0,2)-- (2,2)-- (0,0); % a PDIP diagram itself \pctPDIP(4){% 1/{E}, 2/B, 3/NC, 4/C }% % a PDIP diagram itself \begin{scope}[shift={(3.5,0.5)}] \pctPDIP(4){% 1/{E}, 2/B, 3/NC, 4/C }% \end{scope} \end{tikzpicture} \caption{NPN-Transistor, 4-pin PDIP package, placed within another picture, twice} \label{fig:X_DIP8} \end{figure} \end{lstlisting}% %% 4-pin example, within a picture \begin{figure}[ht!] \centering \begin{tikzpicture} % an arbitrary picture laid over the PDIP diagram \draw[thick,rounded corners=8pt](0,0)-- (0,2)-- (1,3.25)-- (2,2)-- (2,0)-- (0,2)-- (2,2)-- (0,0); % a PDIP diagram itself \pctPDIP(4){% 1/{E}, 2/B, 3/NC, 4/C }% % a PDIP diagram itself \begin{scope}[shift={(3.5,0.5)}] \pctPDIP(4){% 1/{E}, 2/B, 3/NC, 4/C }% \end{scope} \end{tikzpicture} \caption{NPN-Transistor, 4-pin PDIP package, placed within another picture, twice} \label{fig:X_DIP8} \end{figure} %% 8-pin example %\begin{minipage}[t]{0.65\linewidth} \begin{lstlisting} \begin{figure} \centering \PDIP(8){% 1/CLK, 2/A, 3/B, 4/GND, 5/Y, 6/{\FormatPinLabel{~Y~}/RESET}, 7/NC, 8/$V_{cc}$% } \caption{TTL logic chip, 8-pin PDIP package, as a glyph} \label{fig:X_DIP8} \end{figure} \end{lstlisting}% %% 8-pin example \begin{figure}[ht!] \centering \PDIP(8){% 1/CLK, 2/A, 3/B, 4/GND, 5/Y, 6/{\FormatPinLabel{~Y~}/RESET}, 7/NC, 8/$V_{cc}$% } \caption{TTL logic chip, 8-pin PDIP package, as a glyph} \label{fig:X_DIP8} \end{figure} %\end{minipage}\hfill %% 14-pin example \begin{figure}[ht!] \centering \PDIP(14){% 1/A1, 2/B1, 3/\FormatPinLabel{\#1 AND/~OR~/GPIO1}, 4/Y1, 5/C1, 6/\FormatPinLabel{\#2 AND/~OR~/GPIO2}, 7/GND, 8/PCLK, 9/PDAT, 10/A2, 11/B2, 12/\FormatPinLabel{\#2 INV/~SME~/GPIO3}, 13/C2, 14/$V_{cc}$} \caption{Generic programmable TTL logic chip, 14-pin PDIP package} \label{fig:X_DIP14} \end{figure} %% 14-pin example \begin{minipage}[t]{0.65\linewidth} \begin{lstlisting} \begin{figure}[ht!] \centering \PDIP(14){% 1/A1, 2/B1, 3/\FormatPinLabel{\#1 AND/~OR~/GPIO1}, 4/Y1, 5/C1, 6/\FormatPinLabel{\#2 AND/~OR~/GPIO2}, 7/GND, 8/PCLK, 9/PDAT, 10/A2, 11/B2, 12/\FormatPinLabel{\#2 INV/~SME~/GPIO3}, 13/C2, 14/$V_{cc}$} \caption{Generic programmable TTL logic chip, 14-pin PDIP package} \label{fig:X_DIP14} \end{figure} \end{lstlisting}% \end{minipage}\hfill \subsubsection{\ttfamily\textbackslash TQFP} \verbinline|\TQFP|\arguD{pinnumber}\ARGU{pinarray} \smallskip Draws a TQFP package with generic number of pins, as a standalone glyph. \verbinline|\pctTQFP|\arguD{pinnumber}\ARGU{pinarray} \smallskip Draws a TQFP package with generic number of pins, as a picture sub-element. \begin{itemize} \item \argu{pincount} the number of pins of a DIP package and should be an even number. \item \ARGU{pinarray} is a comma-separated list of pins - each pin definition is as follows: \argu{pinnumber}/\ARGU{pinlabel}. \end{itemize} %% 32-pin TQFP example \begin{minipage}[t]{0.65\linewidth} \begin{lstlisting} \begin{figure}[ht!] \centering \TQFP(32){% 1/{PD.0/RTX1}, 2/{PA.0/STX1}, 3/PA.1, 4/PA.2, 5/PA.3, 6/PA.4, 7/PA.5, 8/GND, 9/PA.6, 10/PA.7, 11/{PB.0/RTX1}, 12/{PB.1/STX1}, 13/PB.2, 14/PB.3, 15/PB.4, 16/PB.5, 17/PB.6, 18/PB.7, 19/\FormatPinLabel{PC.0/~ALE~/PLPBC0}, 20/PC.1, 21/PC.2, 22/PC.3, 23/PC.4, 24/PC.5, 25/PC.6, 26/PC.7, 27/XTAL1/PD.3, 28/XTAL2/PD.4, 29/RST, 30/PD.1, 31/PD.2, 32/$V_{cc}$} \caption{A generic MCU chip, 32-pin TQFP package} \label{fig:X_TQFP32} \end{figure} \end{lstlisting}% \end{minipage}\hfill %% 32-pin TQFP example \begin{figure}[ht!] \centering \TQFP(32){% 1/{PD.0/RTX1}, 2/{PA.0/STX1}, 3/PA.1, 4/PA.2, 5/PA.3, 6/PA.4, 7/PA.5, 8/GND, 9/PA.6, 10/PA.7, 11/{PB.0/RTX1}, 12/{PB.1/STX1}, 13/PB.2, 14/PB.3, 15/PB.4, 16/PB.5, 17/PB.6, 18/PB.7, 19/\FormatPinLabel{PC.0/~ALE~/PLPBC0}, 20/PC.1, 21/PC.2, 22/PC.3, 23/PC.4, 24/PC.5, 25/PC.6, 26/PC.7, 27/XTAL1/PD.3, 28/XTAL2/PD.4, 29/RST, 30/PD.1, 31/PD.2, 32/$V_{cc}$} \caption{A generic MCU chip, 32-pin TQFP package} \label{fig:X_TQFP32} \end{figure} \subsubsection{\ttfamily\textbackslash PLCC} \verbinline|\PLCC|\arguD{pinnumber}\ARGU{pinarray} \smallskip Draws a PLCC package with generic number of pins. \verbinline|\pctPLCC|\arguD{pinnumber}\ARGU{pinarray} \smallskip Draws a PLCC package with generic number of pins, as a picture sub-element. \begin{itemize} \item \argu{pincount} the number of pins of a DIP package and should be an even number. \item \ARGU{pinarray} is a comma-separated list of pins - each pin definition is as follows: \argu{pinnumber}/\ARGU{pinlabel}. \end{itemize} %% 28-pin PLCC example \begin{minipage}[t]{0.65\linewidth} \begin{lstlisting} \begin{figure}[ht!] \centering \PLCC(28){% 1/{PD.0/RTX1}, 2/{PA.0/STX1}, 3/PA.1, 4/PA.2, 5/PA.3, 6/PA.4, 7/PA.5, 8/GND, 9/PA.6, 10/PA.7, 11/{PB.0/RTX1}, 12/{PB.1/STX1}, 13/PB.2, 14/PB.3, 15/PB.4, 16/PB.5, 17/PB.6, 18/PB.7, 19/\FormatPinLabel{PC.0/~ALE~/PLPBC0}, 20/PC.1, 21/PC.2, 22/PC.3, 23/{XTAL1/PD.3}, 24/{XTAL2/PD.4}, 25/RST, 26/PD.1, 27/PD.2, 28/$V_{cc}$} \caption{A generic MCU chip, 28-pin PLCC package} \label{fig:X_PLCC28} \end{figure} \end{lstlisting}% \end{minipage}\hfill %% 28-pin PLCC example \begin{figure}[ht!] \centering \PLCC(28){% 1/{PD.0/RTX1}, 2/{PA.0/STX1}, 3/PA.1, 4/PA.2, 5/PA.3, 6/PA.4, 7/PA.5, 8/GND, 9/PA.6, 10/PA.7, 11/{PB.0/RTX1}, 12/{PB.1/STX1}, 13/PB.2, 14/PB.3, 15/PB.4, 16/PB.5, 17/PB.6, 18/PB.7, 19/\FormatPinLabel{PC.0/~ALE~/PLPBC0}, 20/PC.1, 21/PC.2, 22/PC.3, 23/{XTAL1/PD.3}, 24/{XTAL2/PD.4}, 25/RST, 26/PD.1, 27/PD.2, 28/$V_{cc}$} \caption{A generic MCU chip, 28-pin PLCC package} \label{fig:X_PLCC28} \end{figure} %% Examples for PDIP packages \begin{minipage}[t]{0.35\linewidth} \styleexemple \end{minipage}% %\bigskip\bigskip \begin{center} $\star$\par $\star$\quad$\star$ \end{center} \par\nobreak\bigskip\bigskip That's all, I hope you will find this package useful!\par\nobreak Please, send me an \href{mailto:robert.h.blazek@gmail.com}{email} if you find a bug or if you have any idea of improvement\ldots\par\nobreak\medskip Robert Blazek \end{document}