Abstract for group SNAKE 1. Rationale GPU is a processor unit that focuses on graphics tasks. Instead of writing software programs, this could improve the graphics processing performance by hardware implementation. The same reason as DSP, since the graphics processing takes too much processor computing resource, it's better to have a special processor unit with focus on graphics jobs. For example, the VGA is 600x480 pixels per-frame, and it needs at least 24 to 32 frames per-second to avoid rendering lag. Therefore, it needs to compute 600x480x24 = 6.9M pixels per second. For most CPU, especially in Embedded System, it is impossible to achieve this performance without any hardware support. GPU applications are more and more popular and general, such as video games, media player, and mobile devices. Generally, GPU design could be divided into three layers from bottom to top: 1. Hardware Design, 2. API and Firmware, 3. Software applications. Hardware Design is design some hardware functions, such as drawing line, drawing triangles and bitmap swapping. API and Firmware, such as OpenGL [1] and DirectX [2], offers some functions that could direct use the hardware functions. The reason of API and Firmware is because it always writes some registers and memory space in order to trigger the hardware function, and it is inconvenient for software programmer directly writing these registers. In addition, some API may combine several hardware functions to create another powerful hardware function, for example, by calling drawing line function three times, it could get the simple drawing triangle function. Finally, programmers write their software applications above this platform by calling API. 2. Game Background SNAKE is a video game installed on most Nokia cell phones. The user controls a constantly forward-moving snake to go in four directions: top, bottom, left, right, while its body and tail leaves temporary persistent trails on the screen. The goal is to navigate the creature's head to eat apples that randomly appear on the screen to gain score, while avoiding eating itself (body to tail) and other obstacles. The more apple the snake consumes, the longer its body becomes, thus more challenging to navigate. 3. Main Goal This is a 3 months course project. Therefore, the main goal is simple, clear but makes sense that we create a simple GPU that offers some simple hardware functions and some APIs. Finally, we will implement SNAKE upon our API. 4. Tentative Plan of Action 1. Hardware Design: we use VHDL to create some hardware functions on Xilinx FPGA. Since we are not sure how well and how many functions we could finish, here we list the hardware functions in our implementation priority: drawing line -> sprite -> fill a closed object with color -> drawing triangle -> swapping bitmap. People in charge: David, Joe, Joseph, Wei-Chung. 2. API Design: we offer some API for programmer to use the hardware functions. People in charge: Wei-Chung. 3. Game Design: design the rules and controls of SNAKE. People in charge: Wei-Chung, David, Joe, Joseph. 5. Milestones Step 1: Create some simple hardware functions. Step 2: Create API. Step 3: Implement the video game. Step 4: Debug and get the final version. Step 5: Write the report and present. 6. References [1] OpenGL: The Industry's Foundation for High Performance Graphics, http://www.opengl.org [2] DirectX: provides a standard development platform for Windows-based PCs by enabling software developers to access specialized hardware features without having to write hardware-specific code, http://www.microsoft.com/windows/directx/default.aspx