EECS 373: Embedded Systems Design & Implementation

(a.k.a. "Design of Microprocessor-Based Systems")



  • 04/24/2015: Supplemental practice problems for the exam posted.
  • 03/15/2015: Special Topics assignments have been made. See Piazza for the URL.
  • 03/10/2015: Special Topics Presentation assignment posted. See Piazza for sign-up sheet URL.
  • 02/20/2015: Research project ideas posted.
  • 02/19/2015: HW #3 solutions now posted.
  • 02/17/2015: Practice midterm and solutions from Fall 2014 are also available.
  • 02/12/2015: HW #3 posted, due on 02/19/15. Solutions will be posted on 02/19/2015.
  • 02/10/2015: Solutions to HW #1 (1a) and HW #2 (1b) posted.
  • 01/14/2015: Links to: (i) labs added to Syllabus; (ii) ARM/GNU references added to Resources.
  • 01/13/2015: HW #2 posted, due on 01/20/15.
  • 01/08/2015: Welcome to EECS 373! HW # 1 posted, due on 01/13/15.

Course Administrivia

  EECS 373, Winter 2015, 4 Units, CN: 10698
Instructional Staff:
  Prabal Dutta (Instructor) → OH: Thu, 3-4pm, 4773 BBB (on days I teach)
  Matt Smith (Lab Instructor)
  Pat Pannuto (GSI) → OH: Mon/Wed, 10-11am, EECS Learning Center (1637 BBB)
  John Connolly (IA)
  Chris Fulara (IA)
  Andrew Huh (IA)
  Alex Laberge (IA)
  Ryan Wooster (IA)
  Timothy Kenny (Grader)
  Hongji Wang (Grader)
  1311 EECS
  Tue/Thu: 1:30 PM - 3:00 PM
  2334 EECS
  Mon: 3:00 PM - 6:00 PM (CN: 10699)
  Tue: 3:00 PM - 6:00 PM (CN: 10700)
  Wed: 3:00 PM - 6:00 PM (CN: 10702)
  Wed: 6:00 PM - 9:00 PM (CN: 10701)
  Thu: 6:00 PM - 9:00 PM (CN: 10703)

Course Description

This class is focused on the principles and practices of modern embedded systems design. In class, we will focus on computer architecture beyond the CPU, fundamentals of the hardware/software interface, techniques for sensing and controlling the physical world, and a few other topics. In lab, we will focus on the ARM Cortex-M3, Actel FPGAs, and other supporting hardware, to learn how to design, build, and program embedded systems. Labs during the first half of the course will focus on essential topics. The second half of the course will focus on the design and implementation of a non-trivial, open-ended project involving both hardware and software. The labs and project will require a substantial amount of time -- this is a lab-intensive class with a heavy workload.

Syllabus (Tentative)

Week Date Topic Lead(s) Labs/Homeworks
1 Jan 8 Introduction (PPT | PDF | 6up) Dutta HW # 1 : Comb & Seq Logic Design
ARM System Architecture
2 Jan 13 Architecture, Assembly, ABI (PPT | PDF | 6up) Dutta Lab # 1 : Hardware Tools
HW # 2 : ARM Assembly
Jan 15 Assembly, ABI, Toolchains (PPT | PDF | 6up) Dutta
3 Jan 20 MMIO and APB (PPT | PDF | 6up) Dutta Lab # 2 : Software Tools
Jan 22 Memory/Peripheral Bus: AMBA (PPT | PDF | 6up) Ghena
4 Jan 27 Interrupts (PPT | PDF | 6up) Dutta Lab # 3 : Memory-Mapped I/O
Jan 29 Interrupts, ARM NVIC (PPT | PDF | 6up) Dutta
5 Feb 3 Timers (PPT | PDF | 6up) Dutta Lab # 4 : Interrupts
Feb 5 Timers (cont) and Digital I/O (PPT | PDF | 6up) Dutta
Peripheral Interfacing
6 Feb 10 Serial buses: UART, SPI, I2C (PPT | PDF | 6up) Dutta Lab # 5 : Clocks, Counters, and Timers
HW # 3 : ARM, Assy, MMIO, Interrupts
Feb 12 Project Overview (PPT | PDF | 6up) Pannuto
7 Feb 17 ADCs/DACs (PPT | PDF | 6up) Dutta Lab # 6 : Serial Bus Interfacing
Practice midterm and solutions
Feb 19 Catch up and Review Dutta
8 Feb 24 Midterm: DOW 1017 (A-M), EECS 1311 (N-Z)   Lab # 6 : Serial Bus Interfacing
Feb 26 Projects, Midterms (PPT | PDF | 6up) Dutta
* * * Winter Break - No Class - Week of Mar 2-6, 2015 * * *
9 Mar 10 PCB Design (ref: PDF, MESH slides) DeBruin Lab # 7 : ADC/DAC Data Converters
HW # 4 : Special Topics Groups
Mar 12 Special Topics Group Meetings (in class) Dutta
10 Mar 17 Real-Time OS (PPT | PDF | 6up) Dutta Projects
Mar 19 NO LECTURE: Work on Presentations/Projects Students
11 Mar 24 Special Topics: Sensing Students Projects
Mar 26 Special Topics: Computing and Storage Students
12 Mar 31 Special Topics: Radio Communications Students Projects
Apr 2 Special Topics: Power Students
13 Apr 7 Special Topics: Software & Misc. Topics Students Projects
Apr 9 NO LECTURE: Work on Projects Students
14 Apr 14 NO LECTURE: Work on Projects   Projects
Apr 16
15 Apr 21 Demo & Poster Session
Time: 1:30-3:30 PM
Room: EECS Atrium
Students Projects / Teardown / Parts Return
16 Apr 28 Final Exam
When: 4:00-6:00 PM
Where: Go to
  EECS 1303 if lastname starts with A-M
  EECS 1311 if lastname starts with N-Z


