About this project
Stretch Goal $50,000 - Reached!
The boards will be upgraded to having a built-in USB port (all you need then is a micro-USB cable)! It will also allow us to modify the board slightly; giving access to the raw input voltage from one of the headers. That will allow shields to create 5V interfaces more easily. It will also break out more signals including the LEDs, reset, done, suspend, and JTAG. Because the USB to serial converter isn't needed any more it won't be included in the $200 pledges.
It used to be that designing digital circuits was something that only big companies could afford to do. It used to require creating ASICs (Application Specific Integrated Circuits), which takes weeks or months to produce an actual chip and requires piles of cash. Then the FPGA (Field Programmable Gate Array) was introduced. FPGAs are programmable logic devices. Unlike an ASIC, the function an FPGA performs is determined at run time. That means that an FPGA can be configured to act like just about any digital circuit. However, it wasn't until recently that the cost of FPGAs has dropped to a point where they are now affordable for even hobbyists to get their hands on.
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.
To give you a better idea of what is possible, we created this demo.
If you have trouble viewing this video it can also be found here. http://www.youtube.com/watch?v=pBPCD5VnudY
This board features two 8x8 RGB LED displays that are directly connected to the Mojo's IO pins (through resistors or transistors), a microphone and a light sensor that connect to two of the Mojo's analog inputs, as well as three buttons and serial connection for a GPS.
The display is currently setup for full 24 bit color! Achieving full color with a high frame rate is relatively easy to do when you get to design the hardware.
The main purpose for this board is to be a clock. The GPS is used to always get the current time (no need to ever set the clock!). The light sensor is used to dim the LEDs when the ambient light is dark so it doesn't light up the whole room when you're trying to sleep.
The microphone is used to capture music or sounds transforming a simple clock into an audio visualizer. For each new frame 1024 samples are taken from the microphone and fed into through a FFT. The lowest 16 values are shown on the display. The visualizer has two modes, the basic mode with just the green, yellow, and red bars, as well as the rainbow mode, where a rainbow pattern flows over the display. The rainbow mode takes advantage of the full 24 bit color.
What is really cool about this project is that it only uses about 1/3 of the available space in the FPGA. Think of what you could do with the entire thing!
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!
How do I get started?
When I first heard about FPGAs, I was very interested in their potential applications, but I had a really hard time finding enough information to get me started. It wasn't until I interned at Northrop Grumman that I was first introduced to FPGAs. That's why my goal is to make designing digital circuits as easy as possible.
The Mojo will be accompanied by online tutorials that will walk you through everything from downloading the required software and getting an LED to blink, to more complex design techniques. If you don't have much background with things like microcontrollers, or other digital devices, don't worry. These tutorials will start from scratch and build up your knowledge so you can design your own circuits.
Digital circuits are not usually designed like a circuit. You don't sit down and wire up logic gates individually. That would make designing anything but very basic circuits very difficult and tedious. Instead, you use things called HDLs, or Hardware Description Languages, to design the circuits. These languages are almost like writing code, as you are basically just creating text files, except that you are actually describing a digital circuit that will get synthesized into hardware.
Where does the Mojo fit into all this?
The Mojo is designed to make digital design easy and cost effective for anyone who is just getting started. FPGAs do not retain their configuration when the power is lost, so they must be reconfigured every time the board is turned on. Typically, a PROM is used to load the configuration file (also known as bit file) into the FPGA automatically. The problem with that is you generally need a fairly expensive programmer to program the PROMs. The Mojo features a basic serial port (similar to an Arduino) that can be used to program a new bit file into on-board flash memory. When the board is powered on, a microcontroller reads the flash memory and configures the FPGA automatically. All that is required is a low-cost USB to serial converter.
You may or may not have already played with microcontrollers, but if you want to build a deeper knowledge of digital circuits this is the place to start!
The Mojo features:
- Spartan 6 XC6SLX9 FPGA - 9,152 logic cells for your largest designs
- 84 general purpose digital IO pins (3.3V logic level)
- 8 analog inputs
- 8 user controlled LEDs
- A USB connection (new revision) to configure the FPGA and send receive data from your design
- On board voltage regulation (4.5V - 12V input, 3.3V and 1.2V outputs)
- 50 MHz on-board clock (can be multiplied internally by the FPGA)
- A reset button to be used in your designs
What's the money for?
Right now we have a fully working production model of the Mojo. All we need now is to get enough money to get the first batch of boards started! In order to keep the price low we have to order a large amount of parts. Immediately after the campaign ends we will begin producing your very own Mojo.
In return for believing in us at this early stage you can own your own Mojo for this special lower price.
We hope to get the first batch of orders done within a month or two after the end of the campaign.
The Mojo will be supported on Windows and Linux computers. Unfortunately, ISE (the program used to generate the files for the board) does not currently support OSX. In the future if it does, we will add support as well.
The future of Mojo
We currently have a handful of tutorials up at Embedded Micro. However, we are going to focus on adding an many many more. We hope to cover everything from getting your first LED to blink to designing your first basic processor!
The way the Mojo is designed, it just begs for shields (boards that attach on top) to extend it's capabilities. Ever wanted to interface with a camera? We could make a shield for that. What about controlling tons of servos, a large LCD, or even a DVI output? We could make a shield for that too! If you have something in particular you'd like to see feel free to contact us!
Risks and challenges
UPDATE: Due to unexpected demand, the boards are now going to be assembled for us.
To keep costs down we will be assembling the boards in house. This has potential for things to go wrong as we refine our assembly process. However, we have successfully assembled a few complete and fully functioning boards already with few issues.Learn about accountability on Kickstarter
Support this project
- (30 days)