197 lines
7.7 KiB
TeX
197 lines
7.7 KiB
TeX
\section{Automaten}
|
|
|
|
Ein Automat beschreibt ein System, welches auf seine Eingänge reagiert und ein Ausgangsignal produziert, dass vom Eingangssignal und momentanen Zustand abhängt. \medskip
|
|
|
|
Endliche Automaten, bzw. Finite state machines (FSM), können nur vorprogrammierte Lagen passieren. Schaltungen mit Rückkopplungen sind typische Beispiele für FSM. \medskip
|
|
|
|
Bei synchronen Automaten sind alle FF gleich getaktet, d.h. Zustandsänderungen sind synchron mit dem Takt. \medskip
|
|
|
|
Mit $n$-D-FF kann eine FSM $2^n$ innere Zustände speichern.
|
|
|
|
|
|
\subsection{Beschreibung von Automaten}
|
|
|
|
\subsubsection{Formelle Beschreibung von Automaten}
|
|
|
|
\begin{tabular}{l p{50mm}}
|
|
$X_n = (x_1, \dots, x_e)$ & Eingangsalphabet \\
|
|
$Y_n = (y_1, \dots, y_b)$ & Ausgangsalphabet \\
|
|
$Z_n = (z_1, \dots, z_m)$ & Zustandsmenge \\
|
|
$Z_0 \in Z$ & Anfangszustand \\
|
|
$f_{c1}:(X_n, Z_n) \to Z_{n+1}$ & Folgezustandsfunktion \\
|
|
$f_{c2}:(X_n, Z_n) \to Y_n$ & Ausgangsfunktion \\
|
|
\end{tabular}
|
|
|
|
\subsubsection{Zustandsfolgetabellen (Folgezustandstabellen)}
|
|
|
|
Listet in Form einer Wahrheitstabelle alle Kombinationen des aktuellen Zustandvektors $Z_n$ und Eingangsvektor $X_n$, aus welchen der Ausgangsvektor $Y_n$ und Folgezustandvektor $Z_{n+1}$ entsteht.
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.32\textwidth]{images/Automat_1.jpg}
|
|
\end{center}
|
|
|
|
Man kann die verschiedenen Vektoren abstrahieren durch Dualzahlen oder ihnen sinnvolle Namen geben, welche den Zustand/Eingang/Ausgang erklären.
|
|
\\
|
|
Um die Anzahl Zeilen und Spalten einer Zustandsfolgetabelle zu bestimmen kann man die folgenden Formeln verwenden.
|
|
|
|
\eqbox{$Z = 2 ^{eb + zb}$}
|
|
|
|
\eqbox{$S = eb + (2 \cdot zb) + ab$}
|
|
|
|
$eb$ ist die Anzahl Eingangsbits, $zb$ die Anzahl Zustandsbits und $ab$ die Anzahl Ausgangsbits.
|
|
|
|
\subsubsection{Zustandsdiagramme (Zustandsgraphen)}
|
|
|
|
Äquivalente graphische Darstellung der Folgezustandstabelle. Zustandsdiagramme bestehen aus Kanten und Knoten, siehe spätere Abbildungen bei den verschiedenen Automatentypen.
|
|
|
|
|
|
\subsection{Mealy-Automat}
|
|
|
|
Bei einem Mealy-Automat beinflussen Eingangsveränderungen das Ausgangsignal jederzeit, d.h. das Ausgangssignal ist Störungsanfällig. Ein Mealy-Automat hat folgende Struktur:
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.25\textwidth]{images/Mealy_1.jpg} \medskip
|
|
|
|
\eqbox{$Y_n = f_{C2}(X_n, Z_n) \qquad Z_{n+1} = f_{C1}(X_n, Z_n)$}
|
|
\end{center}
|
|
|
|
Erst bei einem Taktwechsel $t_n \to t_{n + 1}$ schalten die D-FF, d.h. $Z_{n + 1} \to Z_n$.
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.25\textwidth]{images/Mealy_2.jpg}
|
|
\end{center}
|
|
|
|
\vfill
|
|
|
|
\subsection{Moore-Automat}
|
|
|
|
Sonderfall des Mealy-Automat, wo $Y_n$ nur von getaktetem $Z_n$ abhängt. Aus diesem Grund ist er weniger Störungsanfällig.
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.25\textwidth]{images/Moore_1.jpg} \medskip
|
|
|
|
\eqbox{$Y_n = f_{C2}(Z_n) \qquad Z_{n+1} = f_{C1}(X_n, Z_n)$}
|
|
\end{center}
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.25\textwidth]{images/Moore_2.jpg}
|
|
\end{center}
|
|
|
|
Eine \emph{komplett störungssichere Automatenfunktion} ist jedoch nur möglich, wenn die Eingangswerte $X_n$ mit gleich getakteten D-FF synchronisiert werden.
|
|
|
|
|
|
\subsection{Medwedjew-Automat}
|
|
|
|
Ausgangsvektor $Y_n$ ist identisch mit dem Zustandsvektor $Z_n$.
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.25\textwidth]{images/Medwedjew.jpg} \medskip
|
|
|
|
\eqbox{$Y_n = Z_n \qquad Z_{n+1} = f_{C1}(X_n, Z_n)$}
|
|
\end{center}
|
|
|
|
\vfill
|
|
|
|
\subsection{Entwurf eines Automaten}
|
|
|
|
Die Normale Entwurfsabfolge ist, wie folgt:
|
|
|
|
\begin{enumerate}
|
|
\item Auftrag lesen und analysieren
|
|
\item Zustandsmenge bestimmen, daraus folgt Anzahl Zustandsvariablen und D-FF.
|
|
\item Kodierung: Eingangs- und Ausgangsvariablen definieren
|
|
\item Darstellung der Zustandsfolge in einem \emph{Zustandsdiagram}
|
|
\item \emph{Zustandsfolgetabelle} aufstellen.
|
|
\item Minimierung der Ausgangs- und Übergangsfunktionen mit \emph{KV-Diagrammen}
|
|
\item Einfluss unbenutzter Zustände (Don't Cares) überprüfen!
|
|
\item Schaltplan anhand der Schaltfunktion konstruieren
|
|
\end{enumerate}
|
|
|
|
Wenn das Schaltwerk eines Automaten vorgegeben ist, wird die Reihenfolge vertauscht.
|
|
|
|
|
|
\subsection{Umwandlung Mealy $\Leftrightarrow$ Moore}
|
|
|
|
Achtung: Bei der Umwandlung verändert sich das Zeitverhalten der Ausgänge.
|
|
|
|
\subsubsection{Moore $\to$ Mealy}
|
|
|
|
Die Moore zu Mealy Umwandlung ist einfach, da einfach die Ausgänge von den Knoten der Folgezustände auf die entsprechenden Kanten gewechselt werden müssen.
|
|
|
|
\subsubsection{Mealy $\to$ Moore}
|
|
|
|
Ein Mealy-Automat lässt sich immer in einen Moore-Automat mit gleicher Funktion umwandeln, dieser besitzt aber in der Regel mehr Zustände.
|
|
|
|
Eine direkte Moore Implementierung ist nur möglich, wenn jeder Zustand $Z_n$, unabhängig von $X_n$, immer das gleiche Ausgangssignal $Y_n$ produziert. Ist dies nicht der Fall, dann muss man neue Zustände definieren.
|
|
|
|
|
|
\subsection{Asynchronzähler}
|
|
|
|
Ein einfacher Asynchron Vorwärtszähler aus T-FF sieht, wie folgt, aus:
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.32\textwidth]{images/AsyncCounter.jpg}
|
|
\end{center}
|
|
|
|
Will man einen Rückwärtszähler realisieren, dann muss man auf die positive Flanke gesteuerte FFs verwenden ($0 \to 1$) und statt $Q_i$ die invertierten Ausgänge $\not{Q}_i$ benutzen. \medskip
|
|
|
|
Die Problematik vom Asynchronzähler ist, dass die Zustandsänderungen einen 'ripple' Effekt aufzeigen, d.h. die FF-Verzögerungszeiten kumulieren sich entlang der Schaltung. Die maximale Taktfrequenz, für welche ein Asynchronzähler 'theoretisch' noch funktioniert, ist:
|
|
|
|
\begin{center}
|
|
\eqbox{$f_{max} = \dfrac{1}{\sum t_{pd,FFs}}$}
|
|
\end{center}
|
|
|
|
|
|
\subsection{Modulo-n Zähler}
|
|
|
|
Ein Modulo-n Zähler zählt bis zu einem bestimmten Zustand $n$ und springt dann zum vorgegebenen Anfangszustand zurück. Dafür benötigt man FFs mit Asychronen Reset und Set Eingängen, welche benutzt werden um den Rücksprung zum Anfangszustand auszuführen.
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.32\textwidth]{images/AsyncCounter2.jpg}
|
|
\end{center}
|
|
|
|
Der Zustand $n+1$ ist kurzzeitig für die Durchlaufzeit des AND-Gatters vorhanden an den Ausgängen, bis der Rücksprung zum Anfangszustand durchgeführt wurde.
|
|
\vfill
|
|
|
|
|
|
\subsection{Synchronzähler}
|
|
|
|
Bei einem Synchronzähler haben alle FF den gleichen Takt. Synchronzähler sind meist Medwedjew-Automanten, wo der Steuereingang benutzt wird um zwischen Vorwärts- und Rückwartszählen zu wechseln. Beispiel anhand eines Modulo-6 Zählers mit Anfangszustand '1':
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.32\textwidth]{images/SyncCounter.jpg}
|
|
\end{center}
|
|
|
|
Falls JK-FF verwendet werden müssen, dann muss man bei der Minimierung mit dem KV-Diagramm aufpassen, dass man die charakteristische Gleichung des JK-FF einhält.
|
|
|
|
|
|
\subsection{Vorwärts-Rückwärtszähler (Reversible Zähler)}
|
|
|
|
Ein grosser reversibler Zähler ist relativ aufwendig zu realisieren als Automat. Einfacher ist es D-FFs geschickt mit einem Addierer zu kombinieren.
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.2\textwidth]{images/SyncCounter2.jpg}
|
|
\end{center}
|
|
|
|
Für das Wechseln zwischen Vorwärts- und Rückwärtszählen wechselt man beim Addierer einfach zwischen Addition und Subtraktion (2er Komplement).
|
|
\vfill
|
|
|
|
|
|
\subsection{Frequenzteiler mit einem Zähler}
|
|
|
|
Gegeben ist ein Zähler mit $N$ Zuständen und einem Anfangszustand $k$. Wenn der Zustand $N$ erreicht wird, dann wird bei der nächsten Taktflanke der Anfangszustand $k$ geladen und der T-FF wechselt seinen Zustand.
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.32\textwidth]{images/Frequenzteiler2.jpg}
|
|
\end{center}
|
|
|
|
Mit einer solchen Schaltung kann man einen Frequenzteiler realisieren, welcher flexibler ist in seinem Teilungsverhältnis als ein simpler Frequenzteiler aus nur T-FFs. \medskip
|
|
|
|
Der Ausgang vom T-FF hat die Frequenz:
|
|
|
|
\begin{center}
|
|
\eqbox{$f_{out} = \dfrac{f_{in}}{2 (N - k + 1)}$}
|
|
\end{center}
|
|
|
|
|