"I guess I have to move it slower or overclock my ATmega. Or I could just use the correct hardware for the job: a TinyFPGA... these guys are especially quick and easy to get started wtih."

"It's not just hardware you're getting. You're getting a lot of tutorials, a lot of information, a big community of people who are really getting excited about the iCE40... this is the board that people are using."

"The TinyFPGA is shaping up to be the Teensy of FPGA world."

"Having a board on the shelf could help for projects/hackathons/when in a bind."

"It’s small, it’s cheap, it’s easy to use, and there are working examples of FPGA development using this board."

"... an FPGA performs logic because its hardware gates are wired that way. That means it can do things much faster, and in parallel. FPGA are there for when extra speed, and low latency, are needed."

"Both the stepper driver chip and the FPGA come in 5mm x 5mm QFN packages, so I could eventually wrap this up into a pretty small custom printed circuit board (PCB)."

"TinyFPGA boards offer an inexpensive way for 'microcontroller jockeys' to get an introduction to the world of FPGAs"

The TinyFPGA BX brings the power and flexibility of custom digital logic designs to the maker community. The BX module allows you to design and implement your own digital logic circuits in a tiny form-factor perfect for breadboards, small spaces, or custom PCBs.

This incredible power allows you to do things that are not possible with traditional microcontrollers. While microcontroller boards have a fixed set of peripheral devices on-board, the TinyFPGA BX modules can implement the exact peripheral devices needed to get the job done. It’s not software bit-banging, it’s the real deal implemented in digital logic. When the next project has different requirements, reprogram the TinyFPGA BX with a new design suited to the task.

The full potential of programmable logic devices allows for even more ambitious projects than custom microcontroller peripherals: augment a retro-computer with new capabilities, recreate an 8-bit computer from history, or design your own.

If you don’t know what the big deal is with custom digital logic, then here’s a great way to learn. Place a TinyFPGA BX down on a breadboard and get to work interfacing it with LEDs, switches, rotary encoders, and any other peripheral, sensor, or interface you might like to try. The low cost of the BX and open-source ecosystem make this an excellent way to get started on a new adventure with digital logic.

Whether you are a hobbyist looking to expand your capabilities, a professional prototyping a new product, or a student learning the ropes of digital design, the TinyFPGA BX can help you on your way.

Who Needs It and Why?

Have you ever wanted to use an FPGA in a project, but the available boards were too big or expensive? New to FPGAs and want to learn how to use them? Want to put an FPGA on a PCB you are designing but don’t want to worry about power delivery, clocking, configuration flash, or difficult surface mount packages? If you answered "yes" to any of these questions, then the TinyFPGA BX can help!

The TinyFPGA BX is designed for makers and hobbyists. It puts you in control by taking care of FPGA support details and getting out of your way. It provides an easy to use component for your projects. It’s small enough to fit comfortably on a breadboard for learning or prototyping. When you’re ready, you can design a custom PCB incorporating a TinyFPGA BX module.

The TinyFPGA BX module is completely open hardware and open source. If you move beyond the need for through-hole components, you may decide you want to re-use or adapt the design for your own creations.

Description

The TinyFPGA BX is a small FPGA module with all of the components and circuitry required for the FPGA to function taken care of for you. To develop for the board you create a design in your favorite digital design language (Verilog/VHDL, Migen, and Chisel are some popular options). Alternatively, you can use a schematic entry tool like IceStudio. A schematic entry tool allows you to graphically draw a digital circuit to be implemented on the FPGA.

Once you have a design, you can program it onto the TinyFPGA BX module over USB. All the functions your design implements will now be able to interface with the outside world through the module’s IO pins.

Specifications

Height: 1.4 inches, width: 0.7 inches

Programming interface: USB 2.0 full-speed (12 mbit/sec)

ICE40LP8K FPGA 7,680 four-input look-up-tables 128 KBit block RAM Phase Locked Loop 41 user IO pins

8 MBit of SPI Flash

Onboard 3.3 V (300 mA) and 1.2 V (150 mA) LDO regulators

Low-Power 16 MHz MEMs Oscillator 1.3 mA power when active 50 ppm stability.



Features

Small form-factor is breadboard friendly

There’s plenty of space on either side for connecting jumpers or components. There is no smaller FPGA board available with this many logic resources!

Open source bootloader

Forget proprietary and expensive USB interface chips, the TinyFPGA BX implements its own open source USB bootloader! Upon power-up, USB bootloader is loaded from SPI flash and becomes active. It appears on the host computer as a virtual serial port device. The programmer software automatically detects the board and uses the serial interface to program your design onto the board. Once your design is loaded in the SPI flash, the board reboots and loads your design without the bootloader. To update your design just press the reset button and the bootloader will be activated again.

The TinyFPGA Bootloader has features that proprietary chips do not have. In addition to lowering the cost of the board for users like you, it also contains metadata on the SPI flash in an open JSON format. This metadata contains:

A unique ID for each board. No matter what serial port designation your OS assigns your board, you can always be sure you are programming the right one. A human-readable name of the board and FPGA. Information on where to put the user program and optional user data. An update URL for fetching bootloader/firmware updates.

This metadata, along with the dedicated programmer tool, makes the TinyFPGA BX boards easy to use.

If you want to see all the metadata stored on all the boards connected, you can get a full JSON listing of the metadata annotated with the serial port name they are connected to.

For technical details and source code see the TinyFPGA Bootloader GitHub repository.

High-quality PCB design

The TinyFPGA BX improves upon the previous B2 model in every aspect and the PCB layout is no exception. In addition to nearly doubling the number of user IOs, the new PCB layout also an improved PCB layout and power delivery:

Four-layer PCB with dedicated ground and power planes Six external ground connections (including the USB connector) Power distribution and decoupling capacitors implemented by the book for all ICs, including bulk capacitance and ferrite bead filtering for the board.

Open source FPGA toolchain support

In addition to the free tools from Lattice for developing with the iCE40 FPGAs, the TinyFPGA BX is also supported by the completely open-source IceStorm FPGA toolchain.

IceStorm has enabled incredible tools like IceStudio to be developed. If you are new to the world of digital logic, IceStudio is a great way to learn and make with FPGAs.

IceStorm currently supports the TinyFPGA B2 and I will be working closely with its creators to implement support for the TinyFPGA BX as well.

If graphical schematic entry is not your thing, you can use your own favorite text editor or try out the APIO-IDE project. APIO-IDE builds on top of PlaformIO-IDE and is a great open-source development environment for FPGAs.

Comparisons

Besides the TinyFPGA BX, there are a few different FPGA boards that have adopted a smaller form factor suitable for breadboards. These boards vary in availability, price, capacity, features, and license. A section on FPGA power delivery comparisons has been added since it is easy to overlook and can have a large impact on stability and signal integrity.

TinyFPGA BX Lattice ICEstick UPDuino v2.0 bugblat TIF License OSHW Closed Closed Closed Stock Pre-Order In Stock In Stock Out of Stock FPGA Model iCE40LP8K iCE40HX1K iCE40UP5 LCMX02 1200/4000 Logic Capacity (LUTs) 7680 1280 5280 1280/4320 Internal RAM (bits) 128k 64k 120k + 1024k 64k/92k Multipliers 0 0 8 0/0 Peripherals USB Interface OSHW Bootloader FTDI 2232HL FTDI 232HQ SIL 2112 User IOs 41 24 34 16 Onboard Clock 16 MHz MEMS 12 MHz MEMS 12 MHz (from FTDI) 48 MHz (from SIL) Flash 8 MBit SPI Flash 32 MBit SPI Flash 32 MBit SPI Flash 80KBit/96KBit FPGA User Flash FPGA Power Delivery Dedicated Ground/Power Planes Yes Yes No Yes Dedicated FPGA Bypass Capacitors 8 18 2 4 Board Ground Connections 6 6 3 3 Software Open Source Toolchain Yes Yes Yes No APIO Support Yes Yes No No IceStudio Support Yes Yes No No

TinyFPGA Family Comparison

TinyFPGA A1 TinyFPGA AX2 FPGA Chip XO2-256 XO2-1200 ICE40LP8K LFE5U-25F Programming Interface JTAG JTAG USB USB Logic Cells 256 1200 7680 24288 Distributed RAM 2 KBit 10 KBit 194 KBit Block RAM 64 KBit 128 KBit 1008 KBit User Flash 64 KBit 6000 KBit 96000 KBit Phase Lock Loops 1 1 2 Delay Lock Loops 2 User IO Pins (dedicated + shared) 18 + 4 18 + 4 31 + 10 49 + 7

TinyFPGA AX1

The TinyFPGA A1 board is a bare-bones breakout board for the Lattice MachXO2-256 FPGA.

Tiny, just 1.2 by 0.7 inches

Low power 3.3 volt operation

18 user IOs (21 with JTAGEN)

256 4-input look-up tables

2 kilobits distributed RAM

1 SPI Hard-IP

2 I2C Hard-IPs

Built-in flash configuration memory programmable via JTAG

See the TinyFPGA A-Series User Guide for all the information you need to get your FPGA project up and running.

TinyFPGA AX2

The TinyFPGA A2 board is a bare-bones breakout board for the XO2-1200 FPGA. This is a much more powerful board than the A1 with nearly 5 times as many digital logic resources, 64 kilobits of dedicated RAM, 64 kilobits of user flash memory, and a PLL in addition to the features of the A1.

Tiny, just 1.2 by 0.7 inches

Low power 3.3 volt operation

18 user IOs (21 with JTAGEN)

1200 4-input look-up tables

10 kilobits distributed RAM

64 kilobits dedicated RAM

64 kilobits user flash memory

1 SPI Hard-IP

2 I2C Hard-IPs

1 PLL Hard-IP

Built-in flash configuration memory programmable via JTAG

See the TinyFPGA A-Series User Guide for all the information you need to get your FPGA project up and running.

TinyFPGA Programmer

One of the goals of the TinyFPGA boards is to make FPGAs cheaper to use. The TinyFPGA A1 and TinyFPGA A2 boards are the first TinyFPGA boards and are designed to be the least expensive. As such, they do not include a built-in USB interface as that would increase the cost and complexity too much. Instead, they rely on JTAG programmers.

Here comes the TinyFPGA Programmer. Rather than an FTDI2232 USB interface chip it uses a PIC16F1455 USB microcontroller. While not compatible with the FTDI2232 chip, the PIC micro has a much lower BOM cost allowing the programmer hardware to be cheaper.

The TinyFPGA Programmer slots onto the JTAG pins of the A-series FPGA boards. Using the TinyFPGA Programmer Application you can program .jed files generated by Lattice Diamond.