University of Colorado at Boulder
University of Colorado at Boulder Search A to Z Campus Map CU Search Links
ECE Home
Course List
Contact Us

ECEN 4613 - Embedded System Design

Catalog Data ECEN 4613 (3). Embedded System Design. Introduces system hardware and firmware design for embedded applications. Students independently design and develop a hardware platform encompassing a microcontroller and peripherals. Firmware is developed in C and assembly. A significant final project is designed, developed, documented, and presented.
(Meets with ECEN 5613.)
Credits and Design 3 credit hours: 2 hours of lecture, 2 hours of lab per week, additional hours required outside formally scheduled hours. Elective course.
Prerequisite(s) ECEN 2350, Digital Logic
ECEN 3350, Programming of Digital Systems
C programming experience
Recommended prerequisite(s) ECEN 3250, Microelectronics
ECEN 4593, Computer Organization
Textbook No formal textbook. Data sheets and application notes are used.
Course Objectives To teach students all aspects of the design and development of an embedded system, including hardware and embedded software development. The course utilizes and applies the skills and knowledge students have gained throughout their prior undergraduate curriculum. Individual (rather than team) lab assignments ensure that each student is able to apply engineering theory to real world designs.
Topics Covered
  1. Course overview, expectations, logistics, processes, syllabus, FAQ, and prerequisite material.
  2. Embedded systems descriptions, definitions, and vocabulary. Design Engineer's notebook.
  3. Embedded system design considerations and requirements, processor selection and tradeoffs.
  4. Overview of board development process, wire wrapping, soldering.
  5. Microprocessor/microcontroller architectures and instruction sets.
  6. Multiplexed address/data buses, bus architectures.
  7. Design cycle, planning a development project, derivation of requirements, tradeoffs.
  8. Microcontroller instruction set, assembler and simulator. Code development process.
  9. Examples of assembly code, discussion of mnemonics, calculation of execution time.
  10. Device programmers, EPROM emulators, Intel hex records and Motorola S-records.
  11. Schematics and wiring diagrams, recommended practices, CAD tools.
  12. Board layout considerations, signal integrity (noise, crosstalk, etc.), decoupling, techniques.
  13. Manufacturing and test engineering, PCB design, ground and power planes, EMI, EMC.
  14. Data sheets, power supplies, voltage regulators. Thermal considerations, heat sinks.
  15. Oscillators and reset circuits. Microprocessor supervisory circuits, watchdog timers.
  16. Development and debugging strategies and techniques. Logic probes, voltmeters and oscilloscopes.
  17. Designing with tolerances and margins, part variations and substitutions, reliability/part count.
  18. Interfacing different logic families, fanout, signal buffering, noise margins, pullups/pulldowns.
  19. Microcontroller peripherals, selection and interfacing. Core component circuitry (?P, ROM, RAM).
  20. Microcontroller timing diagrams, program read, data read, data write.
  21. Debugging using logic analyzers, state and timing information.
  22. Timing requirements, propagation delay, setup, hold, rise/fall times, timing analysis. Clock skew.
  23. Memory selection and interface, SRAM, NVRAM, DRAM, EPROM, EEPROM, Flash.
  24. Memory maps, decoding logic, glue logic, programmable logic (PALs, FPGAs).
  25. Port pin structure. Controlling port pins in assembly. User interface design, human factors.
  26. Driving LEDs, switch debouncing in hardware and firmware, keypad decoding.
  27. Timers/counters. Interrupts and Interrupt Service Routines (ISRs).
  28. Estimating bandwidth requirements, code timing.
  29. Serial communication, RS-232/485, line drivers/receivers, charge pumps, terminal emulation, USB.
  30. Cross-assemblers, cross-compilers, linkage editors, disassemblers, other software tools.
  31. MICRO-C and SDCC cross compilers, Emily52 simulator, makefiles, and tools.
  32. Monitors, in-circuit emulators, debuggers, monitors, software engineering, debugging using software.
  33. EEPROMs, I2C and synchronous serial communication.
  34. Embedded C variables, bit operations, pointers.
  35. LCDs.
  36. Final Project Design Review. Each project team presents development plan, including milestones.
  37. Interrupts in embedded C.
  38. Interfacing C and assembly.
  39. Analog-to-Digital Converters (ADCs), Digital-to-Analog Converters (DACs).
  40. Motor control, stepper motors, DC motors, PWM, H-Bridges. Case study: hard disk drive.
  41. Firmware design, main loop designs, interrupt driven firmware, device drivers.
  42. Operating systems and real-time schedulers.
  43. Jump tables, POST, memory testing, Little/big endian issues, math functionality.
  44. Current events and emerging technologies.
  45. Migrating C code from RAM to ROM.
  46. Review of vocabulary.
  47. Final project presentations.

Last revised: 08-02-11, PM, ARP.