Rationale and Sources of Project Idea

We have been working closely with the DE2 board and VGA monitor in our previous labs. For the final project, we wanted to gain experience in something new, yet still challenging and interesting, so we decided to use the CCD camera, along with the DE2 board and the VGA monitor, to create a game that can be played using real-time hand motions. Also since real-time motion tracking has been very popular in the modern game techonology, we thought this would be a great opportunity to explore such an idea.

Logical Structure

In order control the game using hand motions, we need a device to track hand movement. We chose the Terasic CCD kit, which consists of a 1.3 megapixel CMOS image sensor and an IDE cable to connect to the GPIO port of the DE2 board. We followed the provided code to learn how to use the camera in the kit.
The current image is captured by the camera and sent to the DE2 board, then each video frame is stored in the SDRAM. We detected the hand position in the recorded frame using the skin color detection scheme in the top module. The following diagram illustrates this idea.

The control part contains the game algorithm that produces signals to the VGA controller and the audio codec. Via these signals, the game interface can be displayed on the VGA monitor and the corresponding sound will play from the speakers. A detailed description of this part will be covered in the next section.

Hardware/software Trafeoffs

We developed both the game graphics and skin color detection scheme in hardware because we wanted images to be displayed in real time without flickering. Specifically, for the game graphics, we used combinational logic to draw the ball, paddle, and bricks and used a state machine to generate the game algorithm. The game was implemented without the use of either M4K block or SRAM. While developing the game, we also considered giving the player the option of tilting the paddle in any desired angle using hand motions. What this means is if the player wants the ball to be bounced in an angle other than 45 degrees, he can tilt the paddle accordingly. We tried to implement this idea in hardware but only to find out later that, without the help of software, it was quite challenging. We thought of including software in our design, but with the limited amount of time remaining, we decided to stick with the original plan.