This week I gave the final design presentation for my team, continued debugging efforts for the filter before pivoting to a new approach, integrated the LCD display into our system, and continued testing.
The start of my week was spent preparing the slides for the final presentation, and then I spent substantial effort Sunday, Monday, and Tuesday practicing it.
I spent more time trying to debug the filters in parallel to this but was unable to find the underlying bug. I’ve decided I’ll have another teammate look at the issue, but instead of allowing this to block progress, I decided to work around the problem and implement a “pseudo-filter”. The module looks at the primary frequency being played and uses that to attenuate the inbound data, and takes in cutoff frequencies and gradients as inputs. I’ve designed it so that it can operate as a low, high, or bandpass filter depending on user inputs, with independent cutoffs and gradients on each end. Users will be able to program the filter type via the UI.
With the workaround implemented, I wanted to focus on system integration. I selected a LCD display to be added to the system and programmed it. This was slightly difficult since the graphics system was different from what I was used to (X and Y coordinates were flipped and pixel coordinates did not start in the top-left corner as is standard). I managed to implement functions that allow me to display arbitrary strings on the display, and added code to our Arduino to initialize and display messages on the LCD code as well as interface between the MIDI and FPGA. After adding debouncing logic to avoid rewriting values every single time a knob was turned (instead, only after a set amount of time had passed), I had the LCD display input parameters. As of now, this is ADSR inputs. Once the system is fully integrated, I will have it display the different values for whatever the filter selection input is currently on. We’ll still have the VGA output provide visual cues for what certain effects are doing, while the LCD display is designed to give numerical data.
Finally, I spent some time testing, specifically working on testing setup times, something that is still possible despite the UI not being fully integrated. I’m also preparing for another round of SQNR tests to ensure that the sawtooth and square waves are now at acceptable values.
Next week, I will finish integrating the system, perform more tests as necessary, make one last pass at the original filter implementation, and give our design expo as well as write the final design report.



