SimpleGPU
ECE 576 - Fall 2007

John Sicilia (jas328) & Austin Lu (asl45)

Home

Introduction

Software Design

Hardware Design

Results

Issues

Conclusion

More Pictures






Introduction

For our final project, we chose to use the DE2 in order to create a simple graphics processor. Our goal was to be able to use the NIOS 2 to write simple software commands, then have the hardware and secondary supporting software display it on the monitor. We focused on 3-D graphics and perspective transformations in order to display input coordinates on the screen in 3-D.

From the start, it was obvious that we were going to have to divide our project into two major components: synchronous hardware designed in Verilog and a simple C program executed on a NiosII. We wanted to limit the amount of calculations actually performed on the Nios, because the output ports were limited and this could create a real bottleneck. As a result, only calculations that made great use of floating point operations were written as software, because it would be infeasible to create a hardware floating point unit.

After careful consideration, the tasks were split into two.

Software: Top-level control of polygons, camera position, and camera angle
Conversion of polygons into canonical view
Perspective transformation of polygons
Clipping using the Sutherland-Hodgman Algorithm
Scaling and conversion into window coordinates
Interface: NiosII sends out integer polygon vertices in (X, Y, Z, C) format.
Hardware: Storage of polygon vertices and corresponding polygon colors
Polygon filling calculations
Z-coordinate mapping and depth buffers
VGA controller and buffered writing to SRAM
Storing and displaying performance statistics