- Course overview, expectations, logistics, processes, syllabus,
FAQ, and prerequisite material.
- Embedded systems descriptions, definitions, and vocabulary.
Design Engineer's notebook.
- Embedded system design considerations and requirements,
processor selection and tradeoffs.
- Overview of board development process, wire wrapping, soldering.
- Microprocessor/microcontroller architectures and instruction sets.
- Multiplexed address/data buses, bus architectures.
- Design cycle, planning a development project, derivation of
- Microcontroller instruction set, assembler and simulator. Code
- Examples of assembly code, discussion of mnemonics, calculation of execution time.
- Device programmers, EPROM emulators, Intel hex records and Motorola S-records.
- Schematics and wiring diagrams, recommended practices, CAD tools.
- Board layout considerations, signal integrity (noise, crosstalk, etc.), decoupling, techniques.
- Manufacturing and test engineering, PCB design, ground and power planes, EMI, EMC.
- Data sheets, power supplies, voltage regulators. Thermal considerations, heat sinks.
- Oscillators and reset circuits. Microprocessor supervisory circuits, watchdog timers.
- Development and debugging strategies and techniques. Logic probes, voltmeters and oscilloscopes.
- Designing with tolerances and margins, part variations and substitutions, reliability/part count.
- Interfacing different logic families, fanout, signal buffering, noise margins, pullups/pulldowns.
- Microcontroller peripherals, selection and interfacing. Core component circuitry (?P, ROM, RAM).
- Microcontroller timing diagrams, program read, data read, data write.
- Debugging using logic analyzers, state and timing information.
- Timing requirements, propagation delay, setup, hold, rise/fall times, timing analysis. Clock skew.
- Memory selection and interface, SRAM, NVRAM, DRAM, EPROM, EEPROM, Flash.
- Memory maps, decoding logic, glue logic, programmable logic (PALs, FPGAs).
- Port pin structure. Controlling port pins in assembly. User interface design, human factors.
- Driving LEDs, switch debouncing in hardware and firmware, keypad decoding.
- Timers/counters. Interrupts and Interrupt Service Routines (ISRs).
- Estimating bandwidth requirements, code timing.
- Serial communication, RS-232/485, line drivers/receivers, charge pumps, terminal emulation, USB.
- Cross-assemblers, cross-compilers, linkage editors, disassemblers, other software tools.
- MICRO-C and SDCC cross compilers, Emily52 simulator, makefiles, and tools.
- Monitors, in-circuit emulators, debuggers, monitors, software engineering, debugging using software.
- EEPROMs, I2C and synchronous serial communication.
- Embedded C variables, bit operations, pointers.
- Final Project Design Review. Each project team presents development plan, including milestones.
- Interrupts in embedded C.
- Interfacing C and assembly.
- Analog-to-Digital Converters (ADCs), Digital-to-Analog Converters (DACs).
- Motor control, stepper motors, DC motors, PWM, H-Bridges. Case study: hard disk drive.
- Firmware design, main loop designs, interrupt driven firmware, device drivers.
- Operating systems and real-time schedulers.
- Jump tables, POST, memory testing, Little/big endian issues, math functionality.
- Current events and emerging technologies.
- Migrating C code from RAM to ROM.
- Review of vocabulary.
- Final project presentations.