0e564bf7cf6b0a8dd847d27e1869c9599a186f46
[mw/milkymist.git] / doc / confslides_overview.tex
1 \documentclass{beamer}
2
3 \usepackage{beamerthemesplit}
4
5 \title{An open hardware VJ platform}
6 \subtitle{Technical overview}
7 \author{S\'ebastien Bourdeauducq}
8 \date{June 2009}
9
10 \begin{document}
11
12 \frame{
13   \begin{figure}[H]
14   \includegraphics[height=18mm]{logo.eps}
15   \end{figure}
16   \titlepage
17 }
18
19 \section{Introduction}
20 \subsection{What we are speaking about}
21 \frame
22 {
23   \frametitle{What we are speaking about}
24 A device for video performance artists (VJs)...
25   \begin{itemize}
26   \item inspired by the popular MilkDrop program for PCs
27   \item with many interfaces: MIDI, DMX, can also do video mixing
28   \item highly integrated
29   \end{itemize}
30
31 At the frontier between...
32   \begin{itemize}
33   \item big computers with software to render visual effects
34   \item and small, handy microcontroller boards you connect to anything\\(``Arduino'' is today's buzzword for those)
35   \end{itemize}
36 }
37
38 \frame
39 {
40   \frametitle{What is that MilkDrop thing?}
41   \begin{figure}[H]
42   \includegraphics[height=58mm]{milkdrop1.eps}
43   \end{figure}
44 }
45
46 \frame
47 {
48   \frametitle{What is that MilkDrop thing?}
49   \begin{figure}[H]
50   \includegraphics[height=58mm]{milkdrop2.eps}
51   \end{figure}
52 }
53
54 \frame
55 {
56   \frametitle{What is that MilkDrop thing?}
57   \begin{figure}[H]
58   \includegraphics[height=58mm]{milkdrop3.eps}
59   \end{figure}
60 }
61
62 \subsection{Open Hardware, for real}
63 \frame
64 {
65   \frametitle{Open Hardware, for real}
66
67   \begin{itemize}
68   \item Arduino = AVR + power supply + connectors.
69   \item The AVR chip does all the magic! And it's a black box in every sense.
70   \item Here, all the logic of the chip is described (in Verilog HDL)...
71   \item ...and open source!
72   \item Ask Atmel for the same!
73   \end{itemize}
74 }
75
76
77 \section{System architecture}
78 \subsection{The design flow}
79 \frame
80 {
81   \frametitle{The design flow}
82   
83   ``System-on-a-Programmable-Chip'' (SoPC):
84   \begin{itemize}
85   \item A microcontroller is implemented using the FPGA fabric
86   \item The software is written and compiled (GCC)
87   \item The compiled firmware is flashed/loaded on the board
88   \item The microprocessor made from the FPGA fabric executes it
89   \item Acceleration units and specialty peripherals are added to the system and driven by the software
90   \end{itemize}
91 }
92
93 \subsection{SoC interconnect}
94 \frame
95 {
96   \frametitle{SoC interconnect}
97   
98   Three different buses are used:
99   \begin{itemize}
100   \item WISHBONE as general purpose bus (Opencores standard)
101   \item Simplified bus for CSRs (custom)
102   \item Fast Memory Link bus tailored for high speed DRAM access (custom)
103   \end{itemize}
104 }
105
106 \subsection{Building blocks}
107 \frame
108 {
109   \frametitle{Base system}
110   
111   \begin{itemize}
112   \item 32-bit RISC CPU, WISHBONE bus, supported by GCC:
113   \begin{itemize}
114   \item Mico32 (from Lattice Semiconductors)
115   \item AEMB (from Shawn Tan, instruction set compatible with Xilinx's Microblaze)
116   \end{itemize}
117   \item Off-chip Flash
118   \item On-chip SRAM
119   \item UART (debug), GPIO, ...
120   \item Can run ucLinux or be programmed like a microcontroller, without OS.
121   \end{itemize}
122 }
123
124 \frame
125 {
126   \frametitle{Memory interface}
127   
128   \begin{itemize}
129   \item Off-chip DDR SDRAM
130   \item Custom controller
131   \item Flexible and high quality
132   \begin{itemize}
133   \item reused by the NASA in the development of a software-defined radio prototype for the ISS
134   \end{itemize}
135   \item Custom high-performance bus interface (FML)
136   \item Bridged to WISHBONE
137   \begin{itemize}
138   \item the base system can transparently access DRAM
139   \end{itemize}
140   \end{itemize}
141 }
142
143 \frame
144 {
145   \frametitle{VGA output}
146   
147   \begin{itemize}
148   \item The FPGA directly drives a video DAC for VGA
149   \item Framebuffer-based (in DDR SDRAM)
150   \item Supports multiple buffering
151   \item Automatic buffer switch during blanking intervals
152   \end{itemize}
153 }
154
155 \frame
156 {
157   \frametitle{Graphics acceleration}
158   
159   \begin{itemize}
160   \item Texture mapping unit
161   \begin{itemize}
162   \item implements any kind of image ``distortion''
163   \end{itemize}
164   \item Programmable floating point unit
165   \begin{itemize}
166   \item similar to a vertex shader
167   \end{itemize}
168   \item Flexible, can be used to implement MilkDrop or others...
169   \end{itemize}
170 }
171
172 \frame
173 {
174   \frametitle{Video inputs}
175   
176   \begin{itemize}
177   \item Still in development
178   \item Dual PAL/NTSC inputs
179   \item Off-chip ADC and decoder
180   \item For live video mixing applications
181   \end{itemize}
182 }
183
184 \frame
185 {
186   \frametitle{Control peripherals}
187   
188   \begin{itemize}
189   \item Also in development
190   \item Support planned for:
191   \begin{itemize}
192   \item MIDI (electronic instruments)
193   \item DMX512 (stage lighting)
194   \item Ethernet -- OpenSoundControl
195   \end{itemize}
196   \item Artistic installations, performances, ...
197   \end{itemize}
198 }
199
200
201 \section{Contacts}
202 \frame
203 {
204   \frametitle{Thank you for your attention}
205   \begin{itemize}
206   \item Web: \url{http://www.milkymist.org}
207   \begin{itemize}
208   \item documented source code (GPLv3 licensing)
209   \item binary kits (to get started fast)
210   \item mailing list
211   \item wiki (with suggested contributions)
212   \item blog
213   \item these slides are online
214   \end{itemize}
215   \item Mail: sebastien.bourdeauducq [AT] lekernel DOT net
216   \end{itemize}
217
218   \begin{center}
219   \framebox[100mm][c]{Questions?}
220   \end{center}
221 }
222
223 \end{document}