dancing club penguin

felo mousa

computer engineering · simon fraser university · vancouver

fpga cool. embedded cool. making hardware do stuff? wooo

github linkedin

Projects

FPGA-Sonar

Jan to Apr 2026

Zynq-7000 SoC · ZedBoard

An instrument that maps a contour with sound. An ultrasonic sensor rotates by a stepper motor through a ±90° arc, every (angle, distance) reading gets turned into cartesian coordinates by a CORDIC core in the fabric, and then rendered as a sonar trace on a 720p VGA display with audio pings that pitch up as things get closer.

  • Wrote the stepper controller IP in VHDL as an AXI4-Lite slave, with a signed live step counter the PS can always know exactly where the sensor is pointing.
  • Built all of the application logic across both ARM cores: core 0 handles interrupts and every input driver (buttons, UART keyboard, analog joystick over an I2C ADC, rotary encoder), core 1 runs the application logic and VGA output, and the two pass inputs and hardware commands through a cache disabled shared memory region.
  • Wrote the sweep state machine that starts on a fast scan and transitions into a precise 3°/s pass the moment it gets a valid hit, and feeds those samples through a rolling median and average.
  • Preprocessed the frame buffer into a double buffer with a saved background region, so the static grid, range rings and info panel get restored instead of redrawn and the sweep stays smooth (even with 5 MB frame copies).
  • Offloaded the polar to Cartesian trig to the CORDIC core in the fabric to do instead of burning CPU on it, which kept the rendering core free.

VHDL · Embedded C/C++ · Vivado · Vitis · AXI4-Lite · AXI-Stream · CORDIC · I2C · UART · multicore

CNC Pen Plotter

Sept to Dec 2025

BeagleBone Y-AI · embedded Linux

A 2-axis plotter that parses coordinate files and traces vector drawings with two NEMA 17 steppers and a servo pen lift, driven by a multithreaded pipeline.

  • Streams coordinate commands, clamps each against axis bounds, dispatches X/Y targets to motor threads and synchronizes on completion.
  • One dedicated pthread per axis with mutex-protected queues and condition variables, stepping X and Y in parallel and cutting travel time up to 50%.
  • Benchmarked parallel against sequential runs on hardware to verify the speedup and the threading model.
CNC plotter drawing in motion
plotter tracing a vector file

C · pthreads · mutex · GPIO · SPI · I2C · PWM · Linux

Transparent Ethernet Bridge

Jan to Mar 2026

RP2350 · dual W5500

An inline two-port bridge that forwards raw L2 frames between two nodes, with the W5500 driver written from the register map up.

  • Register-level driver in C for dual W5500 controllers over a shared SPI bus, handling link bring-up and MACRAW configuration.
  • Interrupt-driven forwarding path that drains received frames and rechecks pending data before returning to the main loop.
  • Validated inline between two devices exchanging ICMP pings, with no packet loss observed.

Embedded C · SPI · W5500 MACRAW · interrupts

HUB75 LED Matrix Controller

Dec 2024

DE10-Standard FPGA

VHDL driver for a 64×32 HUB75 RGB panel, handling row addressing, pixel shifting and refresh timing straight over GPIO.

  • 4-state FSM sequencing shift, latch and output-enable to meet the panel's timing requirements.
  • 1/16 multiplexed row scanning with dual RGB channels, refreshing the full panel without visible flicker.
  • Timing and FSM behaviour verified in ModelSim testbenches covering normal operation and edge cases.
HUB75 LED matrix driven by a DE10-Standard board
dice animation on the panel driven from the DE10-Standard

VHDL · FSM · Quartus Prime · ModelSim

Parking Space Availability

Dec 2023

Raspberry Pi 4 · NoIR camera

Camera-based occupancy detector that processes a live feed to find open stalls through changing light and weather.

  • Detection pipeline using Gaussian blur and contour analysis to isolate cars from the feed.
  • Adaptive thresholding to hold sensitivity steady across lighting and weather shifts.
Parking stall detector marking open and closed stalls
open vs. closed stalls, live

Python · OpenCV · image processing

Education

BASc, Computer Engineering

expected Jan 2028

Simon Fraser University · Burnaby, BC

3.39 GPA · 4× Dean's Honour Roll: Fall 2024, Summer 2025, Fall 2025, Spring 2026

Relevant coursework

  • 351Embedded & Real-Time System Software
  • 254Introduction to Computer Organization
  • 252Fundamentals of Digital Logic & Design
  • 350Digital System Design
  • 452Advanced Digital Systems