Welcome to 8-Bit Sound Stuff

A team of ambitious Student Computer Architects 

Get Started

Project Overview

This website is a description of Sabrina Pereira, Shyheim Russell, and Jonah Spicher's Computer Architecture final project.

 

An 8-Bit Audio Processor 

The goals and deliverables of our project

For our project, we dove into developing Verilog representation of a sound controller that allows us to process sounds then produce an 8-bit audio from our hardware. We desired to gain a strong grasp on the functionality and communications of the individual parts of our hardware such as the digital signal processor. For this project, we had three stages:

  • MVP: Verilog code of an 8-bit audio hardware with each member having a firm grasp of content
  • Planned: Verilog code of the hardware implemented on FPGA ZIBO 
  • Stretch:  Physical hardware implentation on FPGA plugged into a speaker

For this project, what we planned on accomplishing is developing the Verilog code then implement this code on the FPGA through an undetermined manner such that we are able to process the signal. The difference between the stretch and planned goals is that the stretch does not produce an actual sound through a speaker like in our desired stretch.

High Level Diagram

Inputs

TBD 

Channels

Our Channels are generate square, sawtooth and randomized waves based on the inputs.  Each channel is equipped with a wave generator that uses counters to scaffold the frequency and lengths of the waves.    

Adder/Bit Shifter

This component was tasked with taking the four channels as input, bit shifting them to the right by 2 arithmetically and output an 8-bit wave from the addition of the four channels using an 8-bit Adder.        

Inputs/Channels

For our inputs, we use memory to store the notes that are previously and currently being used, using the nex_note as a clock, to then go into memory and output a 18-bit result where the first 8-bit control frequency, the next 8 controls the length of each note, and the final 2 bits control the channel to show which channel is on for this cycle.   

From there, the different sections of the output is used in for the four channels through D-Flip-Flops that would AND the channel and frequency where if frequency is low (0), then the channel is also 0, but if frequency is high (1), then the channel would then pass through and allow length to pass through the D-Flip-Flop as well, resulting in the length of time in which each wave generator would be on for.                 

Adder/Bit Shifter

The Adder takes in uses the four channels as inputs where we take signed 8-bit values from each wave.      

The frequency of each channel would control which values are taken into the adder as a channel that is not on would be set to 0 automatically since the frequency will be 0.     

Finally, each channel is normalized then bit shifted by 2 arithmetically, to preserve the sign, then all four values are added to produce an 8-bit sound_ out.

Final Results

The final product and what it does? 

For our project, we developed a Verilog representation of the 8-bit hardware that is able to generate 8-bit music using square, sawtooth, and noise channels for different aspects of the song.      

Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Reflection

Below is the reflection of all three members and their views on the teaming and project overall: 

  • Sabrina:

    Sjhidenfmekececeocme

  • Shy:

    dihcnciocencdocdcdc

  • Jonah:

    icvodnvionrvovi

  • How to Run  

    Visit our Github Repo here. Follow the instructions on our Readme for downloading and running our simulation.

    Sound Files 

    Here are some of the sound files we were able to develop:

    References 

    Here is a list of references and resources we used for inspiration:

    Our Team

    The team of students who worked on this project.

    Jonah Spicher

    Junior, ECE

    Sabrina Pereira

    Junior, ECE

    Shyheim Russell

    Junio, ECE