\documentstyle[german,verbatim,dina4,titlepage,timing,12pt]{article} \setlength{\textwidth}{16.5cm} \setlength{\parindent}{0pt} \setlength{\parskip}{5pt plus 2pt minus 1 pt} \frenchspacing \begin{document} \title{TIMING.STY\\Satz von Zeitdiagrammen fr digitale Schaltungen} \author{Ludwig May\\Jens Leilich} \maketitle \section{Motivation} Wir standen bei unserer Studienarbeit vor dem Problem, Zeitdiagramme einiger Digitalschaltungen darstellen zu mssen. Als Alternative zu der herk”mmlichen Erstellung durch ein Zeichenprogramm kam uns die Idee, ein solches Diagramm mit Hilfe eines speziellen Metafont-Zeichensatzes durch die Aneinanderreihung von Buchstaben zu realisieren. Durch die Verwendung von Ligaturen sollten so alle sinnvollen šberg„nge einzelner Logikzust„nde automatisch gezeichnet werden. Diesen Zeichensatz haben wir zun„chst gemeinsam entwickelt. Das vorliegende \LaTeX\ Stylefile {\bf TIMING.STY} wurde von Ludwig alleine entwickelt, um die Benutzung des Zeichensatzes zu vereinfachen. Durch die Besch„ftigung an der Berufsbildenden Schule Ludwigshafen wurde von Jens der Style und die Fonts weiterentwickelt, weil gewisse Features fehlten. Es erlaubt die Erstellung und Beschriftung eines Zeitdiagramms. Die einzelnen Elemente des Diagramms werden dabei ber ein Koordinatensystem angeordnet. Eine Einheit der Zeitachse entspricht dabei der L„nge eines Buchstabens, eine Einheit der Y-Achse entspricht dem Abstand von zwei Signalverl„ufen. \section{Makros} Die im folgenden beschriebenen Makros k”nnen nur innerhalb der \verb|timing| Umgebung eingesetzt werden. Diese Umgebung ist eine Erweiterung der \verb|picture| Umgebung, es k”nnen also auch alle \verb|picture| Befehle verwendet werden (\verb|\unitlength=1sp|). Die Umgebung wird durch den Befehl \verb|\begin{timing}[|{\em Zeichensatz}\verb|]{|{\em Labelbreite}\verb|}| eingeleitet. Der Parameter {\em Labelbreite} gibt den zu reservierenden Platz fr die Signalbezeichnung an. Der Parameter {\em Zeichensatz} w„hlt den Zeichensatz aus. \verb|1| ist ein schmaler Zeichensatz, der ca.\ 1mm breite Elemente enth„lt, \verb|2| ist ein breiterer Zeichensatz mit ca.\ 2mm breiten Elementen. Die Version mit \verb|s| dahinter (\verb|1s| und \verb|2s|) verwendet schr„ge Flanken im Gegensatz zu den "`normalen"' Zeichens„tzen. (Man glaubt nicht, wieviele Schwierigkeiten die Schler mit schr„gen Flanken haben. Man sagt ihnen: "`Nehmt die Mitte"', aber sie raffen's nicht.) Normalerweise wird der Zeichensatz \verb|2| verwendet. Die Umgebung muá durch \verb|\end{timing}| abgeschlossen werden. (Mssen wir das erw„hnen ??) Eine Diagrammzeile wird durch das Makro \verb|\til{|{\em Zeile}\verb|}{|{\em Zeichenkette mit Symbolbuchstaben}\verb|}| erzeugt. Die Symbolbuchstaben repr„sentieren den jeweiligen Signalzustand gem„á Tabelle~\ref{symtab}. Alternativ k”nnen die Makros \verb|\timingcounter| bzw. \verb|\conttimingcounter| als Argument bergeben werden. Bei Verwendung von Symbolbuchstaben sollte darauf geachtet werden, daá nach einem Symbolwechsel mindestens zwei aufeinanderfolgende Buchstaben gleich sind, um ein ordnungsgem„áes Arbeiten des Ligaturmechanismus zu gew„hrleisten. Die Makros \verb|\timingcounter{|{\em Zeitmarkenabstand}\verb|}{|{\em Startwert}\verb|}{|{\em Endwert}\verb|}{|{\em Zeitintervall}\verb|}| \hfill und \verb|\conttimingcounter{|{\em Zeitmarkenabstand}\verb|}{|{\em Startwert}\verb|}{|{\em Endwert}\verb|}{|{\em Zeitintervall}\verb|}| erzeugen eine Ziffernskala. \verb|\conttimingcounter| wird nach einer Unterbrechung benutzt und erzeugt zus„tzlich den n”tigen Zwischenraum. \begin{table} \def\timtest#1{{\timon #1- \timons #1- \timtw #1- \timtws #1}} \centering \begin{tabular}{|l|l|l|} \hline \rule[-4mm]{0pt}{12mm}L & 0 - Pegel & {\tt HLLLLH} \quad $\to$ \quad \raisebox{-2mm}{\timtest{HLLLLH }} \\ \hline \rule[-4mm]{0pt}{12mm}H & 1 - Pegel & {\tt LHHHHL} \quad $\to$ \quad \raisebox{-2mm}{\timtest{LHHHHL }} \\ \hline \rule[-4mm]{0pt}{12mm}F & unbekannter Pegel & {\tt LFFFFH} \quad $\to$ \quad \raisebox{-2mm}{\timtest{LFFFFH }} \\ \hline \rule[-4mm]{0pt}{12mm}L & 0 - Pegel zum Zeichnen & {\tt hllllh} \quad $\to$ \quad \raisebox{-2mm}{\timtest{hllllh }} \\ \hline \rule[-4mm]{0pt}{12mm}H & 1 - Pegel zum Zeichnen & {\tt lhhhhl} \quad $\to$ \quad \raisebox{-2mm}{\timtest{lhhhhl }} \\ \hline \rule[-4mm]{0pt}{12mm}H & Leere Zeile zum Zeichnen & {\tt ......} \quad $\to$ \quad \raisebox{-2mm}{\timtest{...... }} \\ \hline \rule[-4mm]{0pt}{12mm}V & Bus-Leitungen mit gltigen Daten & {\tt ZVVVVU} \quad $\to$ \quad \raisebox{-2mm}{\timtest{ZVVVVU }} \\ \hline \rule[-4mm]{0pt}{12mm}X & Bus-Leitungen mit Zustandswechsel & {\tt VVVXVV} \quad $\to$ \quad \raisebox{-2mm}{\timtest{VVVXVV }} \\ \hline \rule[-4mm]{0pt}{12mm}U & Bus-Leitungen mit ungltigen Daten & {\tt ZUUUUV} \quad $\to$ \quad \raisebox{-2mm}{\timtest{ZUUUUV }} \\ \hline \rule[-4mm]{0pt}{12mm}Z & Bus-Leitungen auf Tristate & {\tt VZZZZU} \quad $\to$ \quad \raisebox{-2mm}{\timtest{VZZZZU }} \\ \hline \rule[-4mm]{0pt}{12mm}T & Kopfzeile mit Zeitmarke & {\tt TtttTt} \quad $\to$ \quad \raisebox{-0mm}{\timtest{TtttTt }} \\ \hline \rule[-4mm]{0pt}{12mm}t & Kopfzeile ohne Zeitmarke & {\tt TtTtTt} \quad $\to$ \quad \raisebox{-0mm}{\timtest{TtTtTt }} \\ \hline \rule[-4mm]{0pt}{12mm}B & Fuázeile mit Zeitmarke & {\tt BbbbBb} \quad $\to$ \quad \raisebox{-0mm}{\timtest{BbbbBb }} \\ \hline \rule[-4mm]{0pt}{12mm}b & Fuázeile ohne Zeitmarke & {\tt BbBbBb} \quad $\to$ \quad \raisebox{-0mm}{\timtest{BbBbBb }} \\ \hline \rule[-4mm]{0pt}{12mm}- & Unterbrechungszeichen & {\tt UUU-UU} \quad $\to$ \quad \raisebox{-2mm}{\timtest{UUU-UU }} \\ \hline \end{tabular} \caption{M”gliche Symbolbuchstaben in 3 Zeichens„tzen {\tt 1/1s/2/2s}} \label{symtab} \end{table} Die Signalbezeichnung fr eine Diagrammzeile wird mit dem Makro \verb|\tin{|{\em Zeile}\verb|}{|{\em Name}\verb|}| zugeordnet. Fr Bemerkungen innerhalb des Signalverlaufs dient \verb|\tnote{|{\em Zeile}\verb|}{|{\em X-Position}\verb|}{|{\em Bemerkung}\verb|}| Die Darstellung der Zeitbeziehungen zwischen einzelnen Signalverl„ufen erfolgt durch die folgenden Makros: \begin{tabular}{ll} Pfeil nach rechts & \verb|\rarw{|{\em Zeile}\verb|}{|{\em X-Position}\verb|}{|{\em L„nge}\verb|}{|{\em Text}\verb|}| \\ Pfeil nach links & \verb|\larw{|{\em Zeile}\verb|}{|{\em X-Position}\verb|}{|{\em L„nge}\verb|}{|{\em Text}\verb|}| \\ senkrechte Linie & \verb|\sline{|{\em Anfangszeile}\verb|}{|{\em X-Position}\verb|}{|{\em Endezeile}\verb|}| \\ \end{tabular} Bei Zeile (bei den Pfeilen) verwenden Sie blicherweise einen um $0.6$ verminderten Wert. Bei der Linie meint X-Position die Position, hinter der die Linie sein soll; das erste Zeichen hat die Nummer 1. Die Linienbreite der senkrechten Linien kann dabei wie in der \verb|picture| Umgebung durch \verb|\linethickness| festgelegt werden. Weiterhin existiert ein Faktor, der den Abstand zwischen zwei Signalverl„ufen bestimmt. \verb|\timescalefactor| kann durch \verb|\newcommand| auf einen beliebigen Wert gesetzt werden. Defaultwert ist 2. % % Evtl. n”tige Anpassung fuer Ausrichtung senkrechter Linien % \timadjust % \section{Ausblick} Die beschriebenen Makros haben ein besseres Ergebnis in der Darstellung von Zeitdiagrammen gebracht, als wir gehofft haben. Da sie an unserem Institut an der THD einiges Interesse hervorgerufen haben, m”chten wir sie der Allgemeinheit ebenfalls nicht vorenthalten. Ein Problem besteht in der unterschiedlichen Ausrichtung der senkrechten Linien durch verschiedene Druckertreiber. Wenn diese Linien nicht mittig auf den Signal"-ber"-g„ngen sitzen, sollte zun„chst versucht werden, den Wert \verb|max_drift| des Druckertreibers auf 0 zu setzen (nicht bei allen Treibern m”glich; bei den dvidrv-Treibern fr em\TeX\ ist die Option \verb|/fd0| anzugeben). Kann dadurch keine Abhilfe geschaffen werden, besteht die M”glichkeit, durch den Befehl \verb|\renewcommand{\timadjust}{|{\em Dimension}\verb|}| vor dem Beginn einer \verb|timing| Umgebung eine Verschiebung der Linien zu erreichen. Fr eine Verbesserung in diesem oder auch anderen Punkten bestehen alle Freiheiten. Eine weitere Untersttzung von Ludwigs Seite wird es wahrscheinlich nicht geben, da er, wie die meisten Menschen heutzutage, wenig Zeit habe und sich das Interesse dieser Makros und des Zeichensatzes nur auf ein paar Datentechniker und VLSI-Spezialisten beschr„nken drfte. Jens wird wohl darauf achten, daž ddas Paket up to date bleibt und evtl.\ weitere Features einbauen, wenn es ihm sinnvoll erscheint. Fr eventuelle positive Rckmeldungen an folgende Adressen wrden wir uns freuen: \begin{center} \parbox{5cm}{ Ludwig May\\ Friedrichstrasse 23b \\ 64293 Darmstadt} \parbox{5cm}{ Jens Leilich\\ Oppauer Straže 90\\ 67069 Ludwigshafen} \end{center} Jens Leilich ist aužerdem unter folgender email-Adresse zu erreichen: \verb|Jens_Leilich@lu.maus.de| oder ber BTX 0621667821-1. Spenden sind natrlich auch willkommen :-). \newpage \section{Beispiel} \def\nicht#1{$\overline{\mbox{#1}}$} \input{prozt1} {\hfill Bild~1 : Beispieldiagramm \hfill} \clearpage\newpage Definition fr das Beispieldiagramm aus Bild~1 : \begin{scriptsize} \verbatiminput{prozt1} \end{scriptsize} \end{document}