sections ein wenig herumgebastelt...
[hwmod.git] / spec / spec.tex
index c1817734a7531cce1b9955cb061a5c68e7349a21..c4ec0efa45cbd8b27256c3486488a68b686e26ed 100644 (file)
@@ -92,11 +92,8 @@ Berechnungs-Endergebnis wird jedoch wieder in einzelne Charakter umgerechnet und
 \item \textbf{History} - Verwaltung des dahinterliegenden Buffers von vergangenen Berechnungen und der aktuellen Eingabezeile, bei Aktualisierung der aktuellen Eingabezeile und bei Empfang eines Ergebnisses vom Parser Modul signalisiert es das an das Display Modul
 \end{itemize}
 
-%\subsection{Interfaces}
 
-\subsection{Externe Interfaces}
-
-\subsubsection{Physikalische Interfaces}
+\subsection{Physikalische Interfaces}
 
 %TODO die pins sind wahrscheilich gefragt
 %wie ist das mit dem clock? externe ungenaue clock + interne pll oder wie?
@@ -116,9 +113,9 @@ to VGA'' unter ``physical interfaces'' (seite 10 in der exercise.pdf)
 Ersteres wuerde ich unter Logisches Interface verstehen.
 
 \begin{landscape}
-\subsubsection{Logische Interfaces der Module}
+\subsection{Logische Interfaces der Module}
 
-\paragraph{VGA}
+\subsubsection{VGA}
 \THEAD
 vga\_clk & in & 1 & std\_logic & PLL & VGA-Clock \ZE
 vga\_res\_n & in & 1 & std\_logic & PLL & VGA-Reset \ZE
@@ -136,7 +133,7 @@ free & out & 1 & std\_logic & Display & Signalisiert Bereitschaft \ZE
 \TEND
 
 
-\paragraph{Display}
+\subsubsection{Display}
 %Liest einzelne Zeichen aus der History aus und leitet diese an das VGA Modul weiter, um sie in der entsprechenden Zeile anzeigen zu lassen
 \THEAD
 new\_eingabe & in & 1 & std\_logic & History & Fordert History auf die Eingabe auszulesen \ZE
@@ -153,7 +150,7 @@ free & in & 1 & std\_logic & VGA & Signalisiert Bereitschaft \ZE
 \TEND
 
 
-\paragraph{RS232}
+\subsubsection{RS232}
 %Senden und Empfangen von Nachrichten vom/zum PC über die serielle Schnittstelle
 \THEAD
 rxd & in & 1 & std\_logic & PC & Sendeleitung der seriellen \"Ubertragung \ZE
@@ -167,7 +164,7 @@ tx\_new & out & 1 & std\_logic & PC-Kommunikation & Signalisiert dass das anlieg
 \TEND
 
 
-\paragraph{PC-Kommunikation}
+\subsubsection{PC-Kommunikation}
 %Auf eine vom PC eintreffende Bufferübermittlungsanforderung oder ein Drücken des entsprechenden Board-Buttons, liest es Zeichen für Zeichen aus dem History Modul aus und leitet es an das RS232 Modul weiter
 \THEAD
 btn & in & 1 & std\_logic & externer Button & zum Triggern der RS232 Kommunikation \ZE
@@ -185,7 +182,7 @@ char & in & 8 & character & History & enth\"alt angeforderne Daten \ZE
 \TEND
 
 
-\paragraph{PS/2}
+\subsubsection{PS/2}
 \THEAD
 new\_data & out & 1 & std\_logic\_vector & Scanner & Signalisiert neuen Scancode \ZE
 data & out & 8 & std\_logic\_vector & Scanner & Scancode laut Codepage 850 \ZE
@@ -195,7 +192,7 @@ ps2\_data & inout & 1 & std\_logic & Tastatur & Datenleitung zum Keyboard \ZE
 \TEND
 
 
-\paragraph{Scanner}
+\subsubsection{Scanner}
 %Empfängt die Scan-Codes vom PS/2 Modul und leitet nur für die Eingabezeile erlaubte Zeichen dekodiert in das CP850 Format an die History weiter, bei einem empfangenen Enter wird der Beginn der Berechnung an das Parser Modul signalisiert
 \THEAD
 new\_data & in & 1 & std\_logic\_vector & PS/2 & Signalisiert neuen Scancode \ZE
@@ -211,7 +208,7 @@ finished & in & 1 & std\_logic & Parser & Auswertung fertig \ZE
 \TEND
 
 
-\paragraph{Parser}
+\subsubsection{Parser}
 %Wertet die Eingabezeile der History aus und liefert als Antwort entweder einen Fehler zurück oder gibt die einzelnen Berechnungen von je zwei Zahlen an die ALU weiter, die vom History Modul ausgelesenen zusammenhängenden Dezimalstellen werden mit dem Bin/Dez-Converter Modul in Binärzahlen umgerechnet, das Berechnungs-Endergebnis wird wieder in mit dem Converter Modul in einzelne Charakter umgerechnet und in der History gespeichert
 \THEAD
 h\_rw & in & 1 & std\_logic & History & 0 = read (Expression), 1 = write (Ergebnis) \ZE
@@ -237,7 +234,7 @@ finished & out & 1 & std\_logic & Scanner & Auswertung fertig \ZE
 \TEND
 
 
-\paragraph{ALU}
+\subsubsection{ALU}
 %Führt die tatsächlichen Berechnungen von Addition, Subtraktion, Multiplikation und Division durch
 \THEAD
 opcode & in & 3 & enum OPS & Parser & die auszuf\"uhrende Art der Berechnung \ZE
@@ -248,7 +245,7 @@ calc\_done & out & 1 & std\_logic & Parser & Berechnung fertig \ZE
 \TEND
 
 
-\paragraph{History}
+\subsubsection{History}
 %Verwaltung des dahinterliegenden Buffers von vergangenen Berechnungen und der aktuellen
 %Eingabezeile, bei Aktualisierung der aktuellen Eingabezeile und bei Empfang eines Ergebnisses vom
 %Parser Modul signalisiert es das an das Display Modul
@@ -287,7 +284,7 @@ p\_finished & in & 1 & std\_logic & Parser & Auswertung fertig \ZE
 \end{landscape}
 
 
-\subsubsection{Verhalten der Interfaces}
+\subsection{Verhalten der Interfaces}
 
 welche tasten als input erlauben (haben numblock und normale ziffern unterschiedliche scancodes?)?
 
@@ -439,7 +436,23 @@ auftritt. Es wird der String ``Error'' in den Ergebnisbuffer geschrieben und
 
 
 \subsection{ALU}
-opcodes: NOP, ADD, MUL, DIV, DONE (als enum)
+\begin{figure}[!ht]
+\includegraphics[width=0.9\textwidth]{sm/alu.pdf}
+\centering
+\caption{Statemachine der ALU}
+\label{fig:alu}
+\end{figure}
+%TODO: eventuell zweierkomplement statt SUB?
+Folgende Opcodes werden von uns als enum definiert:
+\begin{quote}
+NOP, SUB, ADD, MUL, DIV, DONE
+\end{quote}
+wobei NOP und DONE von der ALU nicht bearbeitet werden sollen.
+
+In jedem State wird die entsprechende Berechnungsart durchgef\"uhrt und danach der Abschluss der
+Berechnung mit \emph{calc\_done} signalisiert. Wichtig zu beachten ist dabei, dass sich die
+Rechenoperationen in der Ausf\"uhrungszeit unterscheiden k\"onnen.
+
 
 \subsection{History}
 Dieses Modul stellt die zentrale Speicherstelle f\"ur die verschiedenen Module da.