X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=matthijs%2Fintroduction.lhs;h=583408c12a3763fa6c7f073277ebd19979e12dfc;hb=34baaa870948dbc92f2eeff782a12dc9f4e751c6;hp=1e68a9bdfba7e1c34054f68800e8c05117eedb73;hpb=eddf8c0d7ac909cebfecb415e6cc2dc23e59e5b1;p=matthijs%2Fmaster-project%2Ffinal-presentation.git diff --git a/matthijs/introduction.lhs b/matthijs/introduction.lhs index 1e68a9b..583408c 100644 --- a/matthijs/introduction.lhs +++ b/matthijs/introduction.lhs @@ -1,11 +1,5 @@ %include talk.fmt \section{Presentation Matthijs} -\title{Haskell as a higher order structural hardware description language} -\author{Matthijs Kooijman} -\date{December 14, 2009} - -\frame{\titlepage \setcounter{framenumber}{1}} - \subsection{Functions} \frame { @@ -118,22 +112,104 @@ \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 } -\subsection{\clash} +\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 + CAES Language for Synchronous Hardware \end{center} } @@ -163,7 +239,8 @@ \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} @@ -305,13 +382,13 @@ \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: