modifizierter fabb patch
[hwmod.git] / spec / spec.tex
index 212f5d7146920fef65a9617faef2c80cdb56631b..628d28a7c8e633e766fc57b7e627d216251368c9 100644 (file)
@@ -93,27 +93,8 @@ Berechnungs-Endergebnis wird jedoch wieder in einzelne Charakter umgerechnet und
 \end{itemize}
 
 
-\subsection{Physikalische Interfaces}
-
-%TODO die pins sind wahrscheilich gefragt
-%wie ist das mit dem clock? externe ungenaue clock + interne pll oder wie?
-
-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.
-
 \begin{landscape}
-\subsection{Logische Interfaces der Module}
+\subsection{Logische und physikalische Interfaces der Module}
 
 \subsubsection{VGA}
 \THEAD
@@ -136,8 +117,10 @@ free & out & 1 & std\_logic & Display & Signalisiert Bereitschaft \ZE
 \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
-new\_result & in & 1 & std\_logic & History & Fordert History auf das Ergebnis auszulesen \ZE
+new\_eingabe & in & 1 & std\_logic & History & Aufforderung der History die aktuelle Eingabe
+auszulesen \ZE
+new\_result & in & 1 & std\_logic & History & Aufforderung der History das aktuelle Ergebnis
+auszulesen \ZE
 zeile & out & 5 & std\_logic\_vector & History & Zeilenadressierung ($2 * 15$ Zeilen $=30$) \ZE
 spalte & out & 7 & std\_logic\_vector & History & Spaltenadressierung (71 Ziechen inklusive \textbackslash 0) \ZE
 get & out & 1 & std\_logic & History & Signalisiert Speicheranforderung \ZE
@@ -285,22 +268,69 @@ p\_finished & in & 1 & std\_logic & Parser & Auswertung fertig \ZE
 
 
 \subsection{Verhalten der Interfaces}
+\paragraph{Erlaubte Keyboard-Eingaben}
+
+Als erlaubte Eingabetasten werden die Ziffern \emph{`0'} bis \emph{`9'} am Numpad, die Zeichen
+\emph{`/'}, \emph{`*'}, \emph{`-'} und \emph{`+'} am Numpad, die beiden Enter-Tasten und die Backspace-Taste akzeptiert. Dabei wird auf jede gedrückte Taste nur einmal reagiert. Alle anderen Tasten auf der Tastatur werden ignoriert.
+%warum nur numpad? weil / und * dann über eine shift-kombination erreicht werden müssen und die scancode-behandlung würd ich mir nicht antun wollen
+%ob numlock gedrückt ist oder nicht sollt egal sein - ändert die scancodes nicht AFAIK
+%wird auf eine taste wirklich nur einmal reagiert wenn man z.B. die 0 hält und CTRL drückt und wieder los lässt?
+
+Während eine Berechnung durchgeführt wird, sind die Tastatureingaben wirkungslos.
 
-welche tasten als input erlauben (haben numblock und normale ziffern unterschiedliche scancodes?)?
+%wie wärs mit einem easter egg...
 
-wie werden ueberlaeufe behandelt?
+\paragraph{Overflows}
+Tritt ein Overflow während der Berechnung auf -- entweder in einem Zwischenergebnis, oder im
+Endergebnis -- dann wird der Fehlerstring ``ERROR'' in der Ergebniszeile ausgegeben.
+%TODO aufwendigere fehlermeldung? zb "ERROR: OVERFLOW"
 
-fehlerhafte eingaben?
+\paragraph{Fehlerhafte Eingaben}
+Entspricht eine zu berechnende Eingabezeile nicht dem Format der Regular Expression aus Requirement
+Req.2, so wird der Fehlerstring ``ERROR'' in der Ergebniszeile ausgegeben.
+%TODO aufwendigere fehlermeldung? zb "ERROR: FEHLERHAFTE EINGABE"
 
-wie schaut die ausgabe aus?
+Liegt der Wert eines Zahlen-Literals außerhalb dem Wertebereich eines Signed Long, dann wird der
+Fehlerstring ``ERROR'' am Bildschirm ausgegeben.
+%TODO aufwendigere fehlermeldung? zb "ERROR: ZAHL ZU GROSS"
 
-was ausgaben bei fehler?
+\paragraph{Bildschirm-Layout}
+Die erste Berechnung nach dem Reset f\"angt links oben an. Die Eingabezeile wandert nach der Eingabe
+von Berechnungen ``runter'', d.h. \"uber der aktuellen Eingabezeile befinden sich die Ein- bzw.
+Ausgaben der vergangenen Berechnungen. 
+Wird das Ende des Bildschirms erreicht, so wird automatisch weitergescrollt (entsprechend
+verschwinden dann vergangene Berechnungen inkl. Ergebnisse vom Bildschirm).
+%TODO vielleicht in entsprechend ähnlichem requirement etwas abstrakter werden wie in der angabe
 
-wie kann download oder upload einer history gestartet werden?
+Die Eingabezeile wird ebenso dargestellt wie die Eingabe erfolgt ist (Leerzeichen werden dargestellt), von der ersten Textspalte bis zur 70.
+%TODO vielleicht vor jede zeile präfix "IN3: " / "OUT3: "?
 
-wie kann auf die history zugegriffen werden?
+Alle Textausgaben sind in weißer Schrift dargestellt.
 
-soll in der eingabe auch mit pfeiltasten (links,rechts) gescrolled werden koennen?
+\paragraph{Fehlermeldungen}
+Fehlermeldungen werden als Strings wie ein korrektes Ergebnis in die entsprechende Ausgabezeile geschrieben.
+
+Fehlerhafte Eingaben und Fehlermeldungen werden ebenso am Bildschirm dargestellt wie korrekte. Bei Abfrage der History über RS232 werden daher auch fehlerhafte Ein- und Ausgaben dazugezählt.
+
+\paragraph{Taster}
+Bei Drücken des Buttons \emph{A} wird eine einmalige Übertragung des History-Inhalts über
+die RS232-Schnittstelle veranlasst.
+Der Taster wird sowohl beim Drücken, als auch beim Loslassen entprellt mit einer Entprellzeit von 100ms.
+
+\paragraph{RS232}
+Die Kommunikation über RS232 erfolgt über 8N1-Codierung ohne Handshake.
+
+Bei Senden des Zeichens \emph{` \textbackslash n'} vom PC an den FPGA über die RS232 Schnittstelle wird
+eine einmalige Übertragung des History-Inhalts über die RS232-Schnittstelle veranlasst, ebenso wie
+beim Drücken des Buttons \emph{A}.
+%oder doch ein anderes zeichen?
+
+Der History Inhalt wird im ASCII Format über die RS232 Schnittstelle an den PC gesendet. Dabei wird
+mit der 1. Eingabe begonnen, dann die 1. Ausgabe, die 2. Eingabe usw. Die aktuelle Eingabezeile
+wird NICHT mit übertragen. Die Ein- und Ausgabezeilen werden nur bis zum letzten erlaubten
+Eingabe- bzw. Ausgabezeichen gesendet. Nach jeder Zeile folgt ein \emph{` \textbackslash n'} Zeichen.
+%TODO das format hat irgendwie anders geheißen bild ich mir ein
+%oder doch immer die volle zeilenlänge von 70 zeichen senden weil einfacher?
 
 
 \subsection{Testfälle}
@@ -313,9 +343,15 @@ alle requirements muessen von testfaellen abgedeckt werden!
 \section{Detailed Design Description}
 
 \subsection{VGA}
-TODO: not our business?
+siehe \textit{hwmod\_ipcores.pdf}
 
 \subsection{Display}
+\begin{figure}[!ht]
+\includegraphics[width=0.9\textwidth]{sm/display.pdf}
+\centering
+\caption{Statemachine zum Anzeigen der Daten}
+\label{fig:display}
+\end{figure}
 
 \subsection{RS232}
 %test, TODO
@@ -348,8 +384,7 @@ Spaltencounter erh\"oht.
 
 
 \subsection{PS/2}
-TODO: not our business?
-
+siehe \textit{hwmod\_ipcores.pdf}
 
 \subsection{Scanner}
 \begin{figure}[!ht]