Electrical Engineering and Computer Science

EECS 3100 - Embedded Systems Course Syllabus

Credits/Contact Hours
4 Credit Hours. 3 classroom contact hrs. and 2.5 lab contact hours per week
Textbook
Embedded Systems: Introduction to ARM Cortex-M Microcontrollers by Jonathan W. Valvano; Edition: 5th, Publisher: CreateSpace, ISBN: 9781477508992
Course Information
Microcontroller interfacing, assembly and C language programming for embedded systems, input/output synchronization; analog to digital conversion, digital to analog conversion, timers, interrupts and embedded system debugging techniques.
Prerequisites:

EECS 2110 - Computer Architecture and Organization, 

EECS 3210 - Signals and Systems

EECS 3400 - Electronics 1

Required course


Specific Goals - Student Learning Objectives (SLOs)

Upon completion of the course, the student will be able to 

  1. Evaluate and rank tradeoffs such as cost, power, and performance for different embedded systems applications; and describe architectural features of the target embedded system(s) (register structure, memory architecture, CPU features, and peripheral subsystems). 
  2. Use an integrated development environment (IDE) to write, compile and/or assemble, execute, and debug a program (high-level or assembly language) for a target embedded system; describe the actions of compilation, assembly, linking in the program translation process; describe actions taken by compiler-generated code after system reset but before user application execution; and describe memory assignments made by a compiler for global variables, local variables, subroutine parameters and dynamically allocated storage. 
  3. Explain the basic loop-forever structure of an embedded program; design simple programs for embedded system applications including some that include modular/hierarchical programming techniques such as subroutines and functions; describe the need for structured approaches in writing complex embedded applications; and demonstrate debugging techniques for simple embedded application programs. 
  4. Create programs that perform a set of input/output operations on one more GPIOs using a polled approach; describe how interrupts are supported on the target embedded system(s); and create programs that perform a sequence of input/output operations on one or more GPIOs using an interrupt-driven approach. 
  5. Discuss the concepts of full-duplex and half-duplex communication; contrast parallel I/O versus serial I/O tradeoffs in terms of throughput, wiring cost, and application; describe the data formatting, timing diagrams, and signaling levels used in an asynchronous or synchronous serial interface; and create programs that perform I/O to an external device or system that uses an asynchronous or synchronous serial interface such as SPI or I2C. 
  6. Describe the basic features and operation of typical hardware timers used in embedded systems; create programs that perform periodic I/O triggered by hardware timer-generated interrupts; and create programs that measure waveform characteristics such as pulse width and frequency using hardware timers 
  7. Describe terms and properties relating to Analog-to-Digital Conversion (ADC) and Digital-to-Analog Conversion (DAC) such as sampling rate, reference voltage, conversion time, precision, range, and encoding method; implement voltage to binary and binary to voltage numerical conversions given range, encoding method, and reference voltage parameters; and use DAC and ADC architectural approaches such as resistor ladder, successive approximation, flash, and delta-sigma, and give tradeoffs such as conversion time and circuit complexity. 
  8. Demonstrate and implement in hardware numerical conversion from a physical quantity such as pressure, temperature, and acceleration to voltage or current given an example sensor and its characteristic equation or graph; and from voltage or current to a physical quantity such as linear/angular movement, sound, and light given an example actuator and its characteristic equation or lookup-up table. 
  9. Create programs that use one or more output devices for effecting physical control by an embedded system. 
  10. Design and prototype circuitry that transforms voltage level/current drive from/to external sensors/actuators to that required/provided by a target CPU; and employ instrumentation choices for diagnosing/understanding hardware aspects of embedded systems behavior. 
  11. Function effectively on a multidisciplinary team (as potentially composed of EE and CSE majors), with effectiveness being determined by instructor observation, peer ratings, and self-assessment 

Topics
1. Introduction to Embedded Systems
2. Intel ×86 Architecture: Microprocessor internal architecture, and segmented memory organization
3. Intel ×86 Hardware Specifications: Pins and signal descriptions and timing, bus buffering and latching, read & write timing, and minimum/maximum mode operation
4. Intel ×86 Memory Interface: Memory devices, ROM/SRAM/DRAM device, address decoding, ROM/RAM decoding subsystem design, and odd/even memory banks
5. Intel ×86 Assembly Language Programming: addressing modes, decision making, looping and control structures, procedures and parameter passing, and stack operation
6. Intel ×86 Input/Output (I/O) Interface: Assembly I/O instructions, isolated I/O, memory-mapped I/O, I/O port address decoding, data transfer between ×88/×188/×86/×186 and I/O ports, byte-wide and word-wide I/O ports, buffered input port, and latched output port
7. Intel ×86 Interrupt Structure: Interrupt processing, interrupt service routines, interrupt controller devices, interrupt interface expansion, and daisy-chained interrupt

Last Updated: 6/14/23