April 28th, 2016
Hello FPGA lovers! Today’s project will be a special one that will pique the interest of FPGA lovers and music makers alike! The project is about how to build an 8 step synthesizer with an FPGA board!
The 8 step Synthesizer is a set of 8 switches with a time line that flows from left to right. A button determines the frequency (higher and lower octaves) of the note. Pressing another button can alter the frequency. This way you can build your own 8 note theme to groove to. This project is highly based upon the Tone Matrix game.
The FPGA board suggested is the Nexys 2, but you can perfectly adapt this project to fit your FPGA board. You may use this other projects as a guide to make your own 8 step synthesizer with your Papilio board. The other 2 things you will need are a speaker for output and a computer for coding/uploading. The board already has all other necessary requirements addressed.
The code for implementing this project is available from the page and it´s divided into modules. The coding language is VHDL (.vhd). I strongly suggest (and the author does it too) you also create a UCF file according to your pin assignment conveniences.
The modules are divided based on functionality and each module is crucial. The clock divider module, for instance, converts the 50 MHz cycles of the FPGA board and gives a smaller frequency which holds the note for an audible time. The square wave module organizes the notes in 8 steps from 440 Hz to 1046.5 Hz which is the scale.
The circuit diagram showing how the components are connected is provided. The significance regarding Frequency incrementing, Play and Pause, Flip Flops and the Mux-Speaker arrangement are well explained. A detailed step regarding Speaker interfacing with the FPGA board is also given in the page.
This project is very straightforward and it will be a fun experience for hobbyists and FPGA learners, for sure.
April 26th, 2016
Hello FPGA enthusiasts! Today we have a close enough version of the popular Bop It! Game. For those unfamiliar with what a Bop It! Game is, I will tell you that it is practically a quick reflex based game that has a set of voice commands that give you instructions to perform tasks with the console.
As the game progresses, it gets faster paced and this is the challenge for any FPGA enthusiast.
There are basically 4 main points in this project:
- Figuring out the right functionalities and the right modules to use for them. Integrating them with your FPGA and coding it.
- Figuring the clock cycles needed for each module and ensuring that the separate clocks don’t clash with the main module of the program.
- LED displays instead of voice prompts are a stroke of genius from the author, but integrating this too can be a bit of work.
- External button compatibility with FPGA is the final and most crucial challenge, but where there is a will, there is a way!
The codes have been implemented in .vhd (VHDL) formats for easy compatibility with the hardware and the author has provided the different modules. This way the code can be better understood as it is broken into parts.
If you plan on implementing your own functionalities in the console you will have to key in your own codes and this can be a welcome challenge.
So embrace the opportunity to learn FPGA in a new light, and don’t forget to Bop It!
April 21st, 2016
Hello FPGA and Arcade games fans! A couple of weeks ago we posted about how to play the Snake game on your FPGA in fore easy steps, our community member mkarlsson was not totally satisfied with the amount of FPGA resources the Verilog code uses and decided to rewrite the game to make it use less resources and now it even fits an LX9 based board like Papilio Pro or Duo with a VGA wing:
The GadgetFactory blog page has this story about the snake game written in Verilog so I decided to take a look at it. Sadly to say it’s pretty much a textbook example of how not to write HDL code. However, this idea seemed pretty cool so I decided to do an almost complete rewrite of the code (basically the only thing left from the original code is the VGA controller) while still keeping all the functionality of the original code. The new version uses about a 1/4 of the FPGA resources compared to the original code when compiled for Spartan6 and it now fits an LX9.
Please visit the original forum thread here to share your thoughts about this project.
Source code is available on github.
April 19th, 2016
Hi again FPGA people! Today I have another game for you to implement using your FPGA, Simon Says for 2 players. I know it´s a pretty old game but I promise you that it´s a very interesting project.
In this project you will have to make use of your hand skills both for coding and for connecting and playing with cables and stuff.
User input comes from a set of modified Rock Band drum kit.
WARNING: If you don´t want to play Frankenstein with your set of Rock Band drum kit, stop reading or find an alternative!
Right, so you will need a bunch of things to modify your drums: a breadboard, some resistors and caps, two dual retriggerable monostable multivibrators, wire and a ribbon cable. Everything is very well detailed in the article and they have even shared the schematics as well as all the project files. Click here to download them.
The other two major modules for this project are the output to a VGA monitor and the store & check module that compares the inputs from the two players to determine whether they match or not.
For the code the authors used Verilog HDL. I always recommend you to think and write your own code instead of just copying what is given, but this time I won´t. I would just say copy it and implement it. Then, try to develop any of their suggestions for improvements. We would love to hear what you have achieved.
By K. Akiko
April 14th, 2016
Hello FPGA lovers! Great stuff here today. I have come across an article that gives you great details about how to control a RC Servo with a FPGA.
There many versions for RC servos but basically all of them use a Pulse Width Modulation (PWM) signal to control their position. Servos should receive 5 V logic signals but many models will work with 3.3 V signals. We cover how to take the most out of the PWM outputs of your Papilio on a previous post. This would be a great opportunity to adapt the design of a servo controller to your Papilio FPGA.
According to the author, the servo should not be waiting a pulse for more than 20 ms. Otherwise the servo would enter standby, risking to lose its position if there is a load on the arm. Typical widths of the pulses are within the 1000-2000 µs range.
All the code for this project is written in VHDL. One of the main advantages of this approach is that the author has chunked the whole project into different parts, so they can be used for many different controls. There are 4 parts: Servo Driver, Button Controller, Top Module and UCF file. The code is given for each one of these modules but as always, you should only use it to check your own code.
Have fun and build your own fan for the coming summer!
By T. Flummer
April 12th, 2016
Welcome back again FPGA addicts! Today we have a very interesting and useful project for you: Build your own alarm system with your FPGA.
This work was carried out by a group of students and it could perfectly serve as a baseline for any alarm system.
The project is developed in 6 easy steps. All you need to replicate it is the following: a FPGA (they used an Altera DEs-115 Cyclone IV), an IR Beam Break Sensor, an Arduino LilyPad Buzzer, a breadboard, some wires and a pull-up resistor. As you can well infer there is some minor manipulation in this project which is always funny and distracting. Cool stuff.
The alarm system is comprised of three modules: the main module, the display one and the sound module. The FPGA runs all the code. It receives information from the IR Beam Breaker Sensor and controls both the LED display to show whether the alarm is armed or not and the buzzer. The functioning of the alarm is quite simple, if the alarm is armed the LEDs will display “ON”, during this state if the IR beam is interrupted then the buzzer will go off and make noise. In any other state the alarm won´t activate and so there won´t be any acoustic sign and you won´t know if someone broke into.
All three modules are explained in detail, thus this project represent a very nice learning document both for system design and coding, even though all the code is given (but you should only use it as a way to check your work). You can find all the files here.
It´s interesting to highlight that the code for the noise of the buzzer is based upon the code of a Music Box developed using a FPGA.
Let´s get hand on and wire up your house!
April 7th, 2016
Hello FPGA lovers. I am sure you are going to love today´s post: How to implement Snake Game on your FPGA. Maybe some of you are too young to remember this everlasting game that has been popular generation after generation on a wide variety of formats. And as it couldn´t be less, Snake Game deserves to be played on a FPGA.
The tutorial I am presenting today was developed by a group of students from the University of Manitoba. The project has 4 simple steps and all the hardware that you will need is your FPGA, a VGA monitor, a PS/2 keyboard, a USB cable and a power cable. Easy stuff here. Sorry for those hand-work lovers. More on that in future posts.
Well, getting back to the snake. According to the authors the more difficult parts to develop where the VGA output and the PS/2 keyboard input, as there is not too much information available on internet for its coding using Verilog. Read this, if you want to learn useful basics that will help you in future projects.
The FPGA that they used was an Altera DE2 Cyclone IV. Thus you may need to adapt the Verilog program to your FPGA. You can download the whole code here.
Another aspect I would like to highlight for you, it is their approach for coding the snake itself and what it eats, apples (funny uh). No they are not from IBM. Anyway, you may like to make your snake carnivore or a sweet lover so read these steps up and play with the code. Make your snake a dragon that eats carrots or whatever you want. This is the magic of coding.
We would love to see your modifications!
But as always, have fun!
By D. Lovegrove, I. Sweetland, K. Jacobson & R. Alves
April 5th, 2016
Fantastic tutorial here today about how to add and control a joystick, using your FPGA.
This project is based upon a demo written in Verilog. However, the author used a Basys 3 FPGA board and thus she needed to transfer the Verilog code over to Vivado.
The hardware needed for this project is pretty simple, just the FPGA board, an USB A to B micro cable and the joystick, which is connected via SPI.
Pretty much an implementation project if you have a Basys 3, Nexys 4 or Zybo FPGA board. You can find the files you need here.
In case you have a different FPGA, you will have to transfer or adapt the files to be read by your required programming environment.
Very easy tutorial that all that requires is you to follow the simple steps and, of course, buy a joystick!
Try this and you won´t regret as a whole new world of possibilities will be open for you and your FPGA, from playing video games to controlling a servo motor…More about this coming soon.