(3.7 MB PowerPoint)

advertisement
Robert Benson
David Hover
Jonathan Tate
Paul Niewoonder
ROBERT BENSON
Primary Goal
 Embedded Software Graphics Accelerator
 Shader Unit



Media-Centric Co-Processor
High Floating-Point Computation Performance
Graphical Computation
 Complete Software Graphics Pipeline
Hardware
 Custom Multi-FPGA Development Board
 Cyclone III FPGAs
 Outputs


VGA Port
LEDs
 Inputs


8-Directional Joysticks
JTAG Programming Port
Hardware Block Diagram
Hardware Details
 Abdomen
 Cyclone III (EP3C16Q240C8)
 DAC (ADV7123)
 Serial Programming Device (EPCS)
 JTAG Configuration Port
 Leg
 Cyclone III (EP3C25E144C7)
 DDR SDRAM (512 MBit)
 Ports for GPIO
Hardware Details
 I/O Widgets
 8 Directional Joystick
 RGB LEDs
 Communication Methods
 Memory – DDR SSTL_2
 Inter FPGA - LVDS
Hardware Power
Computer
Power Supply
3.3V
1.2V Linear
Regulators
5V
3.3V Linear
Regulator
2.5V Linear
Regulators
VCCINT
EPCS/Buffers
VCCIO/RAM
VDD
VCCD
DAC
VCCA
Clocks
12V
1.25V Linear
Regulators
VREF/VTT
LEDs
Fans
Cost Estimate
Expenses
Unit Cost
Quantity
Extended
Lobster
Leg FPGA
$
60
2
$
120
Abdomen FPGA
$
30
1
$
30
Memory
$
6
2
$
12
Discrete
$
50
1
$
50
Power
$
77
1
$
77
I/O
$
40
1
$
40
Board
$
70
1
$
70
$
399
Total
Both Revisions
$ 798
Crab
Leg FPGA
$
60
4
$
240
Abdomen FPGA
$
30
1
$
30
Memory
$
6
4
$
24
Discrete
$
70
1
$
70
Power
$
109
1
$
109
I/O
$
50
1
$
50
$
200
1
$
200
Board
Total
723
$ 723
Total Costs
$1,521
Schematics?
Layout?
DAVID HOVER
Software
 User Application Software
 Main User Interface
 Benchmarks
 Demos
 Tetrisphere Clone
 Graphics Pipeline Software
 Assembler
Main Menu
See attached 
Benchmarks & Demos
 Benchmarks
 Matrix Multiplications
 Matrix-Vector Multiplications
 Transcendental Function Calculation
 Demos
 Racecar
 Bouncing Blob
 Buffalo
 Beach
Software Implementation
 “Game Loop”
 Poll User Input
 Update “Game” State
 Redraw Environment
 OpenDC API
 Similar To OpenGL
 Smaller Subset
Example OpenDC Functions
 State Manipulation
 dcEnable()
 dcClear()
 dcFinish()
 Matrix Manipulation
 dcMatrixMode()
 dcLoadIdentity()
 Parameter Manipulation
 dcBindShader()
 dcBindTexture()
 dcUniform1f()
General Software Layout
Graphics Pipeline Software
 Hardware to
Software
Abstraction
The Assembler - Flex




Matches expressions
Literal or regular expressions
Can perform any action after a match
The main task is to turn matches into tokens for
the upcoming parser
Flex (Cont.)
Our Lexer has the following properties

Matches all valid assembly commands

Allows for comments, i.e, anything after a semicolon is
ignored

Ignores all white space

Is able to distinguish between arguments and labels.
The Assembler – Bison
 Invoked after the lexer
 Sends tokens through an annotated context-free
grammar.
 A context-free grammar, for example, has the form of:
stmts : stmt stmts
| stmt
;
 This is one of many definitions.
 This stores data as it parses
Bison (Cont.)
The parser is general, all commands are treated
equally
 Validity is checked per completed command
 After completion, the parser passes the finished data
to be converted into a bitstream
JONATHAN TATE
System Logic Design
 Prebuilt
 SOPC Builder
 Memory Controllers
 NIOS II Processor
 Custom
 Caches
 LVDS to Avalon Interconnect Bridge
 Shader Unit
Shader ALU
Shader Unit
Leg Shader Block
Shader Thread Scheduling
Cycle
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Thread 1
x
Thread 2
x
Thread 3
x
Thread 4
x
Thread 1
y
Thread 2
y
Thread 3
y
Thread 4
y
Thread 1
z
Thread 2
z
Thread 3
z
Thread 4
z
Thread 1
x
Shader Thread Scheduling
Cycle
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
0 1 2 3 4 5 6 7 8
Thread 1
x
Thread 2
x
Thread 3
x
Thread 4
x
Thread 1
y
Thread 2
y
Thread 3
y
Thread 4
y
Thread 1
z
Thread 2
z
Thread 3
z
Thread 4
z
Thread 1 w
Thread 2 w
Thread 3 w
Thread 4 w
Thread 1
x
PAUL NIEWOONDER
Arithmetic – Multiply-Add
Multiply Unit
Arithmetic – Multiply-Add
Add Unit
Arithmetic – Inverse Square Root
float InvSqrt(float x)
{
float xhalf = 0.5f * x;
int i = *(int*)&x;
i = 0x5f3759d5 - (i >> 1);
x = *(float*)&i;
x = x*(1.5f - xhalf*x*x);
return x;
}
Arithmetic – Divider
 Chained subtract and bit shift
 Requires many LUTs
 Full divide support would take up most of the available
board space
 Limited divide support (1 divide per sixteen cycles)
Case Design
 Plexiglas substrate
 Ventilation holes
 Fan mount
 Joystick control mount
 VGA output port
Schedule
Milestone Deliverables
 Milestone 1
 Revision 1 of Lobster FPGA Board
 Iteration 1 of the Software
 Milestone 2
 Lobster FPGA Board
 Iteration 3 of the Software
 All Logic
 Capstone Expo
 Crab FPGA Board
Division of Labor
 Jonathan Tate
 System Logic Design
 Shader Programs
 Graphics Pipeline
Control Software
 David Hover
 Assembler
 User Application
Software
 Robert Benson
 Board Design
 User Application
Software
 Graphics Pipeline
Control Software
 Paul Niewoonder
 Arithmetic Logic Design
 Case
QUESTIONS?
Download