\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}}
\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}
\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: