3 \subsection{Hardware as we know it}
9 \includegraphics<1>[height=8cm]{figures/cpus/pmiphone_boardtopbig}
10 \includegraphics<2>[height=8cm]{figures/cpus/Intel_core_i7}
11 \includegraphics<3>[height=8cm]{figures/cpus/6600GT_GPU}
12 \includegraphics<4>[height=8cm]{figures/cpus/Altera_StratixIV}
19 \item Voorbeelden van hardware / chips
20 \item Next sheet: Binnenkant iPhone met veelvoud aan chips
21 \item Next sheet: Laatste Intel CPU
22 \item Next sheet: Nvidia Videochip
23 \item Next sheet: Altera FPGA
28 \frametitle{Designing Hardware}
29 \centerline{Design with 4 transistors}
31 \column{0.6\textwidth}
34 \centerline{\includegraphics[height=6cm, trim = 0 0 0 2.5cm, clip]{figures/schakelingen/NAND}}
36 \column{0.4\textwidth}
38 \centerline{\includegraphics[height=6cm, trim = 0 4.5cm 0 0, clip]{figures/schakelingen/CMOS_NAND_Layout}}
44 \item Next sheet: Transistor NAND design
45 \item Met de hand ontwerpen
46 \item Basis zijn transistoren
47 \item Links een schematisch ontwerp, Rechts de layout van de metaal lagen
52 \frametitle{Transistors}
55 \includegraphics<1>[height=8cm]{figures/transistor/hr-1sttransistor}
56 \includegraphics<2>[height=8cm]{figures/transistor/worldsfastes}
57 \includegraphics<3>[height=8cm]{figures/transistor/nehalem_432x315}
64 \item Next sheet: Eerste transistor 60 jaar geleden
65 \item Next sheet: Superkleine transistoren
66 \item Next sheet: 731 miljoen transistoren in deze chip
71 \frametitle{Designing Hardware}
73 \centerline{\Large Drawing won't work for 730 million transistors!}
75 \centerline{\includegraphics[height=7cm]{figures/transistor/nehalem-core}}
81 \item Next sheet: Floorplan 730 million
82 \item Computer details laten uitzoeken.
87 \frametitle{Designing Hardware}
89 \item We design hardware in the same format as software
90 \item We make designs in plain text!
91 \item Software: Programming Languages
92 \item Hardware: Hardware Description Languages
97 \item Hardware designs worden gewoon in tekst opgeschreven.
98 \item Maar wel in een special taal voor hardware
99 \item Waar je voor software programmeer talen hebt,
100 \item Heb je voor hardware zogeheette hardwarebeschrijvingstalen
105 \frametitle{Designing Hardware}
107 \item Algorithmic / Behavioral Descriptions:
109 \item Describe \emph{what} the Hardware does
110 \item Relation between input and output
112 \item Structural Descriptions:
114 \item Describe \emph{how} the Hardware does it
115 \item Hierarchal composition
121 \item Algoritmische beschrijvingen beschrijven wat de Hardware moet doen, niet hoe die dat doet
122 \item Structurele beschrijvingen beschrijven hoe de Hardware dingen doet
123 \item In Structurele beschrijvingen worden componenten opgebouwd uit simpele schakelingen en/of andere componenten
124 \item Graag willen wij algorithmische beschrijvingen maken, en de structurele beschrijving hier automatisch van afleiden
129 \frametitle{Why do we make Hardware?}
131 \item We make hardware to solve problems
132 \item Solutions (Algorithms) often described as a set of mathematical equations
133 \item `Holy Grail' Hardware Descriptions:
135 \item Input: Set of Mathematical Equations
136 \item Output: Hardware that is Provably correct, Fast , Small, Cheap to manufacture, and has a low Energy Usage
142 \item We maken hardware omdat we, soms vaag gedefineerde, problemen willen oplossen.
143 \item Oplossingen, vooral in de signaalverwerking (video, muziek, TV, etc.), zijn beschreven als een verzameling van wiskundige formules
144 \item Heilige graal -$>$ alles automatisch
146 \item Hebben we geen wiskundige programmeertalen?
151 \frametitle{Functional Languages}
153 \item Functionele talen liggen dicht bij de wiskunde
154 \item Calculate $2 * 3 + 3 * 4$
156 \item First calculate $2* 3$ ?
157 \item Or start with $3 * 4$ ?
164 \item Functionele talen eisen (vaak) geen volgorde van uitrekenen
165 \item Hardware ook niet
166 \item Lijkt goed overeen te komen
171 % \frametitle{Mealy Machine}
173 % \centerline{\includegraphics<1>[width=6.25cm]{mealymachine2}
174 % \includegraphics<2>[width=6.25cm]{mealymachine2-func-red}
175 % \includegraphics<3>[width=6.25cm]{mealymachine2-state-red}}
176 % \label{img:mealymachine}
178 % \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
180 % run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} [] = []
181 % run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} (i:inputs) = o:outputs
183 % ({-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-}, o) = {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} i {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-}
184 % outputs = run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-} inputs
186 % \end{beamercolorbox}
189 % \item A Mealy machine bases its output on the current state and the input
190 % \item State is part of the function signature
191 % \item Both the current state, and the updated State
192 % \item The run function simulates a mealy machine for the provided number of inputs
197 % \frametitle{Haskell Description}
199 % \centerline{\includegraphics[width=6.25cm]{mealymachine2-func-red}}
201 % \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
206 % (State, OutputSignal)
208 % \end{beamercolorbox}
211 % \item In \clash{} you describe the logic part of the mealy machine
212 % \item The state in the signature is turned into memory elements when translating to VHDL