★ Virtual Basys 3 · runs in your browser

The FPGA Arcade

A whole Digilent Basys 3 board, simulated on your own computer. Load real Verilog, VHDL and SystemVerilog designs and play them with your keyboard, mouse or game pad. No board, no cables, no install.

30 games 32 sensor demos 20+ sensors & Pmods Source on GitHub

No board needed

The switches, buttons, LEDs, 7-segment display and VGA screen of a Basys 3 all run in the browser tab.

Play with what you have

Arrow keys, WASD, mouse, SNES and NES pads or a USB controller. Board buttons map to your keyboard.

Real sensors, simulated

Distance, tilt, force, IR remotes, RFID, keypads, joysticks and displays, each with an on-screen control.

Three HDLs

Verilog, SystemVerilog and VHDL designs, the same code you would put on a real board.

Read the source

Every game links to its GitHub code, so you can see exactly how it was built and borrow ideas.

Made for learning

Ideal for labs and course projects: test a design at home, then load it on the board in class.

How it works

  1. Pick a game below, or press Launch to open the empty board.
  2. Read the controls on its card: which keys, switches or sensors it uses.
  3. Play. Flip the switches, press the buttons, and watch the LEDs and screen react just like the real board.
⚡ Launch the simulator

Sensors and add-ons it can simulate

Ultrasonic distance Load cell (HX711) IR obstacle & proximity IR remote Accelerometers Vibration sensor Force sensor Potentiometer Rotary encoder RFID reader 4×4 keypad Joystick OLED display 8×8 LED matrix Speaker & buzzer PS/2 keyboard & mouse USB-UART terminal SNES / NES pads

All games and demos

