Skip to the content of the web site.

ECE423: Embedded Computer Systems

General Information

Course Name: Embedded Computer Systems
Hours per Week: Lecture = 3, Tutorial = 1, Lab = 1.5

Calendar Description

Specification and design of embedded systems, specification languages, hardware/software co-design, performance estimation, co-simulation, verification, validation, embedded architectures, processor architectures and software synthesis, system-on-a-chip paradigm, retargetable code generation and optimization, verification and validation, environmental issues and considerations.

Why should you take this course?

The embedded system industry is arguably the dominant force in the development and commercialization of digital systems. Over 99% of all processors produced nowadays are shipped as part of embedded systems. Many embedded markets are among the most competitive in the whole industry (ex: smartphones). Being able to co-optimize both the hardware and software platform is paramount to gain a competitive advantage.

  • Learn key skills required by the industry: companies actively seek engineers with key skills imparted by this course: 1) reason about complex trade-offs in terms of cost, performance, power consumption, etc.; 2) understand the relation between hardware architectural choices and software components; 3) maintain a holistic view of system design.
  • Strengthen your understanding of computer architecture: for students interested in computer architecture, ECE 423 provides a natural continuation of the topics covered in ECE 320. In particular, it covers topics in embedded processor architecture (general purpose vs application-specific instruction processor vs gpgpu vs coprocessor vs reconfigurable logic), interconnections and system-on-chip design.
  • Become an embedded systems specialist: for students directly interested in the area of embedded systems, ECE 423 provides a companion course to ECE 455. ECE 455 introduces software technologies, models, languages and analysis methods for embedded systems. ECE 423 extends these concepts to the combined design of hardware/software systems.

Course Description

Embedded systems are omnipresent; they range from consumer products such as cell-phones to safety-critical systems such as cars and airplanes. An embedded system is designed to support a specific set of functionalities and must typically satifisy stringent requirements in terms of cost, performance, power consumption, timing, etc. To meet such requirements, the System-on-Chip (SoC) paradigm is becoming increasingly popular, where all components of the electronic system are integrated on a single chip.

The goal of ECE 423 is to provide students with the knowledge and skills to design modern embedded systems. The course takes a requirement-driven design approach, where a functional specification is derived from a set of system requirements and then mapped into hardware and software components. A significant portion of the course is devoted to performance estimation of hardware-software systems, co-design and design space exploration. The key problem we try to solve is the follow: given a functional specification of the desired system, how do we decide which functionalities should be implemented in hardware rather than software? How do we validate that the designed hardware/software system will meet requirements?

To address such questions, the course also introduces students to existing alternatives in embedded processor and interconnection architecture, as well as general SoC design methodologies. The course project provides further on-hand experience on major phases in the development lifecycle of a SoC-based embedded system.

List of Topics

  • Embedded Systems and SoC Design
  • Embedded Architectures: Processing Elements
  • Embedded Architectures: On-Chip Interconnects and Memory Systems
  • Models of Computation and Scheduling
  • Performance Estimation
  • System Software For Embedded Multicores
  • HW/SW Codesign and Design Space Exploration

Lab Description

The lab component of the course consists of a system design project used to expose the students to major aspects of the embedded systems development cycle, including: system-level co-design, design space exploration and optimization, integration and validation. Students work in groups to design, implement, integrate and test a video decoder application. The project represents a natural evolution of the techniques learned in the ECE 224 project, employing a more complex platform: a heterogenous multicore platform on FPGA. Hardware development employs High-Level Synthesis (HLS) tools and thus does not require detailed register-transfer level knowledge (as imparted in ECE 327).

New in 2023: we are back in the lab post-covid and we streamlined the lab to employ the more powerful Xilinx FPGAs used in 320/327.

Prerequisites

New prerequisites for Winter 2024 - for Winter 2023, your undergraduate advisor can directly enroll you if you meet the new prereqs

ECE 224 / MTE 325: the course assumes basic understanding of microprocessor architecture, interfacing, synchronization and bus structures.

ECE 252 / CS 350 / MTE 241 / SE 350: some understanding of systems programming and process synchronization is required. Students who are interested in the course but did not take any course in systems programming / OS are invitate to contact the instructor.

Course Materials

All course materials are made available through Learn, including course slides, lab manual and assignments.

Evaluation

The course grade is based on a midterm examination, final examination and lab project.