Designing And Implementing An Embedded Microcontroller System: Tetris Game

In this paper we present the software and hardware design experience of a junior cadet majoring in electrical engineering at the U.S. Air Force Academy as he completed an embedded system project in a second microcontroller course. The paper also includes the corresponding observations made by his instructors. Some of the topics of this semester-long course are programming microcontrollers using C, software and hardware design techniques, interfacing devices to buses including fan-out issues, as well as buffering and timing analysis for interfacing devices. As a course requirement, an embedded system project must be completed by each student using the hardware kernel they had developed throughout the semester. The Tetris game was an ideal final project for this course due to its demanding software and hardware requirements, which required the student to apply and incorporate hardware and software skills and to perform tradeoff analyses using what he had learned throughout the course: (1) memory expansion, (2) input/output interfacing, (3) embedded software development, and (4) stand-alone system development. This paper provides the reader with the step-by-step procedure used at the Academy for the completion of the embedded system project and shares the lessons learned from both student and instructors’ perspectives in the context of completing a successful and challenging Tetris game project.