Bee Invaders (Space Invaders style) Verilog · buttons, sprites from .mem files, Clocking Wizard (no .xci) ▶ Playcode ↗
FlaPGA Mario (Flappy Bird style) Verilog · buttons, 3 ROM images, BGM on JXADC ▶ Playcode ↗
Flappy Bird with Q-learning AI Verilog · USB keyboard (PS/2), 17 Block Memory ROMs from .coe files, a custom keyboard IP ▶ Playcode ↗
Tetris SystemVerilog · buttons, Clocking Wizard 30 MHz + 25.175 MHz, music on JB1/JC1 ▶ Playcode ↗
Pac-Man (VHDL, 800x600) VHDL · serial terminal (USB-UART 9600 baud), Clocking Wizard 40 MHz, 3 Block Memory ROMs (.xcix) ▶ Playcode ↗
Two-player reaction time game (ENEL453) VHDL · VGA, buttons, switches, 7-segment, buzzer ▶ Playcode ↗
PONG with score text (keyboard) Verilog · USB keyboard (PS/2), text ROM ▶ Playcode ↗
Pong for two players (keyboard) Verilog · USB keyboard (PS/2), 7-segment score ▶ Playcode ↗
Pong (VHDL, buttons) VHDL · buttons, switches ▶ Playcode ↗
Snake (buttons, timed mode) Verilog · buttons, switches, 7-segment score ▶ Playcode ↗
Snake (keyboard) Verilog · USB keyboard (PS/2) ▶ Playcode ↗
HC-SR04 ultrasonic sensor test Verilog · ultrasonic sensor on JA, 7-segment ▶ Playcode ↗
Undertale-style battle Verilog · USB-UART keyboard, sprite images (.list ROM files) ▶ Playcode ↗
Tic-Tac-Toe (XO) Verilog · buttons, VGA ▶ Playcode ↗
Sprite game console (space duel) Verilog · 2 SNES game pads, a small CPU + tile graphics ▶ Playcode ↗
Bang Bang Tank (Tank 1990) SystemVerilog · buttons, PmodKYPD keypad, PS/2 keyboard ▶ Playcode ↗
Flappy Square Verilog · buttons, VGA (3-3-2 colour) ▶ Playcode ↗
Guitar Hero SystemVerilog · 4 external buttons (frets), speaker, 800x600 VGA ▶ Playcode ↗
Marble Maze (LED matrix) SystemVerilog · 2 MAX7219 8x8 LED matrices, buttons, 7-segment ▶ Playcode ↗
Simon (LEDs + 7-segment) Verilog · buttons, LEDs, 7-segment ▶ Playcode ↗
LED Ping-Pong (two players) Verilog · buttons, LEDs, 7-segment ▶ Playcode ↗
Atari Pong VHDL · 4 external buttons (paddles), VGA ▶ Playcode ↗
Tile world explorer SystemVerilog · buttons, scrolling tile map ▶ Playcode ↗
Blackjack Verilog · buttons, LEDs, 7-segment ▶ Playcode ↗
Stop the light (LED arcade) Verilog · buttons, LEDs, 7-segment ▶ Playcode ↗
Dino Run (Chrome T-Rex) Verilog · buttons, VGA sprites ▶ Playcode ↗
3D Raycasting shooter SystemVerilog · PS/2 keyboard, buttons, 3D raycasting ▶ Playcode ↗
Square Catch Verilog · buttons, VGA, 7-segment ▶ Playcode ↗
Slot Machine Verilog · buttons, switches, 7-segment ▶ Playcode ↗
Minesweeper (SNES pad) Verilog · SNES pad via the Gamepad Pmod, VGA ▶ Playcode ↗
Pong (one player) Verilog · buttons, switches, LEDs, 7-segment ▶ Play
IR drag race (two players) VHDL · 2 IR sensors, Clocking Wizard IP ▶ Play
Sensor dashboard Verilog · ultrasonic, load cell, 4x4 keypad, 800x600 ▶ Play
Snake with a USB keyboard Verilog · PS/2 keyboard on the USB port ▶ Play
Paint with a USB mouse Verilog · PS/2 mouse on the USB port ▶ Play
Pac-Man sprite from a ROM Verilog · Block Memory ROM IP (.coe) ▶ Play
Star catcher with a joystick Verilog · Digilent PmodJSTK on JA (SPI) ▶ Play
Sonar Flap (ultrasonic) Verilog · HC-SR04 ultrasonic sensor, VGA ▶ Play
Hand Pong (ultrasonic) Verilog · HC-SR04 ultrasonic sensor, VGA ▶ Play
Steady Hands (load cell) Verilog · HX711 load cell, VGA ▶ Play
Keypad Memory (Simon) Verilog · PmodKYPD 4x4 keypad, speaker, VGA ▶ Play
Keypad Whack-a-Mole Verilog · PmodKYPD 4x4 keypad, speaker, VGA ▶ Play
Math Sprint (keypad) Verilog · PmodKYPD 4x4 keypad, VGA ▶ Play
Rock Dodger (joystick) Verilog · PmodJSTK joystick, VGA ▶ Play
Pad Racer (SNES game pad) Verilog · SNES/NES game pad, VGA ▶ Play
Matrix Snake (8x8 LED matrix) Verilog · MAX7219 8x8 LED matrix, buttons ▶ Play
Aim Trainer (mouse) Verilog · PS/2 mouse on the USB port, VGA ▶ Play
Typing Rain (keyboard) Verilog · PS/2 keyboard on the USB port, VGA ▶ Play
Reflex Duel (2 IR sensors) Verilog · 2 IR obstacle sensors, VGA ▶ Play
Switch Catch (board only) Verilog · switches, LEDs, 7-segment, VGA ▶ Play
Binary Blitz (board only) Verilog · switches, 7-segment, VGA ▶ Play
Number Hunt (serial terminal) Verilog · USB-UART terminal 115200 baud, VGA ▶ Play
OLED Breakout (Pmod OLEDrgb) Verilog · Pmod OLEDrgb 96x64 colour OLED, speaker ▶ Play
Tilt Maze (accelerometer) Verilog · Pmod ACL2 accelerometer, VGA ▶ Play
Shake Dice (vibration sensor) Verilog · SW-420 vibration sensor, VGA ▶ Play
Hand Reflex (proximity sensor) Verilog · IR proximity sensor, VGA ▶ Play
Strength Tester (pressure sensor) Verilog · Force sensor (FSR) on Pmod AD1, VGA ▶ Play
Knob Racer (rotary encoder) Verilog · KY-040 rotary encoder on Pmod JA, VGA, 7-segment, LEDs ▶ Play
Tilt Ball (MPU6050) Verilog · MPU6050 accelerometer (I2C) on Pmod JA, VGA, 7-segment, LEDs ▶ Play
Remote Reflex (IR remote) Verilog · IR receiver + NEC remote on Pmod JA, VGA, 7-segment, LEDs ▶ Play
Card Match (RFID) Verilog · MFRC522 RFID reader (SPI) on Pmod JA, VGA, 7-segment, LEDs ▶ Play
Dial Pong (potentiometer) Verilog · Potentiometer on the JXADC header (XADC), VGA, 7-segment, LEDs ▶ Play