Mojo - An FPGA Beginner's Guide

This page was added to try and sort through all the tutorials and to give a clear path that a beginner can take to start their journey to becoming an FPGA master. While reading this guide, if you find anything confusing, please let me know at support@embeddedmicro.com. We are always trying to improve things.

FPG-What?!?

If you've never heard of FPGAs or aren't quite sure what they are, you are in for a treat! FPGAs, or Field Programmable Gate Arrays, have a name only an engineer could love. However, don't worry, what they actually are isn't that complicated. An FPGA is simply a device that you can use to design digital circuits. They are similar to microcontrollers or computers in the fact that they can be reconfigured simply by loading a new configuration file. Unlike microcontrollers, you don't write code for them. Instead, you design digital circuits.

Being able to design custom digital circuits without having to physically change anything is really powerful. When you are beginning, your circuit can be as simple as connecting a button to an LED, but as you progress you can design some truly powerful stuff.

FPGAs were traditionally used by big semiconductor companies, like Intel, to prototype their designs before dumping millions into actually making the chips. The technology has become cheap enough to where FPGAs are accessible to hobbyists. That's where the Mojo and these tutorials fit in.

For more information check out What is an FPGA? and How does an FPGA work?

Preparing Your Dojo

Gather Your Materials

First you must acquire a Mojo, either from us directly, or from one of our distributors. You will also need a micro USB cable. Note that the cable must not be a charging only cable (sometimes included with cheap phone chargers) and must have the data pins connected. 

Install The Software

There are two programs you need to use when working the Mojo. The first is ISE. ISE is a program provided by Xilinx (the FPGA manufacture) that does the actual synthesis from text to a file you can load onto the board. The program is rather big and the download takes a while. Head over to the Installing ISE Tutorial and set it up.

The next piece of software you need is the Mojo Loader. The Mojo Loader is a small program that takes the .bin file that is generated by ISE and sends it to your Mojo. It simply acts as the glue. Follow the Mojo Loader tutorial to get that setup.

The Road Less Traveled

Young grasshopper, you are now ready to dive into the awesome world of FPGAs. Are you ready?

Your First Steps

The first tutorial you should follow is the Creating a Project tutorial. This tutorial was written to get you familiar with ISE and the work flow associated with creating a project for the Mojo. Beware! Do not rush ahead. Read the tutorial and follow the steps. One can not simply download the starter code and expect things to work! You need to edit the project as specified in the tutorial. Doing this will force you to understand these edits.

At this point you should know how to build a project and load it onto your Mojo.

Getting Your Hands Dirty

Now that you have completed the most basic FPGA design possible, it's time to start having fun.

The next tutorial, the Synchronous Logic Tutorial , teaches you about the flip-flop, a critical building block of almost any design. However, before continuing on the path, it may be wise to take a detour and read the Verilog Operators Tutorial . This tutorial was written to help you understand Verilog and some of the various operations you will encounter.

You should now understand the basics of a synchronous circuit. You should understand what a clock is, what flip-flops are and why you need them, and how to build a module and use it.

You are now ready for the Pulse-Width Modulation Tutorial . PWM is a very useful trick that can be used to control servos, fade LEDs, and much more. This tutorial is written to build off the basic counter you already understand. It introduces you to some more advanced Verilog tricks like the for generate loop.

Seeking the Truth

Sometimes your designs will not work. Instead of just staring at your code all day and hoping that the problems will come and slap you in the face, you can learn to write test benches to simulate your design. Simulations are very helpful for seeing the values inside your modules and figuring out exactly what's going on.

For this, we have the Writing Test Benches Tutorial .

Connecting to the World

Designs are no good if they can't interface with the world. For this you need two tutorials.

The first, the External IO Tutorial , will teach you how to define external connections and used them in your design. However, the outside world is dangerous so you must be prepared. To show you some of the dangers and how to mitigate them, read the Metastability and Debouncing Tutorial .

With these you should be able to define new connections to the Mojo and start hooking up your own circuits. It may also be helpful to checkout the schematic for the Mojo, which can be found on its product page.

The Path Expands

At this point you know the basics. The path is up to you now.

If you want some more fundamentals, check out the Digital Logic tutorials.

Two highly recommended advanced tutorials are the FPGA Timing Tutorial and the Using Core Generator Tutorial . The timing will place a crucial roll as your designs get more complex and you start pushing the boundaries. The core generator tutorial will show you how to leverage the modules Xilinx provides.

Of course, you should read all the tutorials, but at this point the order does not really matter. Pick and choose the ones you find interesting. The best way to learn is to come up with a project you would like to do and push on. If you lose your way, feel free to ask for help on the forum or email our support.