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