The Mojo is an FPGA development board that is designed to be user friendly and a great introduction into digital design for anyone.
What can I do with the Mojo?
An FPGA allows you to design digital circuits. Digital circuits are basically just a bunch of logic gates (and, or, nor, etc.) connected together to perform a specific task. The designs that you create can range from something as simple as a counter to blink an LED to something as complex as a multi-core processor.
The Mojo features include
- Spartan 6 XC6SLX9 FPGA
- 84 digital IO pins
- 8 analog inputs
- 8 general purpose LEDs
- 1 reset button
- 1 LED to show when the FPGA is correctly configured
- On board voltage regulation that can handle 4.8V – 12V
- A microcontroller (ATmega16U4) used for configuring the FPGA, USB communications, and reading the analog pins
- On board flash memory to store the FPGA configuration file
The microcontroller comes with a USB (DFU) bootloader which will allow you to install future upgrades to the firmware without having to buy a programmer. Once the board is powered on the microcontroller configures the FPGA from the flash memory. After the FPGA is succesfully configured the microcontroller enters slave mode. This allows your FPGA designs to talk to the microcontroller; giving you access to the serial port and the analog inputs.
FPGAs vs Microcontrollers
FPGAs and microcontrollers, like the Arduino, are very different devices. With a microcontroller you write software. That software gives you control of the the built-in peripherals, like IO pins, serial ports, or analog to digital converters. The biggest limitation of software is that you can only do one thing at a time!
With FPGAs you are not creating software. You are designing the hardware! Instead of writing code to run on a fixed processor with fixed peripherals, you get to design your own circuit. If you really want to you can even create your very own processor and write software to run on it!
A huge benefit of working with FPGAs is that every element of your design runs independently of each other. That means one part of your design can be reading in some serial data, while another part is controlling a servo, while another is reading some sensors, and yet another is controlling a display.
With a microcontroller you can often be limited by the built in peripherals. There is a set number of serial ports, PWM pins, or maybe you can’t use some components, like a camera, because you can’t interface with them fast enough. With FPGAs every pin has the potential to become whatever you need it to be. Do you need 84 PWM signals to control a lot of servos? The Mojo has you covered. What about a bunch of serial ports or controlling a big LED display? You’re covered there too. Since you are designing the hardware, you are deciding what each pin will do!
More info on