18-545: ADVANCED DIGITAL DESIGN PROJECT FALL 2016 BRANDON LUCIA L1: PAST PROJECTS
18-545: ADVANCED DIGITAL DESIGN PROJECT
FALL 2016
BRANDON LUCIA
L1: PAST PROJECTS
18-545: FALL 2016
Administrative Stuff
Teams are / should be formed
Project Ideas due Wednesday, September 7
Lab1 due Wednesday, September 14
Getting started
Project Proposal Presentations on Monday, September 12
2
18-545: FALL 2016
Project Proposal
What do you plan to do?
Game description and how it covers the requirements
Graphics, sound, user input, multi-player, scoring, fun
Hardware / Software plan
Architecture, block diagram
Peripherals?
Software functions
Description of major tasks, who is doing them
3
18-545: FALL 2016
Proposal (2)
Schedule
Who’s doing what, when
When each major task will be complete
Milestones for each person
Resources
What outside resources you need
What you’ll use them for
Pointers to the resources
I understand this is all very preliminary and won’t hold you to the details
Major deviations will require discussions with me and my approval
4
18-545: FALL 2016
Lab machines - your machines
You have accounts on machines in the lab
You should be able to sudo using your own password
DON'T DO ANYTHING STUPID
If you break/compromise the machine, it will be wiped and reinstalled
Don't change root password or add any root ssh keys
Don't add accounts without asking me/gripe
Install software at /usr/local, /opt or /home
Don't overwrite any base installed software
Don't allow automatic upgrades to get installed!
6
18-545: FALL 2016
Today: Previous Projects
This is the 11th iteration of this course
First 2 years were taught by Prof Ken Mai
I’m copying his descriptions and advice here
2008 - 2015 project descriptions are by Prof Bill Nace
Previous final reports are on webpage
7
VR Pacman
3D Pacman
OpenGL on workstation
Board handled game
VR helmet display
Viewpoint tracking
Not stereoscopic
Full-body swivel control
Hacked mouse + deskchair
Every Extend
Every Extend clone
Self-contained
Playstation 2 controller
Parallel port interface
Most complete game of 06
High score
Game modes
Bosses
Bomberman
Bomberman clone
Ported SDL lib to board
Had SDL Bomberman
implementation
Moved performance critical
portions of SDL library to
hardware
Sega Genesis controllers
Simple interface
SDL = Simple DirectMedia Layer, a cross-platform open-source multimedia C library
NES (06, 07)
NES clone
Bit-for-bit full hardware
implementation
Very ambitious
Much of the system working
Picture processor
Controller interface
Toy application
Bitten by …
Verification
Unit interfacing
Team dynamics
Graphics Processor
OpenGL GPU
GPU on board
Application sends OpenGL
calls to board via ethernet
Rendered a colored triangle
Bitten by …
Board capacity
Time
Asking for help too late
Inexperience
Instruction
BRAMFetch Unit
Instruction
Decoder
Coordinate
Transformation
Pipeline
Triangle
Rasterization
Pipeline
OpenGL
software
code
Frame buffer
BRAM
Ethernet
VGA
Physics Processor
Hardware physics processor
Similar to Ageia design
Board tracks objects
Workstation handles game
PPU working
Only toy application
Some issues with fitting design
on board
Bitten by …
Team dynamics
Team dynamics
Team dynamics
Networked Tetris
Multi-player Tetris
2 players/board
Networked boards
Most of game in hardware
Working game
Score
Networking
Bitten by …
Not too ambitious
Quake
Port of 1996 PC game Quake
3D first person shooter
Open-sourced in 1999
Running entirely on FPGA
Full input, sound, video, and
networking support
Hardware FPU
Networked 3 boards + PC
together in public demo
Guitar Hero
Port of Guitar Hero console
game
Used open-source Frets on Fire
for starting code base
Guitar (PS2 controller) interfaced
through parallel port
Most issues in synching sound,
video, and controller
Limited song library
Did not automate song input
18-545: FALL 2016
2008 Projects
Descent (i.e. Vertigo)
NanoSeige
“Xilroids” i.e. Asteroids with a Wii
NES
17
Descent
3D first-person shooter
6 degree-of-freedom play
Released on 1995
Source released in 1997
Ported PhysicsFS and SDL
libraries
Networking and music never
completed
Otherwise complete game
Success due to:
Reading Pentium Chronicles
NanoSeige
Designed own game
Wanted massively parallel
hardware accelerated game
Something of an abstract real-
time strategy game
Worked hard all semester,
declared victory with whatever
they had built
Done in by
teamwork
didn’t follow any advice
XilRoids
Initially tried to build “Maelstrom”
a 1993 clone of Asteroids
Ran into difficulty, decided to
reset
Designed their own asteroids
variant
Used Wiimote for user input
Done in by
Decision to reset
NES (2008)
NES Clone
Full hardware implementation
Controller peripherals
“Virtual” cartridge interface
Used ROM images of
Bomberman, Tetris
Sound limited to single channel
Successful because
Worked to personal strengths
Relentless debugging
2009 Projects
Duck Hunt with WiiMote
GameBoy
MultiWilliams
OpenGL
Quake II
SSD research project (times 2)
Groups had choice of FPGA platform for first time
Vertex 2 Pro, Vertex 5-LX, Vertex 5-FX
Duck Hunt w/WiiMote
Simple “point-n-shoot” game
Using WiiMote, initially via straight
connection
“Settled” for connect via separate
laptop running java program to
convert
Programmed game “from scratch” as a
clone
Moderately successful
Flexible process
Stayed with Vertex 2 Pro board
GameBoy
8-bit handheld console from
late ‘80s
Original attempt was for GB
Color with link cable for
multi-player
Settled for original GB
Incomplete DMA
implementation led to
graphic corruption
No sound, link cable
MultiWilliams
Williams was an arcade manufacturer
in ‘80s
Defender, Joust, Stargate,
Robotron, others
MultiWilliams emulates all 4
But very different architecture
among games
Built really nice input platform
Vertex 2 Pro
Done in by:
Didn’t face complexity
OpenGL
Another attempt to build OpenGL
render pipeline
Fixed-point version due to FPGA
fabric limitations
Fixed-function pipeline
custom-designed VLIW processor
custom micro-assembler
Done in by:
Switched platforms mid-stream to
Vertex-5
Quake II
Quake II is a FPS from 97
Code is open sourced
Commercial Linux distro on
FPGA
No sound
Vector coprocessor
Done in by:
Switching platform to Vertex-5
SSD Research Projects
Build a SSD controller for DIMM flash chips
Include AES encryption
Two teams attempted
Got flash DIMM built
Got some communication via PCIE to host
computer
Never got the rest put together
Vertex 5-LX boards
Done in by:
Team issues
Willingness to be behind schedule
18-545: FALL 2016
2010 Projects
OpenGL GPU (take 3!)
Super NES
SSD (again)
Virtex Squared
XilDoom
Groups had choice of platform (V2Pro, V5LX, V5FX) and were
given minimal "hand-holding" with the toolchain
29
18-545: FALL 2016
OpenGL Accelerator
30
Hardware pipelined
Input was pre-compiled sequence of OpenGL commands in a file on
the CF card
non-interactive
Moderate framerate at low triangle count
No z-buffer
Done in by:
Took too long to make decisions
Super NES
16-bit console from early 90s
Hunted down CPU Verilog from the company
that originally manufactured it
Cool! Very legal
Done in by
Integration! 4 individual chip descriptions.
Didn't work together.
Testing strategy relied on integrated system,
so no proof the chips worked individually
SSD (Again)
Didn't work
'nuff said
Done in by
Teamwork
Teamwork
Relying on past work
18-545: FALL 2016
Vertex Squared
Designed their own ARM-like CPU
Integrated with 18-447
Multi-bus, not particularly fast
Then got a small musical rhythm game running on it
Success due to:
Lots of hard work
Smart use of tools
33
XilDoom
Quintessential FPS
1993! More popular than
Windows '95
Open sourced in 97
Used Chocolate Doom
Reasonably successful
No networking or sound
18-545: FALL 2016
2011 Projects
Duck Hunt
Haxorus
Sidekick
Commodore 64
35
Duck Hunt
Yet another version of the classic game
Shoot at ducks as they fly in somewhat random patterns
Custom MIPS CPU
Custom Unix-like kernel
Custom Duck Hunt source (C)
Done in by:
Integration
Team dynamics -- one member went AWOL. Nobody noticed
Didn’t hold each other accountable for missing deadlines
Haxorus
Music visualizer
Input from iPod, output to speaker
Render shapes to video
Kinect to detect control gestures
Change colors, shapes, etc
Reasons for Success
Not entirely certain, “surprise
success”
Somehow overcame lots of team
dynamics issues
HTTP://WWW.YOUTUBE.COM/WATCH?V=RR-UGS8EPH0&FEATURE=YOUTU.BE
At start: Image cross-correlation algorithm for Lunar X
Match images to lunar maps
At end: PCIE peripheral for image processing
Move data quickly to
FPGA for acceleration
Done in by
Relying on grad
student code
Saved by
Timely pivot to build
something useful
Sidekick
Commodore 64
Creative “4th path” to building a video game -- build the microcomputer
Commodore 64 is the most popular microcomputer in history
Wrote each of the 3 main chips in Verilog/VHDL
6510 CPU, Vic II video unit, sound chip (Yes! Sound!!)
Got games running: Galaxian,
Mario’s Brewery, Centipede,
Pac-Man (sort of), Frogger (sort of),
BASIC interpreter
Reasons for success
Did everything right
18-545: FALL 2016
2012 Projects
Arcade (1942)
Defender (Apple IIe)
Dysentery (Apple IIgs)
Gameboy Color
Sega Genesis
Ray Tracer
40
18-545: FALL 2016
Arcade (1942)
Vertically scrolling shooter
Fly a P38 during the Pacific WW2
Sound from 1943
Stunning success!
Tuma Award
Success Due to
Good engineering decisions
Finished early and polished
41
18-545: FALL 2016
Apple IIe (Team Defender)
6502 based PC from early 80s
Bailed on implementation of 6502
Used open design instead
Goal: Floppy disk drive, unrealized
Completed: Basic interpreter
42
18-545: FALL 2016
Apple IIgs (Dysentery)
Expanded version of Apple II
GS == "graphics and sound"
65C816 CPU (16-bit)
With "Mega II" chip for emulation mode
Done in by
Spent too much time on disk drive
subsystem
43
18-545: FALL 2016
Gameboy Color (Team FPGBC)
Another attempt (F09)
Complex architecture
Semi-successful
Carefully designed game dodged memory problems and didn't
use buggy instructions
Done in by:
Insufficient debug skills
44
18-545: FALL 2016
Sega Genesis
16-bit console, early 90s
Successful project
Good sound, controller interface
Cartridge or ROM from flash
Success due to:
Hard work
45
18-545: FALL 2016
Ray Tracer
Own design for ray tracer
Real time response to camera reposition
Serial port loading of a scene (XMODEM)
K-D tree describes a scene
"Research" style project
Success due to:
Hard work
Hard work
Hard work
46
18-545: FALL 2016
2013 Projects
AstroTeam
Donkey Kong
Game Boy
Playstation
Super NES
47
AstroTeam
Research project
Compute co-processor for
"Visual Odometry" calculations
PCI interface
Lots of math
Done in by:
Schedule
Timing issues
Long synthesis runs
18-545: FALL 2016
Donkey Kong
Very successful arcade game from 1981
2 person team
Used (but validated thoroughly) OpenCores.com Z80
Used Arcade panel
Success due to:
2 person team
Appropriately scoped project
49
18-545: FALL 2016
Game Boy (Again)
Original Game Boy (Greyscale graphics version)
GPU doesn't support sprites
Cart. conn only supports Tetris
Sound works
Link cable works sometimes
Success due to:
Hard work
50
18-545: FALL 2016
Playstation
Very ambitious goal: Playstation with all peripherals (like CD Drive)
Troubles with HDMI on VC707 board
No good hardware interface docs
Pivot: Build a GPU on Altera DE2-115 board
Success due to:
Painting the fence
51
18-545: FALL 2016
Super NES
Revisit of F10 project
Integration trouble
CPU ⇔ GPU timing problems
Were able to prove that components were working
Sounds played from CPU
GPU displays a given frame buffer
Failure due to:
Took time to get model from vendor
Had to learn VHDL
52
18-545: FALL 2016
2014 Projects
Atari 5200
Logic Analyzer
Digital Synth
Gameboy Color
IBM PC
N64
53
Atari 5200
Very early console from Atari
Cartridge Connector
Complex, worked well
6502 CPU (common)
Success due to:
Decision to implement
everything themselves
Complete w/ case
Digital Logic Analyzer
Sample 32 channels at 100 MHz
SPI, I2C, UART, XMEM
Zynq 706 Board – Ran Linux on
the ARM w/ webserver
Node.js for UI
Lots of custom logic: sampling,
analysis, routing, etc
Failed to launch due to:
4-Person Team
Uncooperative Teammate
Digital Synth
Digital Synthesizer
MIDI from keyboard
Transform basic wave according to sliders/knobs
Required basic DSP: ADSR env., Filter, etc
Failed to Launch:
Too much time on MIDI interface, not starting early enough on DSP
Gameboy Color
YAGBA (Yet Another Gameboy
Attempt)
Reused prior years’ stuff
Cartridges’ contents came from
onboard Flash
Got ROMs from several games
working (including Pokemon
Crystal)
Success due to:
Overcame sluggish start
Used ChipScope to debug
IBM PC (5150)
The iconic personal computer
Motherboard implementation, chip by chip
Wrote a few BASIC games
Success due to:
One teammate’s unsuccessful efforts
were compartmentalized and discardable
Careful with schematics
N64
Complex console from 1996
Group thought it was possible w/o the
graphics chip
Even with some boostrapping code,
rough start: ran into bugs
Hasty version of Tron for Demo Day
Failed to launch due to:
4 person team
“eyes bigger than their stomachs”
18-545: FALL 2016
2015 Projects
Atari 7800
BattleZone
Ethernet Packet Analyzer
Centipede / Marble Madness
MorphCore
Neural Network Digit Classification
Pacman
Visual Odometry
60
18-545: FALL 2016
Ethernet Packet Analyzer
Ambitious attempt to build a packet
analyzer/filter
Got a late start on key parts of the
network stack
Learned that Ethernet on FPGAs is still
primitive and not well documented
Failed to launch due to
Team dynamics
Very poor adherence to a schedule
Overly ambitious project with too much
ambiguity
18-545: FALL 2016
Centipede (formerly Marble
Madness)Both are classic arcade cabinets built
on approximately the same hardware
Cool, yet simple input peripheral
(trackball)
Sound called for external FM
synthesis implementation
Failed to launch due to:
One team member trying to do the
whole thing alone
Poor coordination and scheduling
Surprise complexity (i.e., around
sound)
18-545: FALL 2016
Battlezone
Go play it
Met the challenge of a poorly
documented, partial schematic for the
vector graphics unit
Succeeded due to:
Tireless debugging
Team of mixed disciplines
Tireless debugging
Very complete build, w/ full arcade
cabinet
18-545: FALL 2016
MorphCore
Very cool research computer architectures
Sometimes like a superscalar OoO core,
sometimes like several, single-issue cores
Challenged by the need to match real
software interfaces (i.e., the Linux ABI)
Mostly succeeded (though not complete) due
to:
Good planning
Lots of testing (bugs in borrowed code!)
18-545: FALL 2016
Neural Network Digit
Classification
Camera collects video, frames
classified by neural net as digit,
predicted digit outputted to HDMI
Very thorough demo, very cool
system, even included training
experiments.
Success due to:
Planning and software prototyping
Appreciating the complexity and not
underestimating the time for high
complexity components
Verilator – simulate as C++
18-545: FALL 2016
Project Choice
Choose wisely
Research available assets (code, manuals, schematics, etc)
Dig through project reports from past projects
Some are well-written and will provide advice
66