some not-yet-really-creative stuff
[hwmod.git] / spec / spec.tex
1 \documentclass[12pt,a4paper,titlepage,oneside]{article}
2 %\documentclass[12pt,a4paper,titlepage,oneside]{report}
3
4 \usepackage{ProtocolHeader}
5
6 \begin{document}
7 \MakeTitleAndTOC
8
9 % howto use graphics
10 % \begin{figure}[!ht]
11 % \includegraphics[width=\textwidth]{ftol_pic.pdf}
12 % \centering
13 % \caption{Ein kleines, fehlertolerantes Computersystem}
14 % \label{fig:angabe}
15 % \end{figure}
16
17 %\chapter %for use with report class
18 \section
19 {Einleitung}
20
21 Es ist ein einfacher Taschenrechner, der die Grundrechnungsarten Addition, Subtraktion,
22 Multiplikation und Division beherrscht, auf einem FPGA Board zu realisieren. Dabei soll als Eingabegerät eine PS/2
23 Tastatur beziehungsweise als Ausgabegerät ein VGA Monitor dienen. Als zusätzliches Feature soll eine
24 History eingebaut werden, sodass vergangene Berechnungen angezeigt werden
25 können. Außerdem besteht die Möglichkeit diese History per RS232-Schnittstelle zu
26 exportieren bzw. importieren.
27
28 \section{Requirement Spezifikation}
29
30 TODO: in der Angabe steht nix von einer extrigen Requirement Spezifikation neben der High Level Beschreibung, aber im Template und Auf den Folien ist es als 3. Punkt neben High- und Low Level Spec noch erwähnt.
31
32 Die Subsections sind vielleicht ein kleiner Overshoot.
33
34
35 %TODO
36 wie schaut syntax aus der eingabe? 
37
38 \subsection{Eingabe}
39
40 \req{Der Taschenrechner soll eine Eingabe bestehend aus den Ziffern '0'-'9', Leerzeichen ' ', '+', '-', '*' und '/' ausrechnen können}
41
42 \req{Der Syntax für so eine Eingabe - eine \textbf{Expression} - sieht folgendermaßen aus:
43
44 DIGIT = ``0`` \textbar ``1`` \textbar ``2`` \textbar ``3`` \textbar ``4`` \textbar ``5`` \textbar ``6`` \textbar ``7`` \textbar ``8`` \textbar ``9`` ;
45
46 UNSIGNED = DIGIT { DIGIT } ;
47
48 OPERAND = [``-``] UNSIGNED ;
49
50 OPERATOR = ``+`` \textbar ``-`` \textbar ``*`` \textbar ``/`` ;
51
52 EXPRESSION = OPERAND \{ OPERATOR OPERAND \} ;
53 }
54
55 \req{Dabei soll Punkt- vor Strichrechnung gelten}
56
57 \req{Die Zahlen dürfen im Zahlenbereich eines signed long liegen ($-2^31$ bis $2^31-1$)}
58
59 \req{Die Eingabe darf aus 70 Zeichen bestehen}
60
61 \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'}
62
63 \subsection{Ausgabe}
64
65 \req{Die Anzeige der Ein- und Ausgaben erfolgt über einen VGA Monitor. Es wird pro Zeile eine Eingabe oder Ausgabe angezeigt. Die aktuelle Eingabezeile befindet sich zuoberst, darunter das Ergebnis der vorigen Rechnung, darunter die Eingabe der vorigen Rechnung und so weiter}
66
67 \subsection{History}
68
69 \req{Die letzten 50 Ein- und Ausgaben korrekter Eingaben werden als History im Speicher gehalten}
70
71 \req{Die History soll über RS232, auf Anfrage vom PC, oder bei Betätigen eines Buttons am Development Board, zum PC gesendet werden}
72
73
74 \section{High-Level Design Description}
75
76 TODO In Abbildung X ist der Aufbau des Taschenrechners zu sehen. Der Taschenrechner besteht aus folgenden Modulen:
77
78 %\subsection{Module}
79
80 was gibts fuer module? vorschlag:
81 \begin{itemize}
82 \item VGA - ist gegeben.
83 \item PS/2 - ist gegeben.
84 \item RS232 - TODO. baudrate? kodierung? (8N1?)
85 \item Historymodul - Verwaltung des dahinterliegenden Buffers
86 \item Parser - wertet ein gegeben Buffer aus.
87 \item Controlmodul - soll das Bindeglied zwischen allen Modulen sein, nimmt eingabe entgegen, legt berechnungen im buffer ab, ...?
88 \item Modul für die Kommunikation zum PC? oder gleich im Historymodul implementieren? oder ins
89 Controlmodul mit rein packen?
90 \end{itemize}
91
92 %\subsection{Interfaces}
93
94 \subsection{Externe Interfaces}
95
96 das ist mir noch nicht ganz klar was die da wollen. was meinen die z.b. mit ``interfaces
97 to VGA'' unter ``physical interfaces'' (seite 10 in der exercise.pdf)
98
99 ``physikalisch'' im sinne der VHDL entity? oder doch den physischen stecker?
100 Ersteres wuerde ich unter Logisches Interface verstehen.
101
102
103 \subsection{Interfaces der Module}
104
105 \subsubsection{VGA}
106
107 \subsubsection{PS/2}
108
109 \subsubsection{RS232}
110
111 \subsubsection{History}
112
113 \subsubsection{Parser}
114
115 \subsubsection{Control}
116
117 \subsection{Verhalten der Interfaces}
118
119 welche tasten als input erlauben (haben numblock und normale ziffern unterschiedliche scancodes?)?
120 wie werden ueberlaeufe behandelt?
121 fehlerhafte eingaben?
122 wie schaut die ausgabe aus?
123 was ausgaben bei fehler?
124 wie kann download oder upload einer history gestartet werden?
125 wie kann auf die history zugegriffen werden?
126 soll in der eingabe auch mit pfeiltasten (links,rechts) gescrolled werden koennen?
127
128
129 \subsection{Testfälle}
130
131 alle requirements muessen von testfaellen abgedeckt werden!
132
133
134 \section{Detailed Design Description}
135
136 alle Module hier genauer beschreiben
137
138 %TODO
139 wie wollen wir das design implementieren?
140 event sequence diagrams! UML?
141 wie schauen interne strukturen aus? (speicher, logische bloecke, parallele prozesse, state machines)
142
143 \subsection{VGA}
144
145 \subsection{PS/2}
146
147 \subsection{RS232}
148
149 \subsection{History}
150
151 \subsection{Parser}
152
153 \subsection{Control}
154
155
156 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
157 %LISTINGS
158 %\newpage
159 %\appendix
160 %\section{Listings}
161 %howto include src files
162 %\subsection{einfache Variante -- generierter Sourcecode}
163 %\label{att:einfachsrc}
164 %\lstinputlisting{../einfach/einfach.src}
165 %\lstinputlisting[firstnumber=24, firstline=24, lastline=34]{bla.src} %firstnumber shouldn't be necessary, but there is probably a bug
166
167 \end{document}
168