The Diary

FPGA Games

Play Basys 3 FPGA games in your browser: the simulation runs on your own PC, no board needed. Pick a game to see how to play it.

Tetris on a Basys 3 FPGA (VGA screen)

Tetris

SystemVerilog · buttons, Clocking Wizard 30 MHz + 25.175 MHz, music on JB1/JC1

Press btnC (Space) first to start! btnL/btnR move, btnU rotates, btnD drops

Source: deterjan/FPGA-Tetris

Play ▸
Marble Maze (LED matrix) on a Basys 3 FPGA (VGA screen)

Marble Maze (LED matrix)

SystemVerilog · 2 MAX7219 8x8 LED matrices, buttons, 7-segment

First flip sw0 (reset) on and off once. Choose the level with btnU / btnD and start with btnC, then roll the marble with the arrow buttons into the goal hole. The maze is on the LED matrix card.

Source: yalchinAlv/MarbleMazeGame

Play ▸
Atari Pong on a Basys 3 FPGA (VGA screen)

Atari Pong

VHDL · 4 external buttons (paddles), VGA

btnC = start / pause. Player A: W / S, player B: I / K (external paddle buttons on JA and JB). btnU / btnD = bigger / smaller ball, btnL / btnR = smaller / bigger paddles.

Source: mena-david/Atari-Pong-VHDL

Play ▸
Blackjack on a Basys 3 FPGA (VGA screen)

Blackjack

Verilog · buttons, LEDs, 7-segment

btnC = new game, btnL = hit, btnR = stand. Your total and the dealer's on the 7-segment display; LD0 = win, LD2 = lose, LD1 = draw.

Source: lynzoie/Blackjack

Play ▸
Pong (one player) on a Basys 3 FPGA (VGA screen)

Pong (one player)

Verilog · buttons, switches, LEDs, 7-segment

btnU / btnD (arrow keys) move the paddle, btnC (Space) restarts, sw0 pauses, sw1 doubles the speed. Score on the 7-segment display, misses on the LEDs.

Play ▸
IR drag race (two players) on a Basys 3 FPGA (VGA screen)

IR drag race (two players)

VHDL · 2 IR sensors, Clocking Wizard IP

Each player 'waves a hand' over an IR sensor: hold Z (player 1) or X (player 2), or click the sensor cards. Every pass moves that car forward; first over the line wins. btnC starts a new race.

Play ▸
Sensor dashboard on a Basys 3 FPGA (VGA screen)

Sensor dashboard

Verilog · ultrasonic, load cell, 4x4 keypad, 800x600

Move the distance and weight sliders, type on the keypad (numeric keypad keys or click). sw0 = show distance on the 7-segment display, sw1 = show weight.

Play ▸
Snake with a USB keyboard on a Basys 3 FPGA (VGA screen)

Snake with a USB keyboard

Verilog · PS/2 keyboard on the USB port

Press F2 once so your keyboard goes to the FPGA, then arrow keys (or W A S D) steer and Space restarts. Length on the 7-segment display.

Play ▸
Paint with a USB mouse on a Basys 3 FPGA (VGA screen)

Paint with a USB mouse

Verilog · PS/2 mouse on the USB port

Move the mouse over the screen: the left button paints, the right button clears. The switches choose the colour.

Play ▸
Star catcher with a joystick on a Basys 3 FPGA (VGA screen)

Star catcher with a joystick

Verilog · Digilent PmodJSTK on JA (SPI)

Move the ring onto the star: drag the joystick on the card, or keys I J K L, or a USB game controller. H = stick press (yellow ring), U = BTN1 (bigger ring). btnC resets the score.

Play ▸
Sonar Flap (ultrasonic) on a Basys 3 FPGA (VGA screen)

Sonar Flap (ultrasonic)

Verilog · HC-SR04 ultrasonic sensor, VGA

Your hand height over the ultrasonic sensor sets the bird's height: drag the distance slider (or the sensor card). btnC starts. sw0 = distance on the 7-segment display, sw1 = easy mode.

Play ▸
Hand Pong (ultrasonic) on a Basys 3 FPGA (VGA screen)

Hand Pong (ultrasonic)

Verilog · HC-SR04 ultrasonic sensor, VGA

Your paddle follows your hand above the ultrasonic sensor (5-45 cm): move the distance slider. First to 7 beats the computer. No sensor: sw15 on, then btnU / btnD. btnC = new game.

Play ▸
Steady Hands (load cell) on a Basys 3 FPGA (VGA screen)

Steady Hands (load cell)

Verilog · HX711 load cell, VGA

Press the scale to the target weight and keep it inside the green band for 2 seconds: move the weight slider. 60 seconds per game. btnC starts, sw1 = easy.

Play ▸
Keypad Memory (Simon) on a Basys 3 FPGA (VGA screen)

Keypad Memory (Simon)

Verilog · PmodKYPD 4x4 keypad, speaker, VGA

Watch the tiles light up, then type the same sequence on the keypad (numeric keypad keys, or click the keypad card). One more step every round. btnC starts, sw0 = slower. A speaker on JB1 plays a note for each tile (sw15 = silent).

Play ▸
Keypad Whack-a-Mole on a Basys 3 FPGA (VGA screen)

Keypad Whack-a-Mole

Verilog · PmodKYPD 4x4 keypad, speaker, VGA

A mole pops out of a hole: hit the key printed on that hole before it hides. Misses and wrong keys cost a life (3). btnC starts. Optional speaker on JB1 (sw15 = silent).

Play ▸
Math Sprint (keypad) on a Basys 3 FPGA (VGA screen)

Math Sprint (keypad)

Verilog · PmodKYPD 4x4 keypad, VGA

Answer sums in 60 seconds: type the answer on the keypad, F = enter, E = delete. sw0 adds times tables. btnC starts.

Play ▸
Rock Dodger (joystick) on a Basys 3 FPGA (VGA screen)

Rock Dodger (joystick)

Verilog · PmodJSTK joystick, VGA

Steer the ship with the joystick (drag the stick on the card, or keys I J K L, or a USB game controller), dodge rocks, grab stars. Stick press (H) = shield. btnC starts.

Play ▸
Pad Racer (SNES game pad) on a Basys 3 FPGA (VGA screen)

Pad Racer (SNES game pad)

Verilog · SNES/NES game pad, VGA

Start begins (Enter key or the pad card), Left / Right change lane, hold A (X key) to go faster. A USB game controller works too. No pad: btnL / btnR / btnU / btnC.

Play ▸
Matrix Snake (8x8 LED matrix) on a Basys 3 FPGA (VGA screen)

Matrix Snake (8x8 LED matrix)

Verilog · MAX7219 8x8 LED matrix, buttons

Arrow buttons steer the snake on the LED matrix (also shown big on the screen), eat the blinking dot. btnC starts, sw0 = faster.

Play ▸
Aim Trainer (mouse) on a Basys 3 FPGA (VGA screen)

Aim Trainer (mouse)

Verilog · PS/2 mouse on the USB port, VGA

Click the targets with the mouse: move over the screen with the left button. Small targets score more. 30 seconds. btnC or right-click starts.

Play ▸
Typing Rain (keyboard) on a Basys 3 FPGA (VGA screen)

Typing Rain (keyboard)

Verilog · PS/2 keyboard on the USB port, VGA

Press F2 once so your keyboard goes to the FPGA, Space starts. Type the falling letters before they land (5 lives).

Play ▸
Reflex Duel (2 IR sensors) on a Basys 3 FPGA (VGA screen)

Reflex Duel (2 IR sensors)

Verilog · 2 IR obstacle sensors, VGA

Two players: wait for GO!, then wave over your IR sensor first (Z = player 1, X = player 2, or btnL / btnR). Too early is a foul. First to 5. btnC = new match.

Play ▸
Switch Catch (board only) on a Basys 3 FPGA (VGA screen)

Switch Catch (board only)

Verilog · switches, LEDs, 7-segment, VGA

An LED lights: flip the switch right below it before the bar runs out (keys 0-9 toggle sw0-sw9, or click). Wrong or slow = lose a life. btnC starts.

Play ▸
Binary Blitz (board only) on a Basys 3 FPGA (VGA screen)

Binary Blitz (board only)

Verilog · switches, 7-segment, VGA

Set the number in binary on sw7..sw0 and press btnC. 60 seconds. btnU skips (costs 3 s). sw15 = hexadecimal mode.

Play ▸
Number Hunt (serial terminal) on a Basys 3 FPGA (VGA screen)

Number Hunt (serial terminal)

Verilog · USB-UART terminal 115200 baud, VGA

Type a guess (1-100) in the terminal (the UART card) and press Enter: TOO LOW / TOO HIGH. Or set sw6..sw0 and press btnU. btnC = new number.

Play ▸
OLED Breakout (Pmod OLEDrgb) on a Basys 3 FPGA (VGA screen)

OLED Breakout (Pmod OLEDrgb)

Verilog · Pmod OLEDrgb 96x64 colour OLED, speaker

btnL / btnR move the paddle, btnC launches the ball (and restarts). 3 lives on the LEDs, score on the 7-segment display. sw0 = slower ball, sw15 = no sound.

Play ▸