Improve note page.
[matthijs/master-project/final-presentation.git] / matthijs / introduction.lhs
index e8b93304a8b10d2e2d1e8ee1dbd4dd2bc4a2b678..583408c12a3763fa6c7f073277ebd19979e12dfc 100644 (file)
@@ -1,11 +1,6 @@
 %include talk.fmt
-\title{Haskell as a higher order structural hardware description language}
-\author{Matthijs Kooijman}
-\date{December 14, 2009}
-
-\frame{\titlepage \setcounter{framenumber}{1}}
-
-
+\section{Presentation Matthijs}
+\subsection{Functions}
 \frame
 {
   \frametitle{Functions}
   \item Geen bijwerkingen.
 }
 
+\subsection{State}
+
 \frame
 {
-  TODO: Impure (stateful) example.
+  \frametitle{Multiply-accumulate}
+  \begin{columns}
+    \begin{column}{4cm}
+        \begin{tabular}{lll}
+          Input A & Input B & Output \\
+          \hline
+          1 & 1 & 1 \\
+          1 & 2 & 3 \\
+          1 & 1 & 4 \\
+          2 & 2 & 8 \\
+        \end{tabular}
+    \end{column}
+    \begin{column}{6cm}
+      \begin{figure}
+        \includegraphics[width=7cm]{figures/archs/Mac}
+      \end{figure}
+    \end{column}
+  \end{columns}
 }
 
 \note[itemize]
 {
-  \item TODO
+  \item Next sheet: MAC circuit and I/O values
+  \item MAC is common circuit
+  \item Multiplies pairs, one pair at a time
+  \item Stores sum so far
+  \item Not pure!
+  \item Depends on inputs \emph{and} current register value
+  \item Solution: Put register value (state) in argument
+}
+
+\frame
+{
+  \frametitle{Multiply-accumulate}
+  \begin{columns}
+    \begin{column}{4cm}
+      \begin{block}{}
+        \vspace{-0.5cm}
+\begin{verbatim}
+mac (a, b) (State s) = let
+  sum = s + (a * b)
+in (State sum, sum)
+\end{verbatim}
+      \end{block}
+    \end{column}
+    \begin{column}{6cm}
+      \begin{figure}
+        \includegraphics[width=7cm]{figures/archs/MacExternal}
+      \end{figure}
+    \end{column}
+  \end{columns}
 }
 
+\note[itemize]
+{
+  \item Next sheet: MAC implementation
+  \item Current state as argument (annotated)
+  \item Two parts in the result: New state and output
+  \item Register is placed ``outside''
+  \item We want it inside!
+  \item Annotation allows compiler to put it inside
+}
+
+\begin{frame}[fragile]
+  \frametitle{Simulating}
+
+  \begin{block}{Recursive run function}
+    run f (i:is) s = let
+      (s', o) = f i s
+    in o : (run f is s')
+  \end{block}
+
+  \begin{block}{Remember \texttt{mac}}
+\vspace{-0.5cm}
+\begin{verbatim}
+mac (a, b) (State s) = let
+  sum = s + (a * b)
+in (State sum, sum)
+\end{verbatim}
+  \end{block}
+\end{frame}
+
+\note[itemize]
+{
+  \item Next sheet: run function
+  \item Used for simulation only
+  \item Recursion ``stores'' state
+  \item Each recursion step, \texttt{f} is evaluated once.
+}
+
+\subsection{\texorpdfstring{\clash{}}{CLasH}}
+
 \frame{
   \begin{center}
   {\Huge \clash}
 
   \bigskip
-  CAES language for hardware descriptions
+  CAES Language for Synchronous Hardware
   \end{center}
 }
 
   \item Core: simpele functionale taal, niet minder expressief (vergelijk:
   taal zonder synoniemen)
   \item VHDL: Complexe HDL, gebruiken alleen netlist onderdelen.
-  \item Normalisatie: Nog simpeler maken.
+  \item Normalisatie: Nog simpeler maken (Polymorphisme, hogere orde eruit,
+  eenduidige vorm).
 }
 
+\subsection{Normalization}
 \frame
 {
   \frametitle{Netlists}
   \item De goede weg
 }
 
+\subsection{Summary}
+
 \frame
 {
   \frametitle{But now?}
   \item Tekortkomingen: Haskell is niet ideaal, state beschrijvingen zijn
   niet compact, transformaties zijn nog niet (bewezen compleet).
   \item Meer testen nodig, 
+  \item Met meer testen en meer werk -$>$ taal van de toekomst!
 }
 
+\subsection{Thanks}
 \frame
 {
-  {\Huge Thanks!}
-
+\vspace{2cm}\centerline{\Huge{Thanks!}}
 }
     
 % vim: set filetype=tex sw=2 sts=2 expandtab: