← All Projects

HOBBY FPGA PROJECT

Pong Game

Two-player Pong in programmable logic, with onboard button controls, collision detection, and a 720p renderer.

Cinematic concept illustration of an FPGA Pong game
Concept illustration of an FPGA Pong game.
Pong Game implementation signal path
Implementation diagram based on project documentation. Personal setup photos and demonstration videos have not been added.

Project demonstration

An automatic browser demonstration of the project concept.

Browser demonstration with synthetic inputs; not a recording of FPGA hardware.

Project overview

A two-player game implemented entirely in FPGA logic. Four onboard buttons control the paddles, while the design handles ball movement, collisions, scoring, and HDMI rendering without an ARM application or external frame memory.

Key features

  • Two independently controlled paddles with synchronized, debounced buttons.
  • Wall and paddle collisions, two-digit scores, and a one-second serve countdown.
  • Fixed 1280 × 720 video at approximately 59.975 frames per second.

High-level architecture

Buttons / debounceGame state / collisionsPixel rendererTMDS / HDMI

Notebook architecture

Notebook-style architecture illustration for Pong
Notebook-style illustration of the documented architecture. Open to view at full size.

Engineering challenges

Game state updates during vertical blanking so paddles, the ball, and scores stay stable throughout each visible frame. Movement and collision decisions are split across four pixel-clock cycles, and the renderer keeps RGB and video timing aligned.

Validation & current status

Repository-recorded validation: eight selected VUnit tests passed, GHDL synthesis passed, and Vivado routing and bitstream generation passed. Reported setup slack is +1.068 ns and hold slack is +0.122 ns, with 679 LUTs, 281 registers, and 3 DSPs used. These checks were not rerun for this website update. Gameplay, controls, scoring, and reset still require hardware testing.

Scope & limitations

Targets the original Zybo. A display accepting the fixed 720p mode is required; HDMI audio and EDID negotiation are not implemented.