E155 – Microcontrollers & FPGA Design

E155 teaches students how to practically realize complicated digital electronic systems, including FPGAs, microcontrollers, and custom chips. The course covers everything from reading technical documentation and writing clean RTL to programming microcontrollers with modern techniques, selecting parts for large digital systems, and implementing complete embedded projects. It culminates with a capstone project where students decide what they want to build.

Labs completed using Nucleo & STM32 and UPduino v3.1 & iCE40 UP5K hardware.

Lab 1 – Microcontroller Basics

Exploring GPIO, timers, and low‑level register manipulation to build a foundation for real‑time embedded systems.

Lab 2 – Interrupts & State Machines

Implementing interrupt‑driven firmware and clean finite‑state‑machine architectures for robust hardware control.

Lab 3 – FPGA Digital Design

Building synchronous digital circuits on FPGA hardware and validating behavior with simulation and on‑board testing.

Lab 4 – Hardware/Software Co‑Design

Partitioning functionality between firmware and hardware accelerators to hit performance and power targets.

Lab 5 – Capstone Embedded System

Integrating sensors, communication, and control logic into a complete embedded system, from requirements to demo.

Lab 6 – Internet of Things & SPI

Building an internet-accessible IoT device with ESP8266 WiFi module and SPI temperature sensor, implementing CMSIS-based SPI drivers and a web interface for remote control and monitoring.

Resources