X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=spec%2Fspec.tex;h=64a6a64a0c60ef6a328554e6a4f4ad3ea1ecc13d;hb=cbbcc4abd67ddb89c467ef2cdbc87179e1371e2c;hp=84fccdc4eda489de7f176d8937dfefc0a1cd21ec;hpb=7df8379f67527fb80f9920d3fd745f4f2272f5f4;p=hwmod.git diff --git a/spec/spec.tex b/spec/spec.tex index 84fccdc..64a6a64 100644 --- a/spec/spec.tex +++ b/spec/spec.tex @@ -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}