Differences between revisions 26 and 27
Revision 26 as of 2014-07-22 10:57:53
Size: 3917
Editor: PaulWise
Comment:
Revision 27 as of 2014-07-22 12:09:18
Size: 4691
Editor: PaulWise
Comment: cleanup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
FPGA [1] (Field-programmable gate array) can be programmed to perform a particular computation in hardware. And when the array is large enough, it can perform many such computations in parallel. This resembles the execution of code on the GPU, just that the GPU can other than the FPGA not be changed in its functionality. [[WikiPedia:Field-programmable_gate_array|FPGA]] (Field-programmable gate array) can be programmed to perform a particular computation in hardware. And when the array is large enough, it can perform many such computations in parallel. This resembles the execution of code on the GPU, just that the GPU can other than the FPGA not be changed in its functionality.
Line 5: Line 5:
The flexibility of FPGAs makes them come in various flavours. They are usually coming on PCI or USB-pluggable boards, or they occupy a CPU slot. And when on a separate board, they may have some extra intelligence with them, which may be capable to run Linux. The flexibility of FPGAs makes them come in various flavours. They usually come on PCI or USB-pluggable boards, or they occupy a CPU slot. And when on a separate board, they may have some extra intelligence with them, which may be capable of running Linux.
Line 7: Line 7:
The FPGA vendors coming to mind first are Altera, Lattice and Xilinx [2]. When aiming at just getting some problem with FPGA solved with that machine attached to the net or to the USB port in a Debian compatible manner, there may be several options [3,4,5].

It is possible to run Debian on the [[OpenRISC]] architecture, read more about that on the [[OpenRISC]] port page.
FPGA vendors coming to mind first are Altera, Lattice and Xilinx [2]. When aiming at just getting some problem with FPGA solved with that machine attached to the net or to the USB port in a Debian compatible manner, there may be several options [3,4,5].
Line 20: Line 18:
FPGA commonly take their "layout"/"program" from some memory local to the FPGA. The program executed on the FPGA then does not touch that configuration but moves data to it and reads the results. The code of the FPGA is prepared in some Harware Description Language (HDL), where VHDL and Verilog are the ones seen most often. All would be fine if the tools to prepare the initial bitstream for the FPGA were Freely available. And for the better FPGA they are not even free as in beer. There are HDL emulators, but that is not fun. So, as a consequence, we can have the bitstreams in Debian non-free, and all tools relying on FPGA technologies only in contrib.

Anybody knowing better please correct this paragraph.

