Lab 6: Choose Your Own Project!

Assigned
Tuesday, May 14, 2024
Proposal
Wednesday, May 22, 2024 at 11:59 pm
Due Date
Monday, June 3, 2024 at 11:59 pm

Overview

Take what you've learned in this class and design and implement a fun/cool project that utilizes the DE1-SoC board and peripherals!

Code for this lab

Feel free to copy any needed files from previous labs or from lecture as a starting point. The following are drivers and other helper files for different peripherals that you can use with the DE1-SoC on Labsland:

Audio

Image Converter

Joystick

N8 Controller

SDRAM

New VGA Driver

Project Specifications

Be creative! You are required to use:

  1. A VGA display (building off of Lab 5).
  2. Some form of significant memory storage (e.g., pixel data, audio clip, other game data). You can refer to Labs 2–4 for a refresher on initializing and using memory.
  3. Some form of user input, which could be the switches and push buttons or some of the peripherals listed below.

You can, and are encouraged to, use additional peripherals. All drivers you will need for this lab can be found in the files section of this spec. Unfortunately, we are limited to the currently available interfaces on LabsLand, but these include:

  • Sound output from a speaker (building off of Lab 3).
  • A virtual 360-degree joystick.
  • An "N8" controller, shown in the form of an old controller from the Nintendo Entertainment System (4 directional pad, Select, Start, A, B).

Project Ideas


Category 1: Games

  • Side-scrolling: The player(s) move through a level, avoiding or destroying obstacles or enemies.
  • Combat: Two or more players compete to collect points and/or defeat the others, maybe with projectiles or by growing their own body as an obstacle.
  • Tile-matching: Tetris, Bust-a-Move, Candy Crush, or something of similar complexity.
  • Card: Blackjack, Solitaire, Set, or something of similar complexity.

Category 2: Audiovisual

  • Paint: Allow the user to draw on the VGA or otherwise change an image output.
  • Audio Visualization: Use an audio input file to display some sort of reactive visualization.
  • Music Generation: Take in user input to generate sound, e.g., music notation/composition.

Category 3: Create Your Own

Come up with your own idea that satisfies the list of requirements above and submit a proposal to the course staff! You can find some other examples in this .

Project Proposal

Proposal Requirements

There is an intermediate deadline where you are required to submit a PDF document to Gradescope (a separate proposal assignment, not the Lab 6 Report one) detailing your proposed project, even if it is from the list of suggestions. This document should be only a few paragraphs long and will give us a chance to verify that you've put some thought into your project and that your project (especially if not from the list of suggestions) is of an appropriate difficulty level, i.e., it is not too simple nor too difficult.

In your proposal:

  • Describe your major project behavior, features, components/modules, and user interaction.
  • Include at least a top-level block diagram (other diagrams welcome). Don't worry if the final design differs from your proposal. Reminder of block diagram guidelines:
    • The diagram itself is a module, so top-level inputs and outputs need to be shown on the edges and connected.
    • Blocks represent major components, whose internals are later implemented in modules.
    • All ports for each block should be shown and labeled and connected to the appropriate part(s) of the rest of the system.
    • Additional wires and gates can be added/shown as needed.
  • Include at least one sketch/image of what you envision the VGA display looking like for your project. If there are multiple "phases" of your project, please include one sketch/image per phase. This will help us visualize what you are also describing in words.

Proposal Grading

The proposal will be graded separately from the rest of the project and we will try to get the feedback to you quickly so you can incorporate it as you work on Lab 6.

The rubric for the proposal can be found below.

Project Explanation Video

Video Requirements

You are required to create a video documenting your project that satisfies the following basic requirements. We will primarily grade the video on content/substance so you don't need to spend tons of time creating it if you don't want to, though some bonus points are available if have the time to get creative and do fancier editing, narration, effects, etc.

  • We are expecting a length of roughly 3-5 minutes, but this is not a strict requirement.
  • You should go over all the main components of your project at a high level: how they were used, what they do, and how they fit together.
  • Demo the project while talking the viewer through what's happening.
  • If you have a significant visual component, make sure it can be clearly seen.
  • If you have a significant audio component, make sure it can be clearly heard.
  • Please don't do vertical video:

Video Examples

Here are some links (UW login required) to past project videos that earned full scores on the video (i.e., not necessarily on the project itself):


Video Submission

The video is part of the final lab submission, alongside the report and code.

To submit, you should upload your videos to your UW or CSE Google Drive (not YouTube). Right-click your video file and select "Get shareable link." Then turn link sharing on and copy the URL. Create a short text document (e.g., lab6_video_<netid>.txt) that contains the Google Drive URL.

Project Requirements

Project Proposal

Due before the stated PROPOSAL deadline (5/22), submitted as a PDF on . You may submit up to one day late for no penalty but we strongly urge you to submit on time so that we can get feedback to you sooner.

See the project proposal section for details (descriptions, block diagram, sketches/images).


Project Report

Due before the stated DUE DATE deadline (6/3), submitted as a PDF on .

  • Include the required Design Procedure, Results, and Experience Report sections along with the other requirements listed in the .
    • If you worked with a partner, include a partner work summary in your Experience Report, briefly describing the distribution of responsibilities and any notable successes or challenges of working together.
  • As separate files, upload your commented code files (.sv), including test benches.

Project Video

Due before the stated DUE DATE deadline (6/3), submitted as a Google Drive URL in a text file to alongside your report and code.

See the project video section for details (high-level overview of project, project demo).


Project Demo

Due by the end of the day on Thursday of Finals Week (6/6). Demos during Finals Week must be scheduled separately with the TAs (i.e., make a private post on Ed with times that you are available and the TAs will respond to schedule).

  • Demonstrate your completed project working on LabsLand.
  • Be prepared to answer questions on both the theoretical and practical parts of the lab.

Grading Rubrics

Proposal Rubric

Grading Criteria
Points
Project description
6 pts
System block diagram, with labels
6 pts
Image(s) of envisioned VGA display
3 pts
 
15 pts

Project Rubric

Grading Criteria
Points
Name, student ID, lab number
2 pts
Design Procedure
  • Please explain your overall design and include any appropriate diagrams (must have a top-level block diagram).
20 pts
Results
  • Because you designed your project, your overview of the final project can instead discuss differences from your original proposal.
14 pts
Experience Report
  • Since this is the most open-ended part of this class, we encourage you to reflect deeply on your implementation experience and how you overcame the issues that you encountered.
14 pts
SystemVerilog code uploaded
5 pts
Code style
5 pts
PROJECT DEMO
  • Bonus points available for particularly impressive projects (from the implementation perspective).
70 pts
(10 pts)
PROJECT VIDEO
  • Bonus points available for particularly impressive videos (from the presentation perspective).
10 pts
(5 pts)
 
140 pts