statemachine: alu (nix aufregendes)
authorBernhard Urban <lewurm@gmail.com>
Thu, 25 Mar 2010 23:09:58 +0000 (00:09 +0100)
committerBernhard Urban <lewurm@gmail.com>
Thu, 25 Mar 2010 23:09:58 +0000 (00:09 +0100)
spec/sm/alu.pdf [new file with mode: 0644]
spec/sm/alu.tex [new file with mode: 0644]
spec/spec.tex

diff --git a/spec/sm/alu.pdf b/spec/sm/alu.pdf
new file mode 100644 (file)
index 0000000..20cf4a2
Binary files /dev/null and b/spec/sm/alu.pdf differ
diff --git a/spec/sm/alu.tex b/spec/sm/alu.tex
new file mode 100644 (file)
index 0000000..fcb5554
--- /dev/null
@@ -0,0 +1,35 @@
+\documentclass{minimal}
+\pagestyle{empty}
+
+\usepackage{pstricks}
+\usepackage{pst-node}
+
+\begin{document}
+
+\begin{psmatrix}[mnode=oval, colsep=3cm, rowsep=3cm]
+[name=add]{\shortstack{\textbf{ADD}}} & &
+[name=sub]{\shortstack{\textbf{SUB}}} \\
+%
+[mnode=R,name=res]{sys\_res\_n} &
+[name=idle]{\shortstack{\textbf{idle}}}\\
+%
+[name=mul]{\shortstack{\textbf{MUL}}} & &
+[name=div]{\shortstack{\textbf{DIV}}} \\
+\end{psmatrix}
+
+\psset{arrows=->, shortput=nab}
+
+\ncline[linestyle=dotted]{res}{idle}
+
+\ncarc[arcangle=20]{idle}{add}\ncput*[npos=.50]{\shortstack{do\_calc $\uparrow$\\opc == ADD}}
+\ncarc[arcangle=20]{add}{idle}\ncput*[npos=.50]
+
+\ncarc[arcangle=20]{idle}{sub}\ncput*[npos=.50]{\shortstack{do\_calc $\uparrow$\\opc == SUB}}
+\ncarc[arcangle=20]{sub}{idle}
+
+\ncarc[arcangle=20]{idle}{mul}\ncput*[npos=.50]{\shortstack{do\_calc $\uparrow$\\opc == MUL}}
+\ncarc[arcangle=20]{mul}{idle}
+
+\ncarc[arcangle=20]{idle}{div}\ncput*[npos=.50]{\shortstack{do\_calc $\uparrow$\\opc == DIV}}
+\ncarc[arcangle=20]{div}{idle}
+\end{document}
index c1817734a7531cce1b9955cb061a5c68e7349a21..59069db0fbba21eab84935b860daa3baf8a9603f 100644 (file)
@@ -439,7 +439,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.