Hello All!
I would like to share my latest projects with this community. Ever since I discovered
Paul Stofgren's Teensy boards I have been infatuated with teeny tiny microcontroller boards. A couple years ago that infatuation intersected with FPGAs when I found the similarly sized
TIF board. Unfortunately it has been difficult to get these boards as they are now special order and only in large batches.
So I set out to design my own FPGA boards that are tiny, low cost, and open source. In the end I've developed two different boards. A bare-bones A-series with MachXO2 FPGAs and a more featured B-series with iCE40 FPGAs.
For a quick overview check out the website:
tinyfpga.com.
TinyFPGA A-Series open source files:
https://github.com/tinyfpga/TinyFPGA-A-SeriesTinyFPGA A-Series Hackaday Project page (in case you want to make your own):
https://hackaday.io/project/25958-tinyfpga-a-seriesTinyFPGA B-Series open source files:
https://github.com/tinyfpga/TinyFPGA-B-SeriesOhh yeah... the A-Series is bare-bones, it's programmed via JTAG. A little inconvenient but it really helps lower the cost enough to make them easy to leave in a project. The B-Series on the other hand supports programming over USB. In order to keep the costs low I implemented a USB device in the FPGA itself to act like a boot loader. When the board is powered on the bootloader waits a moment to see if it's attached to a USB host. If it is, it will wait for a user design to be downloaded. Once the user design is downloaded to a seperate section of the SPI configuration memory the board reconfigures itself with the user design.
If the board is powered on and is not connected to a USB host it will automatically time out and boot into the user design.
I haven't yet designed a dedicated USB-JTAG programmer for the A-Series but I am currently thinking of using a PIC16F1455 and programming it with a simple bit-bang FW. Then I can add A-Series support to the python programmer application I already have. Any JTAG protocol bugs will be fixable in the python code and won't require users to reflash their programmer hardware. That PIC is cheap and doesn't require a crystal for USB. Should help me make a cheaper JTAG programmer than even the lattice imitation programmers for sale on ebay.
I would love to get some feedback of the designs. The PCBs are designed in KiCAD. the B-Series bootloader is written in verilog. The programmer software for the B-Series is a python application.
I have a batch of B-Series boards in production, but I have a few hundred A-Series boards already finished, tested, and ready to ship if anyone is interested. I have a store on Tindie if you want to buy one:
https://www.tindie.com/stores/tinyfpga/As for the B-Series boards...I have a few prototypes I made by hand. They were difficult to assemble by hand due to the 0.4mm pitch BGA package of the FPGA. However, if anyone is interested in some serious testing and evaluation of a B-Series prototype board I may be willing to send a couple out. When I get the production boards back I may send out more or create a discount code for them.
If you do wish to buy an A-Series board, the first 20 people to use the EEVBLOGROCKS discount code before August 4 will get 20% off their order.