Yoshi's Nightmare on the Basys3

The objective of this project was to take a an old verilog game and change the input parameters to be able to use a Joystick on the Basys3 FPGA board to control Yoshi in the game. Since the Basys3 board is a digital system, we have to create an analog to digital convertor (ADC) in order to play it with an analog Joystick.

Materials:
- Basys3 board
- Arduino Uno
- Analog Joystick
- Level Convertor

For the ADC, we use an Arduino Uno with a simple code that converts the analog signals into digital. The digital signals are then fed into a level convertor, where we shift the voltage down to 3.3V as to not damage the Basys3 board which runs on 3.3V logic.

The Arduino code and the Vivado project file can be found here:

https://github.com/maxmanmius/Yoshis_Nightmare_Joystick

The Vivado file is made up of many modules and will take a while to synthesize. Be sure to use the basys3.xdc file as the constraint file. That file can be found in the zip folder. While waiting, you can set up the system as seen in the diagram below:


Figure 1: System schematic for Yoshi's Nightmare w/ Joystick Controls

To test the ADC is working correctly, you can upload the Arduino code to the Uno and connect LEDs in series with the outputs of the level convertor. The LEDs should blink as you move the Joystick. Once operational, you can upload the bitstream file to the Basys3 and play!

If you have any questions our problems implementing this, email me here: mtkrauss@fortlewis.edu