Code Monkey home page Code Monkey logo

fomu-hardware's Introduction

I’m Fomu

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;

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;

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

PVT board fomu pvt

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

Contact

Board Variants

There are several variants of Fomu hardware

  • 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

  • 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

  • The first test run using advanced PCB technologies like laser drilled and blind vias

  • If there are no changes, this will be mass produced

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;

  • 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

up5k

Development Firmware

The Lattice iCE40UP5K has a fully open source VerilogBitstream toolchain.

Supported by the LiteX BuildEnv. The LiteX BuildEnv supports your choice of CPU architecture;

As the board is supported by the LiteX BuildEnv, you can develop:

License

The contents of this repository excluding 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

fomu-hardware's People

Contributors

dwaq avatar giomasce avatar gregdavill avatar lsb avatar mithro avatar osresearch avatar royragsdale avatar tardate avatar xobs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fomu-hardware's Issues

Attach the fomu board on WSL 2 or Virtualbox virtual machine

I am trying use the fomu PVT board version in a virtual machine. When I put it in USB port the Windows OS recognize it correctly, as you can see below:
Captura de tela 2023-06-13 154809

But, when I try to attach the board to virtual machine that occur:
Captura de tela 2023-06-13 155320

The warning is: Unknown USB Device (Device Descriptor Request Failed)

This erro appears in both VirtualBox and WSL 2. I updated the drivers using Zadig 2.8 and for attach the board on WSL 2 VM's I am using usbipd 3.0.0.

RGB LED Brightness

The brightness of red, green, blue is fundamentally different.

To get white the colours have to be mixed:

  • Red @ duty cycle of 1/128
  • Green @ duty cycle of 1/16
  • Blue @ duty cycle of 1/1

The code blow demonstrates the issue.

rgb.zip

Edit: According to the documentation, the FPGA has a RGB LED driver with a per color configurable current. What are reasonable values?

hacker vs PVT

j1eforth built with Silice works on a hacker board but not on PVT board. Any suggestions?

fomu-hardware git directory/branch structure

On 2019-06-25 on #tomu on IRC, @xobs wrote:

I need to collapse all the branches down to one and make subdirectories. Possibly throwing away history? Or maybe keep the history in the other branches...

The easiest solution is probably to reattach each branch into its own directory in the master branch, creating a new set of git commits that mirror (but aren't the same commits) each branch.

In the past I've done that with git-filter-branch to rewrite the branches into (or out of) a subdirectory, and then merging that rewritten branch onto master (the two branches likely have no common ancestor at that point, but git will still merge that).

If you can describe the "existing branch" to "new location on single shared branch" transformation that you want to achieve, it should be possible to turn that into an appropriate set of git-filter-branch commands and git-merge commands to achieve the result without throwing away the history. (In particular "I want to push everything in this branch down one or two directory levels" is one of the easier "rewrite history" transformations...)

Hardware Photos

@mithro asked me to take some photos of the Fomu Boards.
Let me know if you would like any other angles/enclosure/LEDs lit etc.

IMG_7674
IMG_7672
IMG_7671
IMG_7668

IMG_7673
IMG_7669

pvt board problems

If I upload Rob's eforth it reports that ttyACM0 is available. If I open a terminal program like gtkterm, the port, ttyACM0 dissappears.
If the terminal programming is running before I upload the eforth .
If Rob does the same with the hacker board he has no difficulties. He can remove the board and replace and still all works, whereas I must reload the eforth.
Any suggestions?

idea: pogo holes

The cases that hold things with pads:
add some holes or dots or something so someone can rig up a janky rig to hook up a ras-pi to flash a boot loader when the brick their thing.

Hacker Fomu

Why not use a fully symmetric layout for the bga pads in the hacker version? This may help stability of the WLCSP.

Can flash the fomu with probes, without having the jig

Hi,
I managed to flash a fomu Hacker version (v0.0 is mentioned over it) without having a jig: I soldered seven little cables connecting to the Raspberry on a side and having a probe on the other. See the photos. It is not easy to get all the wires connected without the probes snapping away, but it is possible.
The documentation might mention this possibility, as I think that many users could find it easier than printing a jig. Feel free to use my photos, if you want. The ground contact can also be reached from the button pads, which are probably less crowded and easier to reach.
Thanks for this wonderful hacking gadget!
img_20190129_104313
img_20190129_104353

Kosagi FOMU pvt board acess by `/dev/tty`

Hello everyone!

I am working with litex/CFU-Playground tools and to flash a CPU like Vexriscv I need to acess the board by /dev/ttyUSB0, /dev/ttyUSB1 or /dev/ttyACM0 if possible.

When I run lsusb I can see that device is connected:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 1209:5bf0 Generic Fomu PVT running DFU Bootloader v2.0.4
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

But do not exist none file like /dev/ttyUSB0 or /dev/ttyUSB1 then a tryed to do something like this to have acess adding the rule at /etc/udev/rules.d/99-kosagi-fomu-pvt.rules:

SUBSYSTEM=="tty", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="5bf0", MODE="0664", SYMLINK+="ttyUSB0"

But still does not worked, I am using Ubuntu-22.04 by WSL 2.

Consolidate documentation

There is a lot of documentation scattered through the following pages, it would be good to merge / consolidate them into one location.

The documentation should cover;

  • What Fomu is?
  • How to buy a Fomu?
  • What Fomu version do I have?
  • How to get the toolchain setup and installed
  • How to get started with examples.
  • How to contribute to the project.

Question about iCE40 BGA Land Pattern

Howdy! This isn't an issue per se - I was hoping you could talk a little bit about the footprint you used for the iCE40 part in your design.

The main things I noticed:

  • You've staggered the pad diameter between pads on the underside. Best as I can tell it's alternating 0.23mm and 0.2mm diameter pads.
  • You're using NSMD (non soldermask defined) pads. We're using 0.25mm pads with no change in mask diameter, so effectively SMD (soldermask defined) pads.

I'm experiencing some issues on a board with the same iCE40 part - out of my initial run of 10 boards, only 1 FPGA actually worked. 😆 I've run myself ragged testing the power, reset, clock sequence, and I'm convinced that's correct. I'm also able to program the device on board, just not run any RTL. My suspicion is that the inner balls of the BGA are not making good pad contact with the board.

Wondering if your land pattern is in response to some manufacturability issues with FOMU - any context you have to offer would be greatly appreciated. Thanks a zillion!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.