18-545: ADVANCED DIGITAL DESIGN PROJECT FALL 2016 BRANDON LUCIA
L1: PAST PROJECTS 18-545: ADVANCED DIGITAL DESIGN PROJECT FALL 2016 - - PowerPoint PPT Presentation
L1: PAST PROJECTS 18-545: ADVANCED DIGITAL DESIGN PROJECT FALL 2016 - - PowerPoint PPT Presentation
L1: PAST PROJECTS 18-545: ADVANCED DIGITAL DESIGN PROJECT FALL 2016 BRANDON LUCIA Administrative Stuff Teams are / should be formed Project Ideas due Wednesday, September 7 Lab1 due Wednesday, September 14 Getting started Project Proposal
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 BRAM Fetch 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
- n 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
- nboard 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
- n 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