FPGA Distortion Guitar Effect Pedal
A real-time FPGA guitar distortion prototype on the Altera DE2-115 that takes line-in audio, applies digital clipping, and outputs the processed signal with switchable presets.

Summary
This project is a real-time distortion effect pedal built on the Altera DE2-115 FPGA at the University of Saskatchewan. The board takes an audio input (guitar through a preamp or line-level source), streams samples through the WM8731 audio codec, applies a digital distortion effect on the FPGA, and outputs the processed audio back to line-out. I mapped SW[1:0] to four modes so you can switch between clean, light, medium, and heavy distortion while it’s running. The goal was to build a legit proof of concept and learn how real-time audio DSP works on hardware, not just in software.
Problem / Goal
I wanted a project that actually matched my interests (guitar) while also forcing me to use what I was learning in class. At the time I was deep into discrete-time signals, digital electronics, and programming, and I wanted to prove to myself I could build something real with it. The goal was to get a clean audio path working first, then add a distortion stage, then add multiple presets I could swap instantly on the board.
What Was Built
A real-time FPGA audio processing pipeline (ADC → FPGA → DAC) with a distortion module and 4 preset modes controlled by SW[1:0] (00 clean, 01 light, 10 medium, 11 heavy). I also planned an LCD readout so the board shows the current mode while testing.
Tools / Stack
Challenges
The biggest challenge was making the distortion feel right. Clipping is “simple” on paper, but getting something that sounds musical and not just harsh takes tuning. On top of that, bringing up real-time audio on an FPGA is picky, you have to get the codec configuration, clocks, and sample handling solid or everything falls apart fast.
What Was Learned
I learned how a real-time digital guitar effect actually comes together on FPGA hardware. Specifically: -How to stream audio samples through the WM8731 codec and keep timing stable -How to implement distortion using piecewise nonlinear clipping in fixed-point -How to switch between multiple modes using SW[1:0] without breaking the audio stream -How to structure a simple DSP chain that is modular and testable in simulation before hardware testing
Gallery

