Implemented an FSM based audio player that reads audio samples stored in Flash memory and streams them to the onboard DAC at a 22kHz rate. Designed a secondary FSM for address generation and playback control (pause, direction, and speed) based on keyboard inputs. Communicated between the two FSMs using the start-finish protocol. Integrated a PicoBlaze soft processor to compute real-time audio strength via averaging the absolute value of 256 audio samples. Wrote the signal processing logic in PicoBlaze assembly to maintain precise timing and close hardware interaction.