-
Take a look at the FPGA development projects at foreign universities
As far as I know, many universities in China do not offer FPGA-related courses, so many students are self-taught. However, self-learning requires certain goals and projects. Today, let’s take a look at the FPGA project courses offered by Cornell University, an Ivy League school. Most of the courses have source code, and like the usage habits in China, they are developed in Verilog, which is quite meaningful for reference.
Project Links
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/
Project Introduction
Spring 2013 Development Board CycloneII
Upper Body Motion Tracking

In this project, a real-time upper body tracking system based on skin detection was created using FPGA, a VGA display, and a camera. The video stream is obtained from the camera, filtered, averaged, and stored in downsampled memory. The downsampled frames are used to calculate the position of the user’s head and arms. The 3D projection changes according to the user’s camera view, creating a more realistic 3D robot. Users can change the current VGA view through a set of switches. The system created above can mimic the user’s real-time body movements.

-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/wd65/wd65_SP13/index.html
-
Video Link 1
-
Video Link 2
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/wd65/wd65_SP13/files/DE2_TV.qar
Hand Tracking Pong

This is a pong game based on skin color detection played on a VGA display, where two players play the game by sliding the ball past each other’s paddles towards the boundary. Each paddle tracks the player’s hand movement in the vertical direction using an HTC 231x CCD camera. Whenever a player fails to block the ball, the other player scores a point. The game ends when either player scores 5 points and a corresponding winning message appears on the screen. Sound effects play every time the ball hits the boundary and bounces.

-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/hl855_kre27/hl855_kre27/index.html
-
Hackaday Project Introduction
http://hackedgadgets.com/2013/05/11/hand-tracking-pong/
-
Video Link
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/hl855_kre27/hl855_kre27/Hand_Tracking_Pong.zip
Multiple NTSC Screen Game Battleship

“Play the classic Battleship game on two TVs with custom NTSC video generation capabilities”

-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/mdr87/index.html
-
Video Link
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/mdr87/code/Battleship.qar
Augmented Reality Ball Game

This project uses the Sobel operator to detect the edges of the map drawn on a whiteboard. The physics engine implemented on the Pancake processor (introduced in the previous article) controls the movement of the ball on the map. The map and ball are displayed on the VGA screen.
The game is played by controlling the switches and buttons on the development board. Player 1 draws any number of straight lines on the map. Both players attempt to move the ball to the destination. The movement of the ball is controlled by fixed impulses that can be applied at any angle. The number of impulses required to reach the destination is recorded and displayed on a seven-segment display. The player who applies the least number of impulses to the ball wins. Player 2 then draws obstacles on the map, and the game continues as before.


-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/cwf38_as889_mao65/index.htm
-
Video Link
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/cwf38_as889_mao65/code/ece5760-final-cwf38-mao65-as889.zip
Anti-Tetris Game
In this project, I built a video game called “Anti Tetris” on the FPGA board. The game captures hand movements and pushes to avoid blocks from falling. If the blocks fill the screen, the player fails. The final score is based on how many blocks the player eliminated and how long the game lasted. The game screen combines real video streams with Tetris blocks, allowing players to see how they hit the blocks.


-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/tg293/tg293/index.html
-
Hackaday Project Introduction
-
Video Link
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/tg293/tg293/code/DE2_TV.v
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/tg293/tg293/code/VGA_Square.v
Video Game Enhancer



Designed and implemented a video game enhancement system on FPGA (including blur, edge detection, edge enhancement, color inversion, red/blue swapping, strobe light, tube perspective, screen preview). Our implementation divides the video signal of a standard two-player split-screen game into two VGA signals, each displaying only one player’s half of the screen. Each player can choose one of eight different video “effects” to use regularly against their opponent.


-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/spw54_as986/spw54_as986/index.htm
-
Video Link
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/spw54_as986/spw54_as986/index.htm
Hardware-Based FPGA AI for Super Mario Bros

Built an FPGA-based AI that uses video input from the NES console to play the game Super Mario Bros automatically. All video analysis and AI techniques are implemented in hardware compiled from Verilog running on the FPGA. The project combines NTSC decoding, VGA output, kernel-based pattern matching, real-time image processing, and NES controller emulation.

-
Project Introduction
http://www.nintendoninja.com/
-
Hackaday Project Introduction
-
Video Link
-
Code Link
https://github.com/sciguy14/NintendoNinja-Website/archive/master.zip
Beat-Programmable Gate Array

Built a sequencer/synthesizer using an FPGA board for audio processing and MATLAB as the user interface. The synthesizer uses a combination of sampling and additional synthesized sounds to simulate various instruments. The FPGA-based sequencer receives input from the MATLAB GUI and sequences each instrument separately, allowing users to create works in real-time. Additionally, an automatic gain control algorithm was implemented to ensure that the gain does not overflow and cause output distortion.

-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/and43_mms297/and43_mms297_Webpage/index.html
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/and43_mms297/and43_mms297_Webpage/index.html
Piano Hero with Virtual Keyboard


Implemented an interactive piano game where users can play a virtual piano keyboard on the screen even though the screen is not a touchscreen.
By connecting a camera above the display, the display turns into a touchscreen through a very simple calibration step! By tapping on the virtual piano keys displayed on the screen, users can produce sounds as if they were playing a real piano. Two modes are provided for users: practice mode, where users can play freely; and play mode, where users follow graphical instructions on which keys to press at a given time, and users receive scores based on their performance.


-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/cl972_rh523/cl972_rh523/index.html
-
Hackaday Project Introduction
-
Video Link
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/cl972_rh523/cl972_rh523/SourceCode.zip
Music Suite

Audio composer and conductor suite.

-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/esh64_er294_as885/esh64_er294_as885/index.html
-
Video Link
-
Code Link
Code not open
Realtime Image Effects

Implemented image dilation, erosion, opening, closing, and edge detection using FPGA. The source code is highly referential.



-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/xb46_jw937/xb46_jw937/index.html
-
Video Link
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/xb46_jw937/xb46_jw937/index.html
Red Tool Revolver


The camera outputs NTSC signals into the FPGA, which processes the image from the camera’s field of view to extract RGB values. The RGB values are filtered to select unique color values, and the center of the object is used as the crosshair for our gun (digital shooter). A VGA controller is used to output the video input to a VGA monitor, displaying multiple overlapping objects such as the crosshair, targets, and shots fired in the video image. We use a seven-segment display to track the player’s score and use switches to control various parameters in the game, such as difficulty level.


-
Project Introduction
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/em447_jm776/em447_jm776/index.html
-
Code Link
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/s2013/em447_jm776/em447_jm776/DE2_TVv10.zip
Conclusion
There are many projects, and from 2016 to 2023, some projects may not be displayed. Most have video introductions, but I found that some videos only demonstrate functions simply without design ideas, so it is necessary to check the documentation in the source code.