fomu-hardware icon indicating copy to clipboard operation
fomu-hardware copied to clipboard

Tomu FPGA (Fomu for short), a FPGA which fits inside your USB port!

= link:https://tomu.im[Tomu, I'm (FPGA version)]

image:fomu.png[I'm Fomu]

link:https://tomu.im[I'm Tomu] FPGA (Fomu for short!) a tiny FPGA board that fits in your USB port. People sometimes call me "Fomu" for short!

I have four buttons and an RGB LED.

== Telling Tomu and Tomu FPGA apart!

Professionally produced Tomu boards have the following color scheme;

  • https://j.mp/tomu-fs[Tomu FPGA boards are blue].
  • https://j.mp/tomu-cs[Original Tomu boards are green].

However, as people are encouraged to produce their own Tomu boards, please look at the device careful to check what type you have. See the following table for what to look for;

[cols="3",] |================================================================ | | Original Tomu | Tomu FPGA | Board Color | Green | Blue | LEDs | One Green + One Red | One Red Green Blue LED | Components | A single large black IC taking up most of the board. | Multiple little black ICs covering the board.

| Test point pattern | FIXME | link:./archive/pvt[PVT board] image:archive/pvt/images/fomu_pvt_test_points.jpg[fomu pvt]

|================================================================

The original Tomu has one large black IC on the board.

== Contact

  • https://groups.google.com/forum/#!forum/tomu-announce/join[Announcement mailing list] - Low traffic list for announcements.
  • https://groups.google.com/forum/#!forum/tomu-discuss/join[Discussion mailing list] - List for discussing development / new features / etc.
  • https://webchat.freenode.net/?channels=#tomu[IRC Channel - irc://irc.freenode.net/#tomu] - IRC channel for discussing anything related to the project.

== Board Variants

There are several variants of Fomu hardware

=== link:./hacker[Hacker version]

  • The hacker version is designed for people who are up to the challenge of building their own board.
  • It has a simpler PCB which makes it cheaper to produce in a small quantities.
  • However, it uses a non-standard footprint for the FPGA WSCP which reduces yield and long term reliability making it unsuitable for mass production.
  • It's also missing some decoupling capacitors and power filters, which may impact stability
  • Only two SPI wires are connected, meaning it cannot handle quad SPI

=== link:./archive/evt[Production version EVT]

  • This is a prototype board designed to fit on top of a Raspberry Pi
  • It does not fit on a USB port
  • The large size makes it easier to debug
  • The schematic serves as the basis for future production boards
  • It uses 6/6 design rules, making it very easy to produce

=== link:./archive/dvt[Production version DVT]

  • The first test run using advanced PCB technologies like laser drilled and blind vias
  • If there are no changes, this will be mass produced

=== link:./archive/pvt[Production version PVT]

  • You get a production version if you order from https://xobs.io/[Sean 'xobs' Cross] https://j.mp/fomu-cs[through or after the Crowd Supply campaign].

== FPGA Specifications

There are currently two versions of Tomu FPGA. Both boards and based around mostly the same schematic and should be mostly compatible and based around the Lattice iCE40UP5K FPGA and have the same set of features listed below;

  • http://www.latticesemi.com/Products/FPGAandCPLD/iCE40UltraPlus[Lattice iCE40 UltraPlus 5K]
    • 5K 4 input LUTs + DSP tiles
    • 128 kilobytes internal SRAM
    • 1024 kilobytes (or more) flash (XIP possible)
  • 1 x RGB LED
  • 2 x touch buttons

image:https://github.com/osresearch/up5k/raw/master/images/up5k.svg?sanitize=true[]

== Development Firmware

The Lattice iCE40UP5K has a fully open source https://wikipedia.org/wiki/Verilog[Verilog] → https://wikipedia.org/wiki/Bitstream[Bitstream] toolchain.

Supported by the https://github.com/timvideos/litex-buildenv/wiki[LiteX BuildEnv]. The LiteX BuildEnv supports your https://github.com/timvideos/litex-buildenv/wiki/SoftCPU[choice of CPU architecture];

  • https://github.com/timvideos/litex-buildenv/wiki/LatticeMico32[LatticeMico32]
  • https://github.com/timvideos/litex-buildenv/wiki/RISC-V[RISC-V] - https://github.com/timvideos/litex-buildenv/wiki/RISC-V#PicoRV32[PicoRV32]
  • https://github.com/timvideos/litex-buildenv/wiki/RISC-V[RISC-V] - https://github.com/timvideos/litex-buildenv/wiki/RISC-V#VexRISCV[VexRISCV]

As the board is supported by the LiteX BuildEnv, you can developed;

  • https://github.com/timvideos/litex-buildenv/wiki/Bare-Metal[Bare Metal C Firmware]
  • https://github.com/timvideos/litex-buildenv/wiki/Zephyr[Zephyr RTOS]
  • https://fupy.github.io[MicroPython (FuPy)]

== License

The contents of this repository excluding link:./third_party[third_party folder] is released under your choice of the following two licences:

  • the "Creative Commons Attribution-ShareAlike 4.0 International License" (CC BY-SA 4.0) full text of this license is included in the LICENSE file and a copy can also be found at http://creativecommons.org/licenses/by-sa/4.0/
  • the "TAPR Open Hardware License" full text of this license is included in the LICENSE.TAPR file and a copy can also be found at http://www.tapr.org/OHL