summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/timing/timing.tex
blob: 0d6605dac398a18305c4a2d6cbf613efdd7dfb81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
\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 herkmmlichen 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 bergnge einzelner Logikzustnde automatisch gezeichnet 
werden.

Diesen Zeichensatz haben wir zunchst gemeinsam entwickelt.

Das vorliegende \LaTeX\ Stylefile {\bf TIMING.STY} wurde von Ludwig alleine 
entwickelt, um die Benutzung des Zeichensatzes zu vereinfachen.

Durch die Beschftigung 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 Lnge eines Buchstabens, 
eine Einheit der Y-Achse entspricht dem Abstand von zwei Signalverlufen.

\section{Makros}

Die im folgenden beschriebenen Makros knnen nur innerhalb der 
\verb|timing| Umgebung eingesetzt werden. Diese Umgebung ist eine 
Erweiterung der \verb|picture| Umgebung, es knnen 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} whlt den Zeichensatz aus.
\verb|1| ist ein schmaler Zeichensatz, der ca.\ 1mm breite Elemente enthlt, 
\verb|2| ist ein breiterer Zeichensatz mit ca.\ 2mm breiten Elementen.
Die Version mit \verb|s| dahinter (\verb|1s| und \verb|2s|) verwendet 
schrge Flanken im Gegensatz zu den "`normalen"' Zeichenstzen.
(Man glaubt nicht, wieviele Schwierigkeiten die Schler mit schrgen
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 erwhnen ??)

Eine Diagrammzeile wird durch das Makro

\verb|\til{|{\em Zeile}\verb|}{|{\em Zeichenkette mit Symbolbuchstaben}\verb|}|

erzeugt. Die Symbolbuchstaben reprsentieren den jeweiligen Signalzustand 
gem Tabelle~\ref{symtab}. Alternativ knnen 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 ordnungsgemes Arbeiten des Ligaturmechanismus zu 
gewhrleisten. 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 zustzlich den ntigen 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 & Fuzeile mit Zeitmarke              &
{\tt BbbbBb} \quad $\to$ \quad \raisebox{-0mm}{\timtest{BbbbBb }} \\
\hline
\rule[-4mm]{0pt}{12mm}b & Fuzeile 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{Mgliche Symbolbuchstaben in 3 Zeichenstzen {\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 Signalverlufen 
erfolgt durch die folgenden Makros:

\begin{tabular}{ll} 
Pfeil nach rechts & \verb|\rarw{|{\em Zeile}\verb|}{|{\em X-Position}\verb|}{|{\em Lnge}\verb|}{|{\em Text}\verb|}| \\
Pfeil nach links  & \verb|\larw{|{\em Zeile}\verb|}{|{\em X-Position}\verb|}{|{\em Lnge}\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 
Signalverlufen bestimmt. \verb|\timescalefactor| kann durch 
\verb|\newcommand| auf einen beliebigen Wert gesetzt werden. Defaultwert 
ist 2.

%
% Evtl. ntige 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, mchten 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"-gngen sitzen, sollte zunchst versucht werden, den 
Wert \verb|max_drift| des Druckertreibers auf 0 zu setzen (nicht bei allen 
Treibern mglich; bei den dvidrv-Treibern fr em\TeX\ ist die Option 
\verb|/fd0| anzugeben). Kann dadurch keine Abhilfe geschaffen werden, 
besteht die Mglichkeit, 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 beschrnken 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 Strae 90\\
67069 Ludwigshafen}
\end{center}

Jens Leilich ist auerdem 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}