The curricular prequisites for this class include EECS 270 (Introduction to Logic Design), EECS 280 (Programming and Introductory Data Structures), and EECS 370 (Introduction to Computer Organization). The course bulletin outlines the contents of these courses. In general, students are expected to have a firm grasp on combinational and sequential logic design, be familiar with assembly language programming (for some architecture), be proficient in C programming, and know their way around the elements of a computer. In addition, success in this course will require substantial reading and hacking, and students will need a high degree of patience and determination.


Honor Code. The Engineering Honor Code applies to all assignments and exams.

Learn Concepts Together through Discussion. Verbal collaboration between members of different groups is permitted for the purpose of helping classmates to understand concepts essential to the labs or providing one another with insights into the best way to approach the in-lab assignments.

Do Your Own Work. Individual assignments (e.g., prelabs, homeworks, and exams) are to be performed on your own. Group assignments (e.g., labs, lab reports, and postlabs) are to be performed only by members of the group. Non-verbal collaboration (e.g. drawing sample schematics on paper or the whiteboard, sharing schematics or code) is not allowed. You may not help debug another group's hardware or software without consent from the lab or course instructor. You are also not allowed to possess, look at, use, or in any way derive advantage from the existence of code, lab reports, or other material prepared in prior years.

Attend Your Registered Lab. You are expected to attend the lab section for which you are registered. If you would like to switch lab sections, but the section you want is full, you must find someone in that lab section to swap positions with you. Once you have agreed on a swap, send email to Matt Smith. All section swaps must be completed before the second week of lab.

Prelabs. Prelabs are due in lab during the week the lab is to start. All prelabs must be turned in within the 20 minutes after the offical start of lab (on the half hour) (to allow for tardiness, printing problems, etc.) or you will only get 50% of the credit otherwise earned. Prelabs more than one week late will earn no credit. For any labs which span multiple weeks, the prelab is due during the first week of that lab. Prelabs are to be done individually unless otherwise specified in the lab itself.

Postlabs. Postlabs are due in lab the week after the last week of that lab. They are due 20 minutes after the start of that lab period. Just like prelabs, late labs earn only 50% of the credit otherwise earned and postlabs which are more than one week late get no credit. Postlabs are to be done by the group unless otherwise specified in the lab itself.

In-Labs. In-labs are due by Friday of the last week of the lab in open lab hours (you are welcome to turn it in before this and most students do). One of the lab instructors must sign your in-lab form by that time for the in-lab to be on time. You should hand in the signed (and dated) in-lab form with your postlab. Late in-labs lose 10% of their value per business day (Monday though Friday not including holidays) they are late. You may only work with your lab group (generally one other person) on your in-lab.


Item Weight Description
Labs 25% Seven labs.
Project 25% Group project demonstrating understanding of major topics.
Exams 35% Two exams: Midterm (15%); Final (20%).
Homework 10% Four or five homework assignments weighted roughly equally.
Presentation 4% Group presentation to class.
Feedback 1% Complete course evaluation and forward acknowledgement to:


  1. Combinational Logic Tutorial
  2. Sequential Logic Tutorial

  3. ARMv7 Architecture Reference Manual (a.k.a. "the ARM ARM")
  4. ARM Cortex-M3 Technical Reference Manual v2.1
  5. ARM and Thumb-2 Instruction Set Quick Reference Card
  6. ARM Architecture Procedure Call Standard (EABI)
  7. ARM Cortex-M3 Embedded Software Development (AN-179)

  8. Actel SmartFusion MSS User Guide
  9. Actel SmartFusion Analog User Guide
  10. Actel A2F Eval Kit User Guide

  11. CodeSourcery Getting Started
  12. GNU Assembler
  13. GNU Compiler
  14. GNU Linker
  15. Linkers and Loaders
  16. GNU Debugger
  17. GNU Binary Utilities

  18. Why take an embedded systems course?
  19. Related Courses: UCSC, UCB: EECS 149, UCB: CS194-5, UNL: CSCE 236, UCSD: CSE 237d, Utah: CS 5785, Stanford: CS240E, Stanford: EE 281, Columbia: CSEE 4840, UW: EE 472, CU: ECEN 5613, Lund: EDA 385, Cornell: ECE 3140, Cornell: ECE 4760


This material is based upon work supported by the National Science Foundation under grant #0964120. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.
This course and lab use hardware and software provided by Microsemi Corporation, including the SmartFusion MCU+FPGA development boards and the Libero Gold and Platinum software development tools.