Inspiration

We wanted to make something to take advantage of multiple features of the FPGA. As one of our team members is a guitar player interested in audio, we decided that creating an audio processor would be a really cool project, and would let us learn about both hardware and signal processing.

What it does

The FPGAudio collects user input through a microphone connected to the De1-SoC board, then outputs the same audio with an added effect to it. Several effects can be added to the audio input, including a mute, distortion, reverb, pitch shifting, and a white-noise or crackling-effect generator. The effect added to it is determined by the respective switch on the De1-SoC board: Switch 1: Distortion, Switch 2: Determine if distortion cutoff is high or low, Switch 3: Echo, Switch 4: Pitch Shift, Switch 5-7: Decides how much the pitch is shifted, Switch 8: White noise generator

How we built it

At the start of the hackathon, we did not have any experience using Verilog or FPGAs. We spent a lot of time developing a fundamental understanding of HDL, then working on implementing our design. We created the Verilog files with assistance from CogniChip and simulated them using EDA Playground, Quartus, and Quarta.

Challenges we ran into

As we are beginners, it was a bit difficult getting comfortable with Verilog. Finding a good way to simulate the project was also a little difficult, though we eventually figured that out by using tools such as Quartus. Another challenge was converting audio files into data that could be translated for the FPGA. To tackle this, a Python script was written to convert .wav files to .txt.

Accomplishments that we're proud of

We successfully implemented 4 different effects which can be combined and adjusted. We implemented a Vu meter that demonstrated how loud or quiet an input audio was using built-in LEDs on the De1-SoC board. When an audio was louder, more LEDs would turn on, indicating volume. We also created a good method for testing in simulation, and we're proud that our project worked on a real FPGA during testing!

What we learned

We learned a lot about Verilog and FPGA design in general. We also learned a little bit about digital signal processing, how audio effects work, and the advantages that FPGAs have over CPUs. We gained a stronger understanding of parallelism architecture and combinational logic.

What's next for FPGAudio

Next, we would like to add more effects, such as an equalizer and volume adjuster. Some of the effects are also a little clunky (especially the pitch shifter) depending on what the input is, so we would like to polish those up.

Built With

Share this project:

Updates