< Back to Projects

FPGA LED Controller

Overview

A gamma-corrected LED controller peripheral designed for the DE10 FPGA board, built as a team project for ECE 2031 with me managing a 5-person group. The controller allows per-LED brightness control via a 16-bit register interface, with hardware gamma correction so the brightness feels visually natural rather than technically linear.

Technical Details

Hardware Design

Why Gamma Correction Human brightness perception is logarithmic, not linear. As a result, a raw linear brightness value stepping from 0 to 63 evenly looks like most of the visible change happens at the low end, with the top half barely noticeable. The LUT maps linear input values to a logarithmic curve so the perceived brightness ramps feel smooth and even across the full range.

Verification

Team Led a 5-person team: managed task delegation, set timelines, tracked progress, and coordinated integration of hardware and software components for on-time delivery.

What I Learned

Leading a team on a hardware project is a different challenge than leading one on a software project. You can’t just merge branches and run tests. Integration means actual wires and signals, and when something doesn’t work, you have to figure out if the problem is in the logic, the timing, the physical connections, or someone’s misunderstanding of the spec.

The gamma correction piece was my favorite part technically. It’s a small thing but it made me think about how much of hardware design is really about the human on the other end. A technically correct output isn’t always a good output.