\documentclass{beamer}

\usepackage{beamerthemesplit}

\title{Milkymist System-on-Chip}
\subtitle{The architecture for the FLOSS world}
\author{S\'ebastien Bourdeauducq}
\date{Piksel09 -- Bergen -- November 19-22, 2009}

\begin{document}

\frame{
  \begin{figure}[H]
  \includegraphics[height=18mm]{logo.eps}
  \end{figure}
  \titlepage
}

\section{Introduction}
\subsection{Open Hardware?}
\frame
{
  \frametitle{Open Hardware?}
  \begin{itemize}
  \item Open source software is already well known...
  \item Among many hackers and artists: trend for ``open source hardware''
  \item What is it, exactly?
  \end{itemize}
}

\frame
{
  \frametitle{Some (bad) examples}
  \begin{itemize}
  \item Arduino and Beagleboard projects
  \item What is ``open''?
  \begin{itemize}
    \item Freely modifiable/redistributable/manufacturable/... schematics and circuit board
    \begin{itemize}
      \item Ahah, come on! every chip manufacturer has been giving them away for decades!
      \item By the way, did you know Beagleboard was run by Texas Instruments?
    \end{itemize}
    \item Big community of tinkerers, open source tools, community support
    \begin{itemize}
      \item But is the hardware itself open?
    \end{itemize}
  \end{itemize}
  \item The real technical magic is inside the chip (Atmel's AVR or Texas Instruments's OMAP)
  \item \underline{And it could not be more closed and proprietary!}
  \end{itemize}
}

\subsection{Making it real}
\frame
{
  \frametitle{Let's make our own open chip then!}
  \begin{itemize}
  \item But isn't manufacturing a chip horribly expensive?
  \begin{itemize}
    \item Hell, it is...
    \item The cost of setting up the foundry for a complex chip reaches millions of euros
    \item Fablabs/Hacker-run foundry anyone? (let's be ambitious!)
    \item But, seriously...?
  \end{itemize}
  \item Use reconfigurable logic!
  \begin{itemize}
    \item FPGAs can ``emulate'' any digital circuit
    \item Okay, FPGA design tools are proprietary...
    \item but the circuit itself can be free and portable
    \item Reverse engineering anyone? (hard but easier than the aforementioned foundry)
  \end{itemize}
  \end{itemize}
}

\frame
{
  \frametitle{I was told that...}
  \begin{itemize}
  \item Aren't FPGAs still expensive (high per-unit cost), plus low-density, slow and bulky?
  \item That was the case 10 years ago...
  \end{itemize}
  \begin{figure}[H]
  \includegraphics[height=48mm]{ikosboards.eps}
  \end{figure}
}

\frame
{
  \frametitle{Debunking the myth}
  \begin{itemize}
  \item FPGA per-unit cost is falling, and their density and speed are increasing
  \item Careful system design runs fast...
  \item and uses FPGA resources with a fair efficiency.
  \begin{itemize}
  \item Even though ``hard'' chip:
  \item faster, fewer transistors than the equivalent FPGA
  \item but NRE cost is today a show-stopper
  \end{itemize}
  \item ``Large Scale Integration'' absorbs the cost of the FPGA by reducing the number of chips on the board.
  \end{itemize}
}

\section{The architecture for the FLOSS world}
\subsection{The architecture for the FLOSS world}
\frame
{
  \frametitle{The architecture for the FLOSS world}
  \begin{itemize}
  \item Milkymist features a custom, free System-on-Chip design
  \begin{itemize}
  \item which also brings about technical advantages
  \item large scale integration
  \item performance
  \item size
  \end{itemize}
  \item Works like AVR (Arduino) or OMAP (Beagleboard)
  \item Works on FPGAs -- reconfigurable silicon
  \begin{itemize}
  \item enables everyone to modify and test the design
  \end{itemize}
  \item Portable code -- small effort to port to all FPGA vendors, even to make a fully ``hard'' chip
  \item Most of the code (which directly generates the electronic circuit) is GNU GPL v3 licensed
  \end{itemize}
}

\subsection{What makes it specific?}
\frame
{
  \frametitle{What makes it specific?}
  \begin{itemize}
  \item The Milkymist System-on-Chip (SoC) contains a general-purpose Linux-capable computer.
  \begin{itemize}
  \item Embedded computer: like the AVR microcontroller
  \item Difference between ``microcontroller'' and ``SoC'': only about performance and complexity
  \item Fuzzy border
  \end{itemize}
  \begin{figure}[H]
  \includegraphics[height=40mm]{linux.eps}
  \end{figure}
  \end{itemize}
}

\frame
{
  \frametitle{VJ-friendly built-in features}
  \begin{itemize}
  \item Video output (VGA)
  \item Video input (PAL/NTSC)
  \item AC'97 audio
  \item Control interfaces
  \begin{itemize}
    \item Ethernet (OpenSoundControl) + MIDI
    \item DMX512
    \item USB
    \item IR remote control
    \item Generic I/O
  \end{itemize}
  \item Hardware graphics acceleration
  \begin{itemize}
    \item PFPU (similar to a vertex shader)
    \item Texture Mapping Unit
  \end{itemize}
  \item \textbf{All this with a minimal number of additional chips, and with a truly open design}
  \end{itemize}
}

\section{Software}
\subsection{Development tools}
\frame
{
  \frametitle{Development tools}
  \begin{itemize}
  \item The System-on-Chip is very flexible (software controlled)
  \item Like most computer systems, you can program it in C/C++
  \item Linux operating system is optional
  \item GCC is capable of compiling programs for the Milkymist SoC
  \begin{itemize}
  \item currently requires a patch
  \item the upcoming GCC 4.5 will have built-in support for compiling Milkymist software
  \end{itemize}
  \item Interpreted languages (Python, Ruby, ...) can probably be easily ported
  \end{itemize}
}

\subsection{Intended application}
\frame
{
  \frametitle{Intended application}
  \begin{itemize}
  \item The intended use is to implement a VJ application
  \item Inspired by the popular MilkDrop program for PCs
  \end{itemize}
  \begin{figure}[H]
  \includegraphics[height=50mm]{milkdrop1.eps}
  \end{figure}
}

\frame
{
  \frametitle{Genode FX GUI toolkit}
  \begin{itemize}
  \item \url{http://www.genode-labs.com}
  \end{itemize}
  \begin{figure}[H]
  \includegraphics[height=50mm]{genode.eps}
  \end{figure}
}

\section{Boards}
\subsection{Generic FPGA development boards}
\frame
{
  \frametitle{Generic FPGA development boards}
  \begin{itemize}
  \item Works on development boards from FPGA vendors
  \item Xilinx ML401
  \item Not all interfaces are supported
  \end{itemize}
  \begin{figure}[H]
  \includegraphics[height=37mm]{ml401.eps}
  \end{figure}
}

\subsection{Custom board}
\frame
{
  \frametitle{Custom board}
  \begin{itemize}
  \item A custom board is being developed
  \item All interfaces will be there!
  \item PCB prototypes should be ready in a couple of months
  \begin{itemize}
  \item completing all FPGA and software development will take more
  \item stay tuned...
  \end{itemize}
  \end{itemize}
}

\section{Contacts}
\frame
{
  \frametitle{Thank you for your attention}
  \begin{itemize}
  \item Web: \url{http://www.milkymist.org}
  \begin{itemize}
  \item documented source code (GPLv3 licensing)
  \item binary kits (to get started fast on a generic FPGA board)
  \item mailing list
  \item wiki (with suggested contributions)
  \item blog
  \item these slides are online
  \end{itemize}
  \item Mail: sebastien.bourdeauducq [AT] lekernel DOT net
  \end{itemize}

  \begin{center}
  \framebox[100mm][c]{Questions?}
  \end{center}
}

\end{document}
