Syllabus for Roster(s):

  • 17Sp ECE 3430-001 (ENGR)
  • 17Sp ECE 5502-001 (ENGR)
In the UVaCollab course site:   17Sp ECE 3430-001 (ENGR)

Course Description (for SIS)

ECE 3430 Introduction to Embedded Computing Systems

 Goals

  • Provide an introduction to embedded computing
  • Employ actual hardware based laboratories.
  • Build on prior knowledge from DLD, Electronics and Signals & Systems
  • Build a foundation that can be used in the capstone design course

Course Description

An embedded computer is designed to efficiently and (semi-) autonomously perform a small number of tasks, interacting directly with its physical environment.   This lab-based course explores architecture and interface issues relating to the design, evaluation and implementation of embedded systems . Topics include hardware and software organization, power management, digital and analog I/O devices, memory systems, timing and interrupts. 

Prerequisites

  • ECE/CS 2330 Digital Logic Design
  • CS 2110 Software Development Methods
  • ECE 2660 Electronics I (can be co-requisite if embedded systems is offered in the spring)

Course Credits

This is a 3-credit course that meets for one 75 minute lecture per week plus one 2.25 hour lab session per week.   There is extensive outside programming expected as well.

Instructors

Prof Harry Powell,  Prof Joanne Bechta Dugan

Texts

John H. Davies, MSP430 Microcontroller Basics, Elsevier, 2008.

Samuel P. Harbison and Guy L Steele, C: A Reference Manual, Prentice-Hall, 2002.

Computing Platform

We have selected the Texas Instruments MSP430 family of microcontrollers as an embedded computing platform for several reasons:

  • It is an industry standard device used in a wide range of applications including remote control, power monitoring, and wearable computing devices.
  • It is a 16 bit machine that facilitates an understanding of basic computer architectural concepts such as the use of index registers, stack pointers and indirect addressing. It also supports basic forms of Direct Memory Access.
  • It includes extensive debugging capabilities on-chip, including break points, single-stepping, and register and memory watches.
  • TI supplies an excellent free Integrated Development Environment.
  • The LaunchPad is a surprisingly functional platform available at a very low price ($9.99 retail).

Content

Overview of embedded systems; introduction to MSP architecture

            Students are introduced to the architecture of the Texas Instruments MSP 430 family of microcontrollers, on which the lab assignments will be implemented.  We have designed and produced a set of plug-in header boards that attach to the MSP LaunchPad, a low-cost but surprisingly functional member of the MSP430 family of microcontrollers.   The LaunchPad allows students to experience all the salient features of embedded systems in an inexpensive package.

            Students are also introduced to Code Composer Studio (CCS), a functionally rich development environment that supports the MSP family of devices.  Programs are written in C or assembly and CCS supports active debugging of programs on the MSP device.

            An overview of the architecture of the MSP introduces the CPU, special purpose registers,  addressing modes, instruction set, clocking and timer systems, analog-to-digital conversion, interrupt processing, memory-mapped IO, power management, ports and peripherals and communications.

            The first lab assignment is a sequence of 9 introductory labs provided by TI that provide an overview of the main features of the MSP architecture.  The students complete these 9 labs in the first week and take a sequence of quizzes to reinforce the concepts introduced in the lab assignments.

Sampling & Signals

            Students are introduced to several important topics in this assignment to sample and  temperature sensor values and then sample & filter an externally supplied signal with added noise (of a known frequency).   To complete this assignment, students learn about the timer systems, interrupts, sampling, analog-digital conversion using successive approximation and simple boxcar filtering.   This is the first C programming assignment in the course; students are expected to learn C on their own.

Program design using state machines

The use of finite state machines as a method of specifying system behavior is developed in several assignments.  Students implement a simple communication protocol expressed as a pair of communicating state machines.   The protocol is implemented in two parts, one running on each of two different LaunchPads.   Next, students develop a software process to debounce a switch reading.  Finally, the first of the custom-designed header boards, which plug onto the LaunchPad boards, is introduced.  This header board interfaces to an incremental rotary encoder with a numbered dial on top; an assignment requires reading the signals from the encoder to determine the position and turn direction of the dial.  These sets of assignments require students to master interrupt handling routines as well as interfacing with external hardware devices.

Pulse Width Modulation

A set of assignments enable the students to explore pulse width modulation.   For the first assignment, students vary the perceived brightness of an LED, first in a fixed pattern and then as controlled by the dial on the rotary encoder.  Then the concept of PWM is applied to the control of a motor using another of the custom-designed header boards.   Given an input N (positive or negative) the motor is spun N complete revolutions (position is read via a rotary encoder) and then reversed.   A simple adaptive learning algorithm is used to adjust the acceleration and braking of the motor to achieve precise control.

Flash memory; Serial Peripheral Interface (SPI)

A custom-designed header board contains 2 512-Kbit serial flash memory chips accessed via the SPI (Serial Peripheral Interface) protocol.   Students learn to use the SPI interface to send and receive data from an external flash memory.   A predictable set of pseudo-random values are written to all memory locations (using Fibonacci LFSR).  The values are then read back and compared with the expected value.   The challenge of this assignment is to write and read the entire memory in less than 3 seconds.

Real time sampling, Direct Memory Access, Resource constrained computation

Another custom-designed header board is used to learn about real-time sampling, DMA, and resource-constrained computation.   This header board contains a 3-axis accelerometer, a ring of LEDs and an LED driver.   After a calibration process, the “tilt” of the board is read from the accelerometer values and translated into brightness levels of the LEDs, thus serving as an electronic “level”.   The interpretation of the accelerometer values requires the computation of the arctangent of a ratio of values.  Students are introduced to the CORDIC algorithm, which can produce the desired angle quickly and efficiently and  the SPI protocol (used by the LED driver); they use their knowledge of PWM to illuminate the set of LED’s to display tilt.

Wireless communication between LaunchPads

A custom-designed header board permits wireless communication between LaunchPads.    Students revisit the handshaking protocol (which used wired communication) and utilize the Manchester phase encoding scheme to achieve wirelss communication.   This assignment introduces binary phase-shift keying (BPSK) and MPE and provides a platform for analyzing communication errors and error detection and correction schemes.