\begin{psmatrix}[mnode=oval, colsep=1.95cm, rowsep=1cm]
[mnode=R,name=vars]{\shortstack[l]{int s, z, c,\\\, strich, punkt;\\opcode aktop,opp;}} &
-[name=calc]{\shortstack{\textbf{calc}\\z:=z*10\\+(c-'0');}} &
+[name=int]{\shortstack{\textbf{int}\\z:=z*10\\+(c-'0');}} &
[name=blank]{\shortstack{\textbf{blank}}} \\
%%
[mnode=R,name=res]{sys\_res} &
%%
[name=idle]{\shortstack{\textbf{idle}\\strich:=0;\\punkt:=1;\\opp:=NOP;}} &
[name=read]{\shortstack{\textbf{read char}\\z:=0;\\s:=1;}} &
-[name=alu]{
+[name=calc]{
\shortstack{
- \textbf{ALU}\\
+ \textbf{calc}\\
siehe Listing
}
} \\
\nccurve[angleA=45,angleB=75,ncurvA=2,ncurvB=2]{read}{read}\ncput*{' '}
\ncarc[arcangle=0]{read}{sign}\ncput*[npos=.50]{'-'}
-\ncarc[arcangle=0]{sign}{calc}
-\ncarc[arcangle=50]{read}{calc}\ncput*[npos=.35]{c = '0'\dots{}'9'}
-\nccircle[angleA=0]{calc}{.78cm}\ncput*[npos=0.5]{c = '0'\dots{}'9'}
+\ncarc[arcangle=0]{sign}{int}
+\ncarc[arcangle=50]{read}{int}\ncput*[npos=.35]{c = '0'\dots{}'9'}
+\nccircle[angleA=0]{int}{.78cm}\ncput*[npos=0.5]{c = '0'\dots{}'9'}
-\ncarc[arcangle=15]{calc}{blank}\ncput*[npos=.50]{' '}
+\ncarc[arcangle=15]{int}{blank}\ncput*[npos=.50]{' '}
\nccircle[angleA=0]{blank}{.70cm}\ncput*[npos=0.5]{' '}
-\ncarc[arcangle=67]{blank}{alu}\ncput*[npos=.80]{aktop = '+','-','*','/'}
+\ncarc[arcangle=67]{blank}{calc}\ncput*[npos=.80]{aktop = '+','-','*','/'}
\ncarc[arcangle=0]{blank}{null}\ncput*[npos=.50]{aktop = '\textbackslash 0'}
-\ncarc[arcangle=0]{calc}{alu}\ncput*[npos=.70]{aktop = '+','-','*','/'}
-\ncarc[arcangle=0]{calc}{null}\ncput*[npos=.50]{aktop = '\textbackslash 0'}
-\ncarc[arcangle=0]{null}{alu}
+\ncarc[arcangle=0]{int}{calc}\ncput*[npos=.70]{aktop = '+','-','*','/'}
+\ncarc[arcangle=0]{int}{null}\ncput*[npos=.50]{aktop = '\textbackslash 0'}
+\ncarc[arcangle=0]{null}{calc}
-\ncarc[arcangle=0]{alu}{read}\ncput*[npos=.50]{calc\_done$\uparrow$}
-\ncarc[arcangle=0]{alu}{done}\ncput*[npos=.50]{aktop == DONE}
+\ncarc[arcangle=0]{calc}{read}\ncput*[npos=.50]{int\_done$\uparrow$}
+\ncarc[arcangle=0]{calc}{done}\ncput*[npos=.50]{aktop == DONE}
\end{document}
char & out & 8 & character & History & Zeichen das vom History Modul \"ubernommen werden soll \ZE
take & out & 1 & std\_logic & History & Signalisiert Datenfeld char \ZE
+done & in & 1 & std\_logic & History & Signalisiert die \"Ubernahme der Daten \ZE
backspace & out & 1 & std\_logic & History & Signalisiert Backspace (letztes Zeichen im Buffer soll gel\"oscht werden) \ZE
do\_it & out & 1 & std\_logic & Parser & Auswertung beginnen (ENTER) \ZE
s\_char & in & 8 & character & Scanner & Zeichen das vom Scanner Modul \"ubernommen werden soll \ZE
s\_take & in & 1 & std\_logic & Scanner & Signalisiert Datenfeld char \ZE
+s\_done & out & 1 & std\_logic & Scanner & Signalisiert die \"Ubernahme der Daten \ZE
s\_backspace & in & 1 & std\_logic & Scanner & Signalisiert Backspace (letztes Zeichen im Buffer soll gel\"oscht werden) \ZE
d\_new\_eingabe & out & 1 & std\_logic & Display & Fordert Display auf die Eingabe auszulesen \ZE
p\_rdone & out & 1 & std\_logic & Parser & Signalisiert dass Daten anliegen \ZE
p\_read & in & 8 & character & Parser & enth\"alt angeforderne Daten \ZE
-p\_wdo & in & 1 & std\_logic & Parser & Signalisiert Schreibanforderung \ZE
+p\_wtake & in & 1 & std\_logic & Parser & Signalisiert Schreibanforderung \ZE
p\_wdone & out & 1 & std\_logic & Parser & Signalisiert dass Daten anliegen \ZE
p\_write & out & 8 & character & Parser & enth\"alt zu schreibende Daten \ZE
h\_rdone & out & 1 & std\_logic & History & Signalisiert dass Daten anliegen \ZE
h\_read & in & 8 & character & History & enth\"alt angeforderne Daten \ZE
-h\_wdo & in & 1 & std\_logic & History & Signalisiert Schreibanforderung \ZE
+h\_wtake & in & 1 & std\_logic & History & Signalisiert Schreibanforderung \ZE
h\_wdone & out & 1 & std\_logic & History & Signalisiert dass Daten anliegen \ZE
h\_write & out & 8 & character & History & enth\"alt zu schreibende Daten \ZE
\section{Detailed Design Description}
-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}
+TODO: not our business?
-\subsection{PS/2}
+\subsection{Display}
\subsection{RS232}
%test, TODO
\label{fig:rs232-rs}
\end{figure}
+
+\subsection{PC-Kommunikation}
+
+
+\subsection{PS/2}
+TODO: not our business?
+
+
\subsection{Scanner}
\begin{figure}[!ht]
\includegraphics[width=0.9\textwidth]{sm/scanner.pdf}
\end{itemize}
-\subsection{History}
-
\subsection{Parser}
\begin{figure}[!ht]
\includegraphics[width=0.9\textwidth]{sm/parser.pdf}
\item \textbf{sign}: Ggf. wird das Vorzeichen auf '-' gesetzt.
-\item \textbf{calc}: Zeichen f\"ur Zeichen wird eingelesen und die Zahl wird daraus berechnet.
+\item \textbf{int}: Zeichen f\"ur Zeichen wird eingelesen und die Zahl wird daraus berechnet.
-\item \textbf{ALU}: Punkt- und Strichrechnungen m\"ussen getrennt behandelt werden, daher ergibt
+\item \textbf{calc}: Punkt- und Strichrechnungen m\"ussen getrennt behandelt werden, daher ergibt
sich dieses Konstrukt im Codebeispiel.
\item \textbf{null}: Sonderbehandlung ist n\"otig wenn die Expression mit '\textbackslash 0'
\end{itemize}
-\subsection{Bin/Dez-Converter}
-
\subsection{ALU}
opcodes: NOP, ADD, MUL, DIV, DONE (als enum)
-\subsection{Display}
+\subsection{History}
+Dieses Modul stellt die zentrale Speicherstelle f\"ur die verschiedenen Module da.
+Die Idee ist dabei, dass intern ein RAM-Block mit mindestens der Gr\"o\ss{}e
+$(50\cdot2)*(71) = 710$ Bytes verwaltet wird.
+
+Das History Modul kann \"uber die angelegten Leitungen \emph{s\_take}, \emph{p\_rget},
+\emph{p\_wdo}, \emph{pc\_get} bzw. \emph{d\_get} feststellen welches Modul\footnote{die
+betreffendenen Module sind: Scanner, Parser, PC-Kommunikation und Display} eine Speicheranfrage
+ausf\"uhrt.
+Der Zugriff der externen Module erfolgt priorisiert:
+\begin{quote}
+Scanner > Parser > PC-Kommunikation > Display
+\end{quote}
+
+Weiters ist zu beachten, dass das History Modul f\"ur den Scanner und Parser intern einen Index
+mitspeichern muss, der die Adresse der aktuellen Eingabe mitf\"uhrt. Mit Hilfe dieses Indexes plus
+der Spaltenadressierung der Module kann die tats\"achliche Adresse f\"ur des internen RAM-Blockes
+ermittelt werden.
+
+Ist das History Modul mit der Speicheranfrage fertig, wird das andere Modul \"uber die entsprechende
+\emph{done}-Leitung benachrichtigt.
-\subsection{PC-Kommunikation}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%LISTINGS