Embedded Systems Laboratory

Embedded Systems Laboratory is an advanced course offered within the context of our Computer Science Degree Program. It is a practical course focused on the development of embedded systems based on microcontrollers and programmable logic devices. A set of books and manuals (see Literature bellow) gives technical support to the course, while a set of hardware kits (see laboratory bellow) yields a platform for the practical exercises carried out along the course.

Requisites

The requisites for this course are Computer Organization and Digital Systems.

Program (72 hours)

Topic Notes Hours
1 - Introduction PDF 3
1.1 - Historic Perspective
1.2 - Architectural overview
2 - Embedded System Development PDF 12
2.1 - Design principles
2.2 - Real-time constraints
2.3 - Implementation techniques
2.4 - Testing, emulation and debugging techniques
3 - I/O Basics PDF 9
3.1 - I/O ports
3.2 - Interrupt handling
3.3 - PIO
3.4 - DMA
4 - Timers, Counters and Clocks PDF 6
4.1 - Timers and counters
4.2 - Watchdog
4.3 - Real-time clock
5 - A/D Programming 9
5.1 - Sensors (A -> D)
PDF
5.2 - Actuators (D -> A)
PDF
6 - Introduction to Real-time Systems PDF 9
7 - Programmable Logic PDF 21
7.1 - Programmable logic devices
7.2 - Hardware description languages
7.3 - System on Chip
8 - High-level synthesis PDF 6
9 - Discussion 3

Evaluation

Students will have their skills to develop dedicated computing systems improved and evaluated through class exercises.

Exercises

  1. Led blinking
  2. Light keyboard
  3. Light keyboard the hard way
  4. Debugging challenge
  5. J-Tag debugging
  6. Digital voltimeter
  7. Noise generator
  8. Real-time Operating System
  9. Simple calculator
  10. RTL Counter
  11. RTL Priority Queue
  12. SoC implementation (optional)
  13. HLS of a FIR

Literature

  1. Edward A. Lee and Sanjit A. Seshia, Introduction to Embedded Systems: a Cyber-Physical Systems Approach, http://LeeSeshia.org, 2011.
  2. Peter Marwedel, Embedded System Design, 2nd ed., Springer, 2011.
  3. Waine Wolf, Computers as Components - Principles of Embedded Computing System Design, Morgan Kaufmann, 2008.
  4. Bruce Powel Douglass, Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit, Elsevier, 2011.
  5. M. Tim Jones, Anatomy of Real-time Linux Architectures IBM, 2008.
  6. Peter J. Ashenden, The Designer's Guide to VHDL, Morgan Kaufmann, 2nd ed., 2002.
  7. Qing Li and Caroline Yao, Real-time Concepts for Embedded Systems, CMP, 2003.
  8. Steve Heath, Embedded Systems Design, Newnes, 2003.
  9. Microcontroller's Manuals, User Guides and Data sheets.

Laboratory

Students will have the following kits available for class exercises: Altera Flex and Stratix (NIOS), Analog Devices Blackfin, ARM (7TDMI, CortexMx, CortexA8, CortexA9, EPOSMote and Raspberry PI), Atmel AVR8 (including Arduino), Hitachi H8, IBM PowerPC 405, Intel XScale, Intel x86/Quark (including Galileo), SPARC (Leon), Motorola HCxx, Xilinx Spartan3, Virtex2 (p,u-Blaze), Virtex2Pro (PowerPC), Virtex4FX (PowerPC), Virtex4SX (DSP), Virtex6 and Zynq.

Useful Tools

Useful Docs

Editions