ECE 332
An embedded system is a dedicated computing system that integrates processing, memory, and input/output (I/O) to perform a specific function within a larger electrical or mechanical system. Embedded systems are pervasive in modern applications ranging from consumer electronics and automation to transportation and intelligent sensing.
This course provides hands-on experience in embedded system design using the Altera DE1-SoC development board, which combines an ARM-based hard processor system (HPS) with FPGA fabric on a single System-on-Chip (SoC). Through a sequence of progressively structured laboratory exercises, students develop a practical understanding of how software and hardware interact within an SoC platform.
Students begin by learning the FPGA/SoC toolchain and system integration workflow, including building minimal systems using Qsys, configuring clocks and memory, and executing software on both soft-core (Nios II) and hard-core ARM processors. Subsequent labs focus on peripheral interfacing and real-time data processing by integrating a camera sensor, implementing image acquisition and processing pipelines in C, and working with memory-mapped I/O and interrupts.
The course then introduces machine learning in embedded systems by deploying a trained model on the ARM processor to perform handwritten digit recognition using live camera input. In the final lab, students explore FPGA-based acceleration by implementing a matrix multiplication kernel using OpenCL, highlighting hardware parallelism, heterogeneous computing, and the role of operating systems in managing accelerator workflows.
Throughout the course, students gain experience with industry-standard tools including Quartus Prime, Qsys, the Altera Monitor Program, and OpenCL, while developing system-level intuition for processor architectures, I/O subsystems, and hardware–software co-design. Students are expected to have prior exposure to basic digital design concepts and proficiency in C programming.
- To understand the principles of Embedded Systems and the tradeoffs which guide the hardware-software partitioning of any design.
- To develop embedded software and hardware, including reusing existing components.
- To prototype, debug and demonstrate embedded systems combining modules, interfaces, computation, memory.
- To evaluate and document laboratory processes and products.