3 \subsection{Hardware as we know it}
9 \includegraphics<1>[height=6cm]{figures/cpus/pmiphone_boardtopbig}
10 \includegraphics<2>[height=6cm]{figures/cpus/Intel_core_i7}
11 \includegraphics<3>[height=6cm]{figures/cpus/6600GT_GPU}
12 \includegraphics<4>[height=6cm]{figures/cpus/Altera_StratixIV}
19 \item Iedereen weet wel wat hardware is. Hier een paar voorbeelden.
20 \item Binnenkant iPhone met veelvoud aan chips, Laatste Intel CPU, Nvidia Videochip, Altere FPGA
25 \frametitle{Designing Hardware}
26 \centerline{Design with 4 transistors}
28 \column{0.5\textwidth}
31 \centerline{\includegraphics[height=5cm, trim = 0 0 0 2.5cm, clip]{figures/schakelingen/NAND}}
33 \column{0.5\textwidth}
35 \centerline{\includegraphics[height=5cm, trim = 0 4.5cm 0 0, clip]{figures/schakelingen/CMOS_NAND_Layout}}
41 \item NAND: Gaat na dat beide ingangen niet 1 zijn
42 \item Een simpel hardware ontwerp met 4 transistoren
43 \item Links een schematisch ontwerp, Rechts de layout van de metaal lagen
48 \frametitle{Transistors}
51 \includegraphics<1>[height=6cm]{figures/transistor/hr-1sttransistor}
52 \includegraphics<2>[height=6cm]{figures/transistor/worldsfastes}
53 \includegraphics<3>[height=6cm]{figures/transistor/nehalem_432x315}
60 \item Hardware is opgebouwd uit transistoren, simpele schakelaar
61 \item Eerste transistor 60 jaar geleden, ter grootte van je hand
62 \item Het word allemaal steeds kleiner
63 \item Nu: Chip net iets groter dan je duim: 731 miljoen transistoren
68 \frametitle{Designing Hardware}
70 \centerline{\Large This won't work for 730 million transistors!}
72 \centerline{\includegraphics[height=4cm]{figures/transistor/nehalem-core}}
78 \frametitle{Designing Hardware}
80 \item We design hardware in the same format as software
81 \item We make designs in plain text!
82 \item Software: Programming Languages
83 \item Hardware: Hardware Description Languages
88 \item Harware designs worden gewoon in tekst opgeschreven.
89 \item Maar wel in een special taal voor hardware
90 \item Waar je voor software programmeer talen hebt,
91 \item Heb je voor hardware zogeheette hardwarebeschrijvingstalen
96 \frametitle{Designing Hardware}
98 \item Algorithmic / Behavioral Descriptions:
100 \item Describe \emph{what} the Hardware does
101 \item Relation between input and output
103 \item Structural Descriptions:
105 \item Describe \emph{how} the Hardware does it
106 \item Hierarchal composition
112 \item Algoritmische beschrijvingen beschrijven wat de Hardware moet doen, niet hoe die dat doet
113 \item Structurele beschrijvingen beschrijven hoe de Hardware dingen doet
114 \item In Structurele beschrijvingen worden componenten opgebouwd uit simpele schakelingen en/of andere componenten
115 \item Graag willen wij algorithmische beschrijvingen maken, en de structurele beschrijving hier automatisch van afleiden
120 \frametitle{Why do we make Hardware?}
122 \item We make hardware to solve problems
123 \item The solutionss are often described as a set of mathematical equations\footnote{But what is the equation for a CPU?}
124 \item `Holy Grail' Hardware Descriptions:
126 \item Input: Set of Mathematical Equations
127 \item Output: Hardware that is Provably correct, Fast , Small, Cheap to manufacture, and has a low Energy Usage
133 \item We maken hardware omdat we, soms vaag gedefineerde, problemen willen oplossen.
134 \item Oplossingen, vooral in de signaalverwerking (video, muziek, TV, etc.), zijn beschreven als een verzameling van wiskundige formules
135 \item Wat we dus graag zouden hebben, een zogenaamde heilige graal, is een programma aan welke we deze formules geven, en dat er dan automatisch super efficiente hardware uit komt.
136 \item Maar... wat is de formule van een CPU/Processor? Misschien moet is een oplossingen in `normaal nederlands' soms een betere input voor zo'n programma?
141 \frametitle{Functional Languages}
143 \item Functional programming languages allow us to specify programs that are close to a set of mathematical equations.
148 \item Functionele talen liggen dicht bij de wiskunde
153 \frametitle{Functional Languages \& Hardware}
155 \item When we want to calculate, 1 + 2 + 3, there is nothing that dictates that we should first calculate 1 + 2
156 \item Like mathematical equations, Functional languages do not dictate an order when there is none. So everything can be calculated in parallel.
157 \item In hardware, everything also happens in parallel: electrons flow through all the transistors every moment in time.
158 \item IDEA: Use functional languages to describe hardware!
163 \item In wiskundige formules is er vaak geen volgorde gedefineerd
164 \item Dit is dus hetzelfde in functionele talen, wat betekent dat alles tegelijk/parallel kan worden uitgerekent.
165 \item Bij `normale' programmeertalen is er vaak wel een volgorde
166 \item In hardware gebeurt ook alles tegelijkertijd
167 \item Het idee is dus om hardware te beschrijven in een functionele taal
172 % \frametitle{Mealy Machine}
174 % \centerline{\includegraphics<1>[width=6.25cm]{mealymachine2}
175 % \includegraphics<2>[width=6.25cm]{mealymachine2-func-red}
176 % \includegraphics<3>[width=6.25cm]{mealymachine2-state-red}}
177 % \label{img:mealymachine}
179 % \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
181 % run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} [] = []
182 % run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} (i:inputs) = o:outputs
184 % ({-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-}, o) = {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} i {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-}
185 % outputs = run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-} inputs
187 % \end{beamercolorbox}
190 % \item A Mealy machine bases its output on the current state and the input
191 % \item State is part of the function signature
192 % \item Both the current state, and the updated State
193 % \item The run function simulates a mealy machine for the provided number of inputs
198 % \frametitle{Haskell Description}
200 % \centerline{\includegraphics[width=6.25cm]{mealymachine2-func-red}}
202 % \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
207 % (State, OutputSignal)
209 % \end{beamercolorbox}
212 % \item In \clash{} you describe the logic part of the mealy machine
213 % \item The state in the signature is turned into memory elements when translating to VHDL