pstricks: kleines beispiel vom herrn perner und makefile spass von mir
[hwmod.git] / spec / spec.tex
index 84fccdc4eda489de7f176d8937dfefc0a1cd21ec..64a6a64a0c60ef6a328554e6a4f4ad3ea1ecc13d 100644 (file)
@@ -6,14 +6,6 @@
 \begin{document}
 \MakeTitleAndTOC
 
-% howto use graphics
-% \begin{figure}[!ht]
-% \includegraphics[width=\textwidth]{ftol_pic.pdf}
-% \centering
-% \caption{Ein kleines, fehlertolerantes Computersystem}
-% \label{fig:angabe}
-% \end{figure}
-
 %\chapter %for use with report class
 \section
 {Einleitung}
@@ -41,24 +33,24 @@ wie schaut syntax aus der eingabe?
 
 \req{Der Syntax für so eine Eingabe - eine \textbf{Expression} - sieht folgendermaßen aus:
 
-DIGIT = ``0`` \textbar ``1`` \textbar ``2`` \textbar ``3`` \textbar ``4`` \textbar ``5`` \textbar ``6`` \textbar ``7`` \textbar ``8`` \textbar ``9`` ;
+DIGIT = '0' \textbar '1' \textbar '2' \textbar '3' \textbar '4' \textbar '5' \textbar '6' \textbar '7' \textbar '8' \textbar '9' ;
 
 UNSIGNED = DIGIT { DIGIT } ;
 
-OPERAND = [``-``] UNSIGNED ;
+OPERAND = ['-'] UNSIGNED ;
 
-OPERATOR = ``+`` \textbar ``-`` \textbar ``*`` \textbar ``/`` ;
+OPERATOR = '+' \textbar '-' \textbar '*' \textbar '/' ;
 
 EXPRESSION = OPERAND \{ OPERATOR OPERAND \} ;
 }
 
 \req{Dabei soll Punkt- vor Strichrechnung gelten}
 
-\req{Die Zahlen dürfen im Zahlenbereich eines signed long liegen ($-2^31$ bis $2^31-1$)}
+\req{Die Zahlen dürfen im Zahlenbereich eines signed long liegen ($-2^{31}$ bis $2^{31}-1$)}
 
 \req{Die Eingabe darf aus 70 Zeichen bestehen}
 
-\req{Die Eingabe erfolgt über eine PS/2-Tastatur, 'Enter' schließt die Eingabe ab und berechnet das Ergebnis, 'Backspace löscht das zuletzt eingegebene Zeichen'}
+\req{Die Eingabe erfolgt über eine PS/2-Tastatur, 'Enter' schließt die Eingabe ab und berechnet das Ergebnis, 'Backspace' löscht das zuletzt eingegebene Zeichen}
 
 \subsection{Ausgabe}
 
@@ -73,56 +65,112 @@ EXPRESSION = OPERAND \{ OPERATOR OPERAND \} ;
 
 \section{High-Level Design Description}
 
-TODO In Abbildung X ist der Aufbau des Taschenrechners zu sehen. Der Taschenrechner besteht aus folgenden Modulen:
+\begin{figure}[!ht]
+\includegraphics[width=\textwidth]{Architektur.png}
+\centering
+\caption{Die Architektur des Taschenrechners}
+\label{fig:arch}
+\end{figure}
+
+In Abbildung \ref{fig:arch} ist der Aufbau des Taschenrechners zu sehen. Der Taschenrechner besteht aus folgenden Modulen:
+
+Bla:
+
+ps/2 schickt zeichen an controller, der nimmt nur gewünschte chars und schreibt die in die history
+in die editierbare ``eingabezeile''.
+
+dann bei einem "enter" sagt er dem parser dass der was hackeln soll
+
+der holt sich selbstständig den string aus der history und analysiert ihn mal - also ob es ein gültiger string ist
+
+dann brauchen wir schleifen, eine äußere für die strichrechnung und eine innere für die punktrechnung (k.a. wie das in vhdl geht)
+
+jedenfalls müssen bei z.b. a + b * c die b*c zuerst ausgerechnet werden
+
+diese einzelnen rechnungen - also z.b. b*c - schickt der parser an die alu die das ausrechnet und dann asynchron an den parser zurückschickt - das geht so lange weiter bis der ganze string abgearbeitet ist
+
+der parser muss bei den zwischenrechnungen die zwischenergebnisse im speicher behalten
+
+wenn er fertig ist liefert er das ergebnis an die history und benachrichtigt den controller dass er fertig ist
+
+achja, die zahlen zur/von der history muss der parser zum converter schicken - das geht leider nicht als zwischenstufe zwischen parser und history weil der parser sich einen erst zu analysierenden string von der history holt - es ist auch nicht sinnvoll zwischen alu und parser, weil zwischenergebnisse nicht neu umgewandelt werden müssen
+
+der controller verursacht dann den zeilenvorschub um 2 zeilen in der history (ringpuffer, index vorandrehen). eigentlich braucht der controller dem display modul nichts mitteilen, oder?
+
+es sollte vielleicht der controller das display modul veranlasen sich die daten aus der history zu holen (könnte auch die history)
+
+TODO Module soll der Parser in einer "`Schleife"' alle Teilberechnungen an die ALU weiterleiten und zB Zwischenergebnisse speichern? Die ALU könnte dann nur 2 Zahlen addieren/bla.
+Da in der History Zahlen als Character Strings abgelegt sind müssen diese für die ALU in Binärdarstellung umgewandelt werden - und Umgekehrt natürlich!
 
 %\subsection{Module}
 
-was gibts fuer module? vorschlag:
 \begin{itemize}
-\item VGA - ist gegeben.
-\item PS/2 - ist gegeben.
-\item RS232 - TODO. baudrate? kodierung? (8N1?)
-\item Historymodul - Verwaltung des dahinterliegenden Buffers
-\item Parser - wertet ein gegeben Buffer aus.
-\item Controlmodul - soll das Bindeglied zwischen allen Modulen sein, nimmt eingabe entgegen, legt berechnungen im buffer ab, ...?
-\item Modul für die Kommunikation zum PC? oder gleich im Historymodul implementieren? oder ins
-Controlmodul mit rein packen?
+\item VGA - Ansprechen des Monitors
+\item PS/2 - Empfangen von Keyboard-Eingaben
+\item RS232 - Senden und Empfangen von Nachrichten vom/zum PC TODO. baudrate? kodierung? (8N1?)
+\item Historymodul - Verwaltung des dahinterliegenden Buffers von vergangenen Berechnungen
+\item Displaycontroller - Veranlasst das VGA Modul, einen Teil der History am Monitor anzuzeigen
+\item Parser - wertet ein gegeben Buffer aus und liefert entweder einen Fehler zurück oder gibt die einzelnen Berechnungen von je zwei Zahlen (?) an die ALU weiter
+\item Converter - konvertiert Dezimalzahlen in Binärzahlen und umgekehrt TODO oder in Parser integrieren? Oder gibt's eine Library-Funktion dafür?
+\item ALU - führt die tatsächlichen Berechnungen durch
+\item Controlmodul - soll das Bindeglied zwischen allen Modulen sein, nimmt Eingabe von PS/2 Modul oder von der Board-Paripherie entgegen, legt Berechnungen im Buffer ab, ...?
+\item Modul für die Kommunikation zum PC - sendet eine vom PC eintreffende Bufferübermittlungsanforderung an den Controller weiter und übermittelt die History an den PC
 \end{itemize}
 
 %\subsection{Interfaces}
 
 \subsection{Externe Interfaces}
 
+\subsubsection{Physikalische Interfaces}
+
+Interface zum key pad
+
+Interfaces zu VGA, PS/2, RS232
+
+Reset und Clock!
+
+Active Low oder Active High
+
 das ist mir noch nicht ganz klar was die da wollen. was meinen die z.b. mit ``interfaces
 to VGA'' unter ``physical interfaces'' (seite 10 in der exercise.pdf)
 
 ``physikalisch'' im sinne der VHDL entity? oder doch den physischen stecker?
 Ersteres wuerde ich unter Logisches Interface verstehen.
 
+\subsubsection{Logische Interfaces der Module}
+
+\paragraph{VGA}
 
-\subsection{Interfaces der Module}
+How to control the VGA component ?= schnittstelle + beschreibung des vga moduls?
 
-\subsubsection{VGA}
+\paragraph{PS/2}
 
-\subsubsection{PS/2}
+ebenso hier?
 
-\subsubsection{RS232}
+\paragraph{RS232}
 
-\subsubsection{History}
+\paragraph{History}
 
-\subsubsection{Parser}
+\paragraph{Parser}
 
-\subsubsection{Control}
+\paragraph{Control}
 
-\subsection{Verhalten der Interfaces}
+\subsubsection{Verhalten der Interfaces}
 
 welche tasten als input erlauben (haben numblock und normale ziffern unterschiedliche scancodes?)?
+
 wie werden ueberlaeufe behandelt?
+
 fehlerhafte eingaben?
+
 wie schaut die ausgabe aus?
+
 was ausgaben bei fehler?
+
 wie kann download oder upload einer history gestartet werden?
+
 wie kann auf die history zugegriffen werden?
+
 soll in der eingabe auch mit pfeiltasten (links,rechts) gescrolled werden koennen?
 
 
@@ -137,7 +185,9 @@ alle Module hier genauer beschreiben
 
 %TODO
 wie wollen wir das design implementieren?
+
 event sequence diagrams! UML?
+
 wie schauen interne strukturen aus? (speicher, logische bloecke, parallele prozesse, state machines)
 
 \subsection{VGA}
@@ -145,6 +195,13 @@ wie schauen interne strukturen aus? (speicher, logische bloecke, parallele proze
 \subsection{PS/2}
 
 \subsection{RS232}
+%test, TODO
+\begin{figure}[!ht]
+\includegraphics[width=0.9\textwidth]{sm/rs232-rs.pdf}
+\centering
+\caption{Statemachine zum Empfangen auf der RS232 Schnittstelle (8N1)}
+\label{fig:rs232-rs}
+\end{figure}
 
 \subsection{History}