[[http://qi-hardware.com/|Qi Hardware]] is developing some [[https://github.com/Wolfgang-Spraul/fpgatools|open source FPGA tools]] for use with the Milkymist project.
FPGA commonly take their "layout"/"program" from some memory local to the FPGA. The program executed on the FPGA then does not touch that configuration but moves data to it and reads the results. The code of the FPGA is prepared in some Hardware Description Language (HDL), where VHDL and Verilog are the ones seen most often. All would be fine if the tools to prepare the initial bitstream for the FPGA were Freely available. And for the better FPGA they are not even free as in beer. There are HDL emulators, but that is not fun. So, as a consequence, we can have the bitstreams and all tools relying on FPGA technologies only in contrib.
Line 29: Line 23:
 * [[http://opencores.org]]
 * [[http://www.ohwr.org/]] - CERN's Open Hardware site
 * [[http://qi-hardware.com/]] - Qi Hardware - ship the FPGA-based [[http://www.milkymist.org/|Milkymist]] open hardware/software project
where there is yet nothing about application acceleration, though.
Line 40: Line 31:
== References == == Groups ==
Line 42: Line 33:
 * [1] [[http://en.wikipedia.org/wiki/Field-programmable_gate_array|Wikipedia on FPGA]]
 * [2] http://www.xilinx.com
 * [3] http://www.ztex.de
 * [4] http://www.sciengines.com
 * [5] please add your Debian-compatible FPGA resource here
 * http://papilio.cc/
 * http://www.mrc.uidaho.edu/fpga/index.php
 * http://en.wikipedia.org/wiki/VHDL
 * http://www.fpgacentral.com
 * https://github.com/stacksmith/fpgasm
 * [[http://opencores.org|OpenCores]]: hosting for open cores
 * [[http://www.ohwr.org/|OHRW]]: CERN Open Hardware repository
 * [[http://qi-hardware.com/|Qi Hardware]]: started by !OpenMoko people, created the Ben !NanoNote and the Milkymist One
 * [[http://m-labs.hk/|M-Labs]]: seems to have been spun out of Qi Hardware

== Ports ==

 * [[OpenRISC|Debian on OpenRISC]].

== Software ==

 * [[https://github.com/Wolfgang-Spraul/fpgatools|fpgatools]]: toolchain for programming FPGAs, only supports Xilinx XC6SLX9
 * [[https://github.com/stacksmith/fpgasm|fpgasm]]: create bare-metal FPGA designs without Verilog or VHDL (requires non-free Xilinx software)
 * [[http://github.com/m-labs/migen|Migen]]: Python-based tool to automate the VLSI design process
Line 53: Line 48:
 * http://fpgalibre.sourceforge.net/ingles.html
== Cores ==

 * [[http://openrisc.net/|OpenRISC]]: open source RISC CPU
 * [[https://github.com/openrisc/mor1kx|]]: an OpenRISC implementation
 * [[http://github.com/m-labs/misoc|MiSoC]]: SoC based on LM32 or OpenRISC
 * [[http://www.oracle.com/technetwork/systems/opensparc/|OpenSPARC]]: open release of Sun Microsystems' UltraSPARC T1 microprocessor

== Hardware ==

 * [[http://www.xilinx.com|Xilinx]]: produces FPGA hardware
 * [[http://www.ztex.de|ZTEX]]: produces FPGA boards with open board designs
 * [[http://papilio.cc/|Papilio]]: produces FPGA boards with open board designs
 * [[http://www.sciengines.com|SciEngines]]
 * [[http://m-labs.hk/mixxeo.html|The Mixxeo]]: digital video mixer using MiSoC, not yet released
 * [[http://m-labs.hk/m1.html|Milkymist One]]: FPGA based device for live video effects using open software, open board design and open CPU core (LM32 based)

== Resources ==

 * [[http://fpgalibre.sourceforge.net/ingles.html|FPGALibre]]: links to lots of FPGA resources
 * [[http://www.fpgacentral.com|FPGA Central]]: forum for FPGA discussions

FPGA computing with Debian and derivatives

FPGA (Field-programmable gate array) can be programmed to perform a particular computation in hardware. And when the array is large enough, it can perform many such computations in parallel. This resembles the execution of code on the GPU, just that the GPU can other than the FPGA not be changed in its functionality.

The flexibility of FPGAs makes them come in various flavours. They usually come on PCI or USB-pluggable boards, or they occupy a CPU slot. And when on a separate board, they may have some extra intelligence with them, which may be capable of running Linux.

FPGA vendors coming to mind first are Altera, Lattice and Xilinx [2]. When aiming at just getting some problem with FPGA solved with that machine attached to the net or to the USB port in a Debian compatible manner, there may be several options [3,4,5].

Debian had the ZTEX [3] in its distribution, removed since there was only limited gain over the use of upstream's pages, see ztex-ezusb:

  • their boards have schematics available and are prepared for IO, application acceleration,
  • the company regularly contributes to http://OpenCores.org, and

  • their API is Free.

While the ZTEX boards use Xilinx FPGAs themselves, that vendor supports Linux also directly, also for the boards to run the OS themselves. See FPGA/Xilinx for details.

FPGA and the DFSG

FPGA commonly take their "layout"/"program" from some memory local to the FPGA. The program executed on the FPGA then does not touch that configuration but moves data to it and reads the results. The code of the FPGA is prepared in some Hardware Description Language (HDL), where VHDL and Verilog are the ones seen most often. All would be fine if the tools to prepare the initial bitstream for the FPGA were Freely available. And for the better FPGA they are not even free as in beer. There are HDL emulators, but that is not fun. So, as a consequence, we can have the bitstreams and all tools relying on FPGA technologies only in contrib.

FPGA and the community

To employ FPGA technologies has enormous ecological advantages - the computation is so much faster with so little energy used for the acceleration. And the bitstreams produced are produced for the FPGA, in complete ignorance of the desktop operating system communicating for it. Hence - we should find ways to collaborate all across the Open Source landscape. Most advanced are

See also

Groups

  • OpenCores: hosting for open cores

  • OHRW: CERN Open Hardware repository

  • Qi Hardware: started by OpenMoko people, created the Ben NanoNote and the Milkymist One

  • M-Labs: seems to have been spun out of Qi Hardware

Ports

Software

Cores

Hardware

  • Xilinx: produces FPGA hardware

  • ZTEX: produces FPGA boards with open board designs

  • Papilio: produces FPGA boards with open board designs

  • SciEngines

  • The Mixxeo: digital video mixer using MiSoC, not yet released

  • Milkymist One: FPGA based device for live video effects using open software, open board design and open CPU core (LM32 based)

Resources