13 Projects

Project Portfolio

A selection of my hardware and software projects. Each one links to its repository or design report.

Filter 13 Projects
Cadence schematic of the low-power 1Mb SRAM design
Hardware

Low-Power 1Mb SRAM Design – Cadence

Designed and verified a 1 Mb low-power SRAM in FreePDK 45nm technology using a hierarchical 16-bank architecture with 6T bitcells, row/column decoding, sense amplifiers, write drivers, pass-gate output multiplexing, and an output latch. Implemented selective enabling to reduce unnecessary switching activity and added MTCMOS leakage reduction for inactive decoder logic. Verified read/write functionality through transistor-level simulations, RC-pi simulation models, and PVT corner testing.

View Report
Block diagram of the pipelined RISC-V CPU
Hardware

Pipelined RISC-V CPU – Verilog / Quartus

Designed and verified a RISC-V 32I CPU in Verilog, progressing from core datapath and control logic to a five-stage pipelined implementation. Implemented pipeline registers across the Fetch, Decode, Execute, Memory, and Writeback stages, along with hazard handling for register forwarding, load-use stalls, and branch flushes. Verified full CPU functionality in ModelSim using custom RISC-V assembly tests for arithmetic, logic, shifting, comparisons, load/store operations, jumps, and branches.

View Repository
Assembled audio synthesizer PCB
Hardware

Audio Synthesizer PCB – KiCad / Multisim

Designed and built an audio synthesizer using a fully discrete BJT-based operational amplifier with a PNP differential input stage, active-load voltage gain stage with Miller compensation, and complementary class-AB output buffers. Configured the amplifier as a relaxation oscillator using combined positive and negative feedback to generate ~260 Hz–1 kHz tones with potentiometer-controlled frequency and volume, directly driving an 8 Ω speaker.

View Report
TI MSPM0 LaunchPad running the embedded music player
Hardware

Embedded Music Player – C / MSPM0

Developed an embedded music player on the TI MSPM0G3507 LaunchPad with the BOOSTXL-EDUMKII BoosterPack using C and bare-metal programming. Implemented PWM-based audio generation using hardware timers and prescalers to play a predefined song on the buzzer, and designed a finite state machine (FSM) to handle play/pause control via push buttons while displaying real-time note information on the LCD. Configured peripherals by referencing microcontroller and peripheral datasheets, integrating timers, GPIO, PWM, and LCD interfaces to demonstrate low-level firmware development and real-time embedded system design.

View Repository
Screenshot of the course review desktop application
Software

Course Review App – Java / SQLite

JavaFX desktop CRUD application built using an MVC architecture with JDBC-based SQLite persistence. Supports user authentication, course creation, flexible course search, and anonymous course reviews with aggregated ratings and timestamped updates. I implemented the course reviews scene, handled review create/edit/delete logic, enforced single-review constraints per user, and contributed to debugging and validation.

View Repository
Audio analyzer PCB with LEDs responding to audio input
Hardware

Audio Analyzer PCB – KiCad / Multisim

This project involved designing and building an audio analyzer PCB that lights up LEDs in real time based on audio input. By combining a summing amplifier, high-pass and low-pass filters, peak detectors, and two types of LED drivers (analog and PWM), the system separates audio into treble and bass frequencies. The circuit lights up green LEDs for high-pitched sounds (e.g., snares, guitar solos) and red LEDs for bass (e.g., kicks), providing a real-time visual representation of music. I tested the system with “Seven Nation Army” and verified the response using simulations and physical measurements.

View Report
Waveform plots from the vocal isolation project
Software

Vocal Isolation App – Python

This project applies signal processing techniques to isolate vocals from a mixed audio track using spectral gating and harmonic/percussive source separation (HPSS). The method leverages time-frequency analysis to suppress background instrumentation while enhancing vocal content. Spectral gating is used to attenuate non-vocal frequency bins, while HPSS cleanly separates harmonic (e.g., vocals, synths) and percussive (e.g., drums) components.

View Repository
Cluster visualisation from the FIFA scouting recommender
Software

FIFA Scouting Recommender – Python

This project is a machine learning tool that helps soccer managers find affordable players with similar attributes to elite stars using the FIFA 2024 dataset. It combines K-Nearest Neighbors with clustering algorithms (K-Means and HDBSCAN) to group players by playstyle and recommend hidden talent. PCA visualizations and silhouette scores assess cluster quality. This project highlights my skills in data preprocessing, clustering, and visual analytics with scikit-learn and matplotlib.

View Repository
Boost converter printed circuit board
Hardware

Boost Converter Circuit – KiCad / Multisim

As part of my applied circuits coursework, I designed, simulated, and constructed a boost converter circuit to step up a 5V supply voltage to a stable 14.11V output. I completed the full design cycle, including schematic creation and PCB layout in KiCad, ordering the PCB, soldering components, and implementing the circuit. A 555 timer generated a PWM signal with a 78% duty cycle at 1 kHz to drive the MOSFET, enabling efficient energy storage and voltage regulation.

View Report
Schematic of the 8-bit CPU designed in VHDL
Hardware

8-bit CPU – VHDL / Quartus

The CPU features a 5-bit address bus with access to 32 memory locations and supports operations such as load, store, addition, subtraction, and branching. The simple_cpu module integrates an opcode decoder, instruction sequencer, control signals logic, and a datapath. The datapath includes an ALU (with an adder-subtractor and full-adder), a parser, tri-state buffers, and a zero flag. Custom assembly code was programmed and tested using Quartus’ simulation tools and a hierarchical testbench to ensure functionality.

View Repository
Output of the EPL match predictor
Software

EPL Match Predictor – Python

This project is an advanced machine learning project designed to predict the outcomes of English Premier League matches. The project encompasses a comprehensive web scraper that collects historical and future match data from the web, ensuring the model is trained on the most up-to-date information. Utilizing this data, this project leverages a Random Forest Classifier to determine whether a team will win, draw, or lose based on various match features. The model has been fine-tuned through hyperparameter optimization and addresses class imbalance through oversampling techniques.

View Repository
Terminal output of the Wordle solver
Software

Wordle Solver – Python

This project is a Python-based Wordle solver that uses information theory concepts such as entropy and probability to recommend the best possible guesses. This solver aims to efficiently solve Wordle puzzles by calculating the information gain of each guess and selecting the optimal word based on combined entropy and probability scores. The program performed an average of 3.6 guesses per word in a simulation of 1000 trials.

View Repository
Screenshot of this portfolio website
Software

Personal Portfolio Website – HTML / CSS / JS

This project is my personal, professional portfolio website, which is the very website you are currently on. This website was created using HTML, CSS, and JavaScript. The server is hosted through GitHub, and the domain is registered and bought through Namecheap.

View Repository