This project implements a classic two-player PONG game on the Nexys A7 100T FPGA board. The game logic is executed on an ARM Cortex-M0 processor, and the FPGA is programmed using Verilog. The provided Verilog files are sourced from ARM education. The project utilizes Xilinx Vivado for FPGA programming and Keil µVision 5 for Cortex-M0 development.
- Introduction
- Prerequisites
- Hardware Setup
- Software Setup
- Building and Running the Project
- Project Structure
- Usage
- License
- Acknowledgements
The PONG game is a simple but engaging project that demonstrates the integration of hardware and software components. Players control paddles on either side of the screen to bounce a ball back and forth. The game ends when a player fails to return the ball.
Before you begin, ensure you have the following:
- Nexys A7 100T FPGA board
- ARM Cortex-M0 processor
- Xilinx Vivado Design Suite
- Keil µVision 5 IDE
- ARM education Verilog files (provided in this project)
- USB cables for programming and power
- Basic understanding of Verilog and embedded C programming
- Connect the Nexys A7 100T board to your computer using the USB cable.
- Ensure the power jumper on the board is set to the USB power option.
- Connect external components (buttons, switches, and display) as needed for the PONG game controls.
- Install Xilinx Vivado: Download and install the Vivado Design Suite from the Xilinx website.
- Install Keil µVision 5: Download and install Keil µVision 5 from the ARM website.
- Clone this repository: Download the project files from the repository or clone it using Git.
git clone https://github.com/PONG_2players/PONG_2players.git
- Open Vivado and create a new project.
- Add the provided Verilog files to the project.
- Configure the project for the Nexys A7 100T board.
- Synthesize and implement the design.
- Generate the bitstream and program the FPGA.
- Open Keil µVision 5 and create a new project.
- Add the provided C source files to the project.
- Configure the project for the Cortex-M0 processor.
- Compile the project and ensure there are no errors.
- Load the compiled binary onto the Cortex-M0 processor.
The project directory is organized as follows:
pong-nexys-a7/
├── Application/
│ └── main.c
├── Core/
│ ├── core_cm0.h
│ ├── core_cmFunc.h
│ └── core_cmInstr.h
├── Device/
│ ├── cm0dsasm.s
│ ├── EDK_CM0.h
│ ├── edk_driver.c
│ ├── edk_driver.h
│ ├── edk_api.c
│ ├── edk_api.h
│ └── retarget.c
├── vivado_project/ # Vivado project files
├── keil_project/ # Keil µVision project files
└── README.md # Project README file
- Power on the Nexys A7 100T board and ensure it is connected to your computer.
- Start the PONG game by running the programmed logic on the FPGA and Cortex-M0.
- Control the paddles using the connected buttons or switches.
- Enjoy the game and challenge a friend!
All files and resources in this project are subject to ARM's licensing terms and conditions. Please refer to the specific license files included in the repository or the ARM website for detailed information.
- ARM Education for providing the Verilog files and educational resources.
- The open-source community for tools and support.
Feel free to reach out if you have any questions or need further assistance.
Happy gaming!