Hardware Implementation of the Pong Game

GitHub Repo View the code on GitHub


Welcome to the VHDL Hardware Pong Game project! This repository contains a complete hardware implementation of the classic Pong game. Let’s have a quick Demo of the Game in video below.

Watch my video on youtube (click on the picture below):

Watch the video

To be honest, this was the first serious project I created during my journey with FPGAs. In the spring of 2026, I decided that I wanted to truly master RTL design, and I asked myself: what could be more joyful than building games in hardware?=)))
That idea became the start of my FPGA game‑development adventure. Pong was my first milestone, and through it I practiced real RTL design, timing, video output, and hardware‑driven game logic. This project represents the moment where my learning turned into something creative, fun, and fully my own.


Project Overview

The goal of this project is to recreate the iconic Pong game entirely in hardware. It supports two-player gameplay, where players use buttons to control their paddles and prevent a ball from passing their side.


System Architecture

The architecture follows a hierarchical design. At the center is the Top-Level Module (top/pong_top), which connects the game logic, video generation, and audio systems.

The Pong Game’s Block Diagram:

The Pong Game's Diagram

State Machine(FSM):

The Game State Machine (top/pong_SM) acts as the controller, managing whether the game is in the “Start,” “Play,” or “Game Over” phase. It receives inputs from the paddles and ball modules and decides what should be drawn on the screen and what sounds should play.

The Pong Game's FSM


Detailed Module Descriptions

Core Logic & Control

Video Generation

Audio System

Hardware Support


Setup Guide

For the Cyclone V GX FPGA, I have used the follwing Pinout table:
Click here to open the Pinout-Table.CSV

Play: Press the “Start” button to begin! Use the Up/Down buttons to control your paddle. The score will update automatically on the 7-segment display when the ball passes a player.