- Brennan Law
- Jeffrey Li
- Johnson Zhu
Our project is a Verilog implementation of the game Snake. Like in the original video game, the player maneuvers a snake which grows in length after eating. The snake is to avoid obstacles such as the game boundaries and itself. If a snake hits an obstacle, the game ends and will need to be restarted.
- KEY[0]: Move right
- KEY[1]: Move down
- KEY[2]: Move up
- KEY[3]: Move left
- SW[0]: Reset/start new game
- SW[2], SW[3]: Set game difficulty/speed
- HEX4, HEX5: Display score/apples eaten
Video URL: https://www.youtube.com/watch?v=Mu3IAKBqEcE
It involves using the VGA display to display the game, a datapath for game mechanics, and a controller to process player input.
It's the recreation of a rather complex video game using simple components such as an ALU and a FSM controller.
Snake could be easily developed using high-level programming languages such as Python and C#, so it would give us more insight into how the low-level components of the computer work if we coded the game in a hardware description language such as Verilog.