Serial Peripheral Interface (SPI)

Justin Rajewski
Serial Peripheral Interface, or SPI, is a very common communication protocol used for two-way communication between two devices. This tutorial shows you how to add this to your project!

Read more →

Asynchronous Serial

Justin Rajewski
Asynchronous serial communication, often shortened to just serial, is one of the easiest ways to communicate between two different devices. In it's simplest form, it consists of just two connections. One line for sending data and the other for receiving data.

Read more →

AVR Interface

Justin Rajewski
The Mojo doesn't just have an FPGA, but it also has a microcontroller (AVR)! In this tutorial, you learn how to use the AVR Interface module to talk to it.

Read more →

Analog Inputs

Justin Rajewski
The Mojo has eight analog inputs that you can use to read voltages from 0-3.3V. In this tutorial we will make the Mojo read the voltage on input A0 and adjust the brightness of the LEDs depending on the value.

Read more →

Hello World!

Justin Rajewski
This tutorial shows you how to interface with the serial port on the Mojo.

Read more →

Servos

Justin Rajewski
Servos come in handy in all sorts of projects from robots to electronic locks. This tutorial will cover how to control servos with the Mojo.

Read more →

Metastability and Debouncing

Justin Rajewski
In this tutorial we will cover some of the pit falls that can happen when having asynchronous inputs to the Mojo. The more general case is metastabilty, but we will also cover debouncing of buttons. These are both important if you want to reliably detect when a button is being pressed or interface with anything that is not synchronized to the Mojo's clock.

Read more →

External IO

Justin Rajewski
This tutorial is a very short example on how you can define your own inputs and outputs in your top level module and have them connect to the IO headers on the Mojo.

Read more →

Writing Test Benches

Justin Rajewski
Test benches are used to simulate your design without the need of any physical hardware. The biggest benefit of this is that you can actually inspect every signal that is in your design. This definitely can be a time saver when your alternatives are staring at the code, or loading it onto the FPGA and probing the few signals brought out to the external pins. However, you don't get this all for free. Before you can simulate your design you must first write a test bench.

Read more →

Pulse Width Modulation

Justin Rajewski
Pulse-Width Modulation, or PWM is a very common technique that varies the width of the pulses in a pulse-train. PWM has a few applications, the main ones are for controlling things like servos and speed controllers and limiting the effective power for things like motors and LEDs. This tutorial will cover how to use PWM to change the brightness of an LED.

Read more →