detailed desc: history
authorBernhard Urban <lewurm@gmail.com>
Thu, 25 Mar 2010 19:46:45 +0000 (20:46 +0100)
committerBernhard Urban <lewurm@gmail.com>
Thu, 25 Mar 2010 19:46:45 +0000 (20:46 +0100)
spec/sm/parser.pdf
spec/sm/parser.tex
spec/spec.tex

index 3f4000718374055de083ff20a417bd34b4048ae7..190dfca4b4deb4640a4b2418f681d02841f4debd 100644 (file)
Binary files a/spec/sm/parser.pdf and b/spec/sm/parser.pdf differ
index cc07d90800398d019dc674deae1c0fb186bd2200..5b4806bcac6d81ec1be40cc24ef0721bd58ed294 100644 (file)
@@ -8,7 +8,7 @@
 
 \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} &
@@ -17,9 +17,9 @@
 %%
 [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}
index 69606b218079bdff5105bf4fb000dd8fd1e66c77..f854e0c4c31dd1432a015ef6c6557bafe2811616 100644 (file)
@@ -166,6 +166,7 @@ data & in & 8 & std\_logic\_vector & PS/2 & Scancode laut Codepage 850 \ZE
 
 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
@@ -186,6 +187,7 @@ pc\_char & out & 8 & character & PC-Kommunikation & enth\"alt angeforderne Daten
 
 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
@@ -202,7 +204,7 @@ p\_rget & in & 1 & std\_logic & Parser & Signalisiert Leseanforderung \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
 
@@ -219,7 +221,7 @@ h\_rget & in & 1 & std\_logic & History & Signalisiert Leseanforderung \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
 
@@ -311,18 +313,10 @@ alle requirements muessen von testfaellen abgedeckt werden!
 
 \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
@@ -333,6 +327,14 @@ wie schauen interne strukturen aus? (speicher, logische bloecke, parallele proze
 \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}
@@ -356,8 +358,6 @@ Modul wird dadurch getriggert das anliegende Zeichen in den Buffer zu \"ubernehm
 \end{itemize}
 
 
-\subsection{History}
-
 \subsection{Parser}
 \begin{figure}[!ht]
 \includegraphics[width=0.9\textwidth]{sm/parser.pdf}
@@ -417,9 +417,9 @@ History Modul angefordert.
 
 \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'
@@ -436,14 +436,31 @@ auftritt. Es wird der String ``Error'' in den Ergebnisbuffer geschrieben und
 \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