All Projects → tinyfpga → Tinyfpga B Series

tinyfpga / Tinyfpga B Series

Licence: gpl-3.0
Open source design files for the TinyFPGA B-Series boards.

Labels

Projects that are alternatives of or similar to Tinyfpga B Series

Slang
SystemVerilog compiler and language services
Stars: ✭ 145 (-16.18%)
Mutual labels:  verilog
Sha256
Hardware implementation of the SHA-256 cryptographic hash function
Stars: ✭ 160 (-7.51%)
Mutual labels:  verilog
Sdram Controller
Verilog SDRAM memory controller
Stars: ✭ 169 (-2.31%)
Mutual labels:  verilog
Logic
CMake, SystemVerilog and SystemC utilities for creating, building and testing RTL projects for FPGAs and ASICs.
Stars: ✭ 149 (-13.87%)
Mutual labels:  verilog
Degate
Open source software for chip reverse engineering.
Stars: ✭ 156 (-9.83%)
Mutual labels:  verilog
Fpga readings
Recipe for FPGA cooking
Stars: ✭ 164 (-5.2%)
Mutual labels:  verilog
Chisel3
Chisel 3: A Modern Hardware Design Language
Stars: ✭ 2,290 (+1223.7%)
Mutual labels:  verilog
Verilog I2c
Verilog I2C interface for FPGA implementation
Stars: ✭ 171 (-1.16%)
Mutual labels:  verilog
Fpg1
PDP-1 FPGA implementation in Verilog, with CRT, Teletype and Console.
Stars: ✭ 159 (-8.09%)
Mutual labels:  verilog
Fpga Chip8
CHIP-8 console on FPGA
Stars: ✭ 169 (-2.31%)
Mutual labels:  verilog
Learning Nvdla Notes
NVDLA is an Open source DL/ML accelerator, which is very suitable for individuals or college students. This is the NOTES when I learn and try. Hope THIS PAGE may Helps you a bit. Contact Me:[email protected]
Stars: ✭ 150 (-13.29%)
Mutual labels:  verilog
Tinytpu
Implementation of a Tensor Processing Unit for embedded systems and the IoT.
Stars: ✭ 153 (-11.56%)
Mutual labels:  verilog
Kryon
FPGA,Verilog,Python
Stars: ✭ 169 (-2.31%)
Mutual labels:  verilog
Scale Mamba
Repository for the SCALE-MAMBA MPC system
Stars: ✭ 147 (-15.03%)
Mutual labels:  verilog
Sv Parser
SystemVerilog parser library fully complient with IEEE 1800-2017
Stars: ✭ 169 (-2.31%)
Mutual labels:  verilog
Ice40 Playground
Various iCE40 cores / projects to play around with (mostly targeted at the icebreaker)
Stars: ✭ 141 (-18.5%)
Mutual labels:  verilog
Cnn Fpga
使用Verilog实现的CNN模块,可以方便的在FPGA项目中使用
Stars: ✭ 160 (-7.51%)
Mutual labels:  verilog
Kestrel
The Kestrel is a family of home-made computers, built as much as possible on open-source technology, and supporting as much as possible the open-source philosophy.
Stars: ✭ 171 (-1.16%)
Mutual labels:  verilog
Poprc
A Compiler for the Popr Language
Stars: ✭ 170 (-1.73%)
Mutual labels:  verilog
Metroboy
MetroBoy - A playable, circuit-level simulation of an entire Game Boy
Stars: ✭ 169 (-2.31%)
Mutual labels:  verilog

TinyFPGA B2 Board

The TinyFPGA B2 board is a tiny FPGA board with a low cost per logic element and convenient USB bitstream programming capability. It measures just 18mm x 36mm and is a perfect fit for breadboards.

TinyFPGA BX Repo has Moved

If you are looking for the TinyFPGA BX design files and examples, it is in a seperate repository: TinyFPGA BX GitHub Repo.

Features

The heart of the B-series boards is either a ICE40LP4K or ICE40LP8K FPGA from Lattice. For full details on the ICE40 series of FPGAs you can read the ICE40 Family Handbook.

FPGA Feature Summary

TinyFPGA B1 TinyFPGA B2
FPGA Chip ICE40LP4K ICE40LP8K
Logic Cells 3,520 7,680
Block RAM Bits 80 KBit 128 KBit
Phase Lock Loops 1 1
User IO Pins 23 23

Common Features

  • Small form-factor that is breadboard friendly; plenty of space on either side for connecting jumpers or components.
  • Built-in USB interface for programming new FPGA bitstreams and user data to flash.
  • 4MBit of SPI Flash
    • Bootloader bitstream takes up about 1MBit, user design bitstream will take another 1MBit, the rest is free to use for other purposes.
  • 3.3v and 1.2v Regulators
    • 3.3v LDO regulator can supply up to 300ma of current. This leaves some headroom for user peripherals.
    • 1.2v LDO regulator can supply up to 150ma of current. More headroom for user peripherals.
  • Ultra Low-Power 16MHz MEMs Oscillator
    • Consumes 1.3ma power when active.
    • 50ppm stability

Building your own TinyFPGA B1 or B2 Boards

It is possible to build the TinyFPGA B-Series boards by hand in a home lab. However, it uses tiny 0402 surface mount capacitors and resistors and the ICE40 FPGAs used are in a 81 ball BGA package with 0.4mm pitch between the balls. It is a challenging undertaking and will most likely result in some bad assembled boards along with the good. I have used the following with success to hand assemble the prototype boards:

  • Parts for the TinyFPGA B1 or B2
  • Lead-Free Solder Paste
  • Stainless Steel Solder Paste Squeegee
  • TinyFPGA B-Series Solder Paste Stencil
    • You'll need to generate the gerber files and upload the solder paste layer. You will want the stainless steel stencil, I do not believe the polymide will work with the fine pitch BGA package.
  • TinyFPGA B-Series PCBs
    • These boards require tighter tolerances than OSH Park advertises. However, I have gotten lucky with some boards from OSH Park for this project and they have worked well.
  • Precision Tweezers for placing parts on the board
  • Some sort of magnifying tool for placing parts (magnifying glasses, magnifying lamp, microscope)
  • Reflow Oven
    • I was using an electric griddle to reflow the A-series boards and it worked well enough. However I didn't bother trying that with the micro BGA package on the B-series boards and I got a reflow oven kit. This particular kit is excellent.
  • Lattice FPGA Programmer or Arduino board
    • You will need this to load the bootloader onto the SPI Flash. Once the bootloader is installed you can use the Python-based programmer application to program the board over USB.
    • Look in the programmer_arduino folder to load the bootloader onto the SPI Flash using an Arduino.

Buy TinyFPGA B1 or B2 Boards

If you don't want to go through the hassle of ordering parts, tools, and supplies and assembling the boards yourself you can order professionally assembled and tested boards from Tindie or the TinyFPGA Store. These boards are not hobbyist-made, they are fabricated and assembled in a professional PCB fab that manufactures and assembles many other consumer, industrial and military electronics. They go through an automated testing and programming process to ensure the board is healthy and ready to program over USB.

Project Directory Structure

board

This contains a KiCad project with the schematic and layout of the B-series boards. The board is designed with 4/4mil track size/spacing and 0.2mm hole size. BOM lists for B1 and B2 boards are available here as well.

bootloader

FPGA boards with USB bitstream programming capability typically use an expensive USB interface chip to provide this functionality. The TinyFPGA B-series implement the USB bitstream programming capability within the FPGA itself. This directory contains the verilog code that implements this bootloader. The code is organized as an iCEcube2 project. The bootloader itself works in the same way an Arduino bootloader works. It is the first design to boot on the FPGA, if it is connected to a USB host it waits for a new bitstream to be programmed to the SPI flash, then reboots the FPGA to load the user design from flash. If the board is not connected to a USB host or if there is no programmer application running on the host then the bootloader will quickly timeout and load the user design. The bootloader does not consume any FPGA resources while the user design is loaded.

programmer

The bootloader uses a simple protocol over a generic USB serial interface. This directory contains a Python module for interfacing with the bootloader as well as a friendly Python GUI application for selecting and programming bitstreams.

template

This is a template iCEcube2 project for developing your own designs to program onto the board. It takes care of pin and clock constraints. Just edit the TinyFPGA_B.v file to add your designs module(s).

Project Log

For more information on the development and production of the B-Series please read and follow the TinyFPGA B-Series Project Page at hackaday.io.

License

The TinyFPGA B-Series project is an open source project licensed under GPLv3. Please see the included LICENSE file for details. If you do wish to distribute boards derived from this open source hardware project then you must also release the source files for the boards under GPLv3. You are free to do this, but please improve upon the original design and provide a tangible benefit for users of the board.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].