Fan - Android Open Source FPGA System
Click on any image to zoom.
Fan - Building On Android
The Fan hardware+software suite is a complete set of components for implementing a non-volatile FPGA solution linked to an On-The-Go (OTG) Android device such as a phone or a tablet. Or to a PC, but Android solutions are the focus.
Develop the Hardware
The FPGA software tools run on a PC. We provide a complete reference design for a logic analyzer as source code, plus several smaller designs. And Python tools to download a configuration to the non-volatile FPGA on a Fan board.
You can use the Fan board alone. For more options, the expansion holes are positioned for mounting on a breadboard or on a blank Arduino shield.
Prototype the Software on a PC
We provide a low level driver library, plus Python and Lua applications using the library. All this is supplied as source code.
The Android and PC software interfaces to a Fan board are identical. At a low level the Android interface is necessarily implemented in Java and the PC interface is implemented in C/C++, but the interface methods are the same.
Up one level, there are identical Lua interfaces to the popular Gideros library, now available as open source.
We provide a Python program to load and manipulate the registers in the FPGA. For Lua scripting, we provide a sample project that can be tried out and extended and debugged on a PC or on an Android device using the freely available ZeroBrane Studio IDE.
Move to Android
A Lua design can be exported to Android with no changes required. If you want to implement a very customised application with your own launch icon, we provide a base Android Studio project into which you can export the Lua.
For the more adventurous we also provide a sample Android Studio project in Java.
And all as source code.
For a really quick start, we provide a base project which will execute a main.lua file transferred to the Android file system.
For debugging, we also provide a Lua server that can be used from a PC via a interactive debugger such as ZeroBrane.
The Fan system:
- an FPGA development board, with a built-in configuration loader
- low-level software source code to reload and control the board
- complete VHDL firmware source code for a 125MHz Logic Analyzer
- example Android and PC applications
FPGA Development Board
- a complete FPGA development target - FPGA programming hardware is not needed
- over 2000 on-chip 4-input LUTs
- 8 on-chip 9-Kbit SRAM blocks
- the FPGA is non-volatile, with on-chip flash memory for storing the configuration bit stream
- up to 80Kbits user flash memory
- hard coded PLL and timer/counter blocks. Also hard-coded I2C and SPI, but these are not pinned out
- powered from the USB connector
- 8 pins with extensive protection, as used in a Logic Analyzer application
- 6 additional FPGA I/Os
- a buffered connection, typically used as Trigger Out
- red and green LEDs
- example projects
Low Level Software
This software is supplied as C++ source code plus a compiled (DLL/SO) file and Python scripts.
- control the USB interface
- inject a new configuration into the FPGA's flash memory
- read and write registers in the firmware
High Level Software
- sample Android apps in Java and Lua
- scripted loader app in Python
- Gideros plugins in C++ and Java
Logic Analyzer Firmware
This firmware is supplied as VHDL source code plus a compiled (JEDEC) file.
- sample clock selectable from 100Hz to 125MHz
- sample memory 4096 entries deep, with sample compression of up to 1024 samples per entry
- simple or complex triggering
- full source code including USB interface, clock generation, control state machine, and sample storage and readback
Production Boards Are Black
Black, though most of the images in our documentation were taken with green pre-production boards. And the BX thing that crops up from time to time originates in the BX line of logic analyzers that inspired this product.
On An Android System
- the hardware requires a micro USB socket which can run in Host or OTG (On-The-Go) mode.
- to debug an application, the Android device must also be WiFi capable.
OTG was first supported in Android 3.1, and cell phone chip sets have implemented OTG for a while. However relatively few Android devices built before 2013 have OTG turned on. Availability is now much better, even low cost phones implement OTG.
On A PC
- the hardware requires a USB socket, either a USB socket on a PC or a socket on a USB Hub
Documents and Downloads
Download the software and firmware bundle from the Github repo here. This bundle includes these items:
- example applications
- example VHDL projects
- low level driver software
- FPGA upload scripts
- logic analyzer firmware
5°C to 40°C
-40°C to 75°C
75mm x 28mm (2.9" x 1.1")
0.5W. Total power consumption depends on what is programmed into the FPGA and on what is plugged into the Fan board. The XO2 FPGA on the board is a low power component.
Via USB cable. No external power supply
USB connection to an Android device or a PC. A micro-USB cable is required.
Please note that the Fan board is high-performance equipment. It is designed for users who are familiar with electronic design and debugging, and familiar with the usual safety precautions when working with electronic equipment.