Embedded System Design: A Unified Hardware/Software Introduction
Frank Vahid and Tony Givargis



Table of Contents

Preface

1. Introduction

1.1. Embedded systems overview

1.2. Design challenge - optimizing design metrics

1.2.1. Common design metrics

1.2.2. The time-to-market design metric

1.2.3. The NRE and unit cost design metric

1.2.4. The performance design metric

1.3. Processor technology

1.3.1. General-purpose processors - software

1.3.2. Single-purpose processors - hardware

1.3.3. Application-specific processors

1.4. IC technology

1.4.1. Full-custom/VLSI

1.4.2. Semi-custom ASIC (gate array and standard cell)

1.4.3. PLD

1.4.4. Trends

1.5. Design Technolgy

1.5.1. Compliation/Synthesis

1.5.2. Libraries/IP

1.5.3. Test/Verification

1.5.4. More productivity improvers

1.5.5. Trends

1.6. Tradeoffs

1.6.1. Design productivity gap

1.7. Summary and book outline

1.8. References and further reading

1.9. Exercises


2. Custom Single-purpose processors: Hardware

2.1. Introduction

2.2. Combinational Logic

2.2.1. Transistors and logic gates

2.2.2. Basic combinational logic design

2.2.3. RT-level combinational components

2.3. Sequential logic

2.3.1. Flip-flops

2.3.2. RT-level sequential components

2.3.3. Sequential logic design

2.4. Custom single-purpose processor design

2.5. RT-level custom single-purpose processor design

2.6. Optimizing custom single-purpose processors

2.6.1. Optimizing the original program

2.6.2. Optimizing the FSMD

2.6.3. Optimizing the datapath

2.6.4. Optimizing the FSM

2.7. Summary

2.8. References and further reading

2.9. Exercises


3. General-purpose processors: Software

3.1. Introduction

3.2. Basic architecture

3.2.1. Datapath

3.2.2. Control unit

3.2.3. Memory

3.3. Operation

3.3.1. Instruction execution

3.3.2. Piplelining

3.3.3. Superscalar and VLIW architectures

3.4. Programmer's view

3.4.1. Instruction set

3.4.2. Program and data memory space

3.4.3. Registers

3.4.4. I/O

3.4.5. Interrupts

3.4.6. Operating Systems

3.5. Development environment

3.5.1. Design flow and tools

3.5.2. Testing and debugging

3.6 Application-specific instruction-set processors (ASIP's)

3.6.1. Microcontrollers

3.6.2. Digital signal processors (DSP)

3.6.3. Less-general ASIP environments

3.7. Selecting a microprocessor

3.8. General-purpose processor design

3.9. Summary

3.10. References and further reading

3.11. Exercises


4. Standard single-purpose processors: Peripherals

4.1. Introduction

4.2. Timers, counters, and watchdog timers

4.3. UART

4.4. Pulse width modulator

4.5. LCD controller

4.6. Keypad controller

4.7. Stepper motor controller

4.8. Analog-digital converters

4.9. Real-time clocks

4.10. Summary

4.11. References and further reading

4.12. Exercises


5. Memory

5.1. Introduction

5.2. Memory write ability and storage permanence

5.2.1 Write ability

5.2.2. Storage permanence

5.2.3. Tradeoffs

5.3. Common memory types

5.3.1. Introduction to "read-only" memories - ROM

5.3.2. Mask-programmed ROM

5.3.3. OTP ROM - one-time programmable ROM

5.3.4. EPROM - erasable programmable ROM

5.3.5. EEPROM - electrically-erasable programmable ROM

5.3.6. Flash memory

5.3.7. Introduction to read-write memory - RAM

5.3.8. SRAM - Static RAM

5.3.9. DRAM - Dynamic RAM

5.3.10 PSRAM - Pseudo-static RAM

5.3.11. NVRAM - Non-volatile RAM

5.4. Composing memories

5.5. Memory hierarchy and cache

5.5.1. Cache mapping techniques

5.5.2. Cache replacement policy

5.5.3. Cache write techniques

5.5.4. Cache impact on system performance

5.6. Advanced RAM

5.6.1. The basic DRAM

5.6.2. Fast page mode (FPM DRAM)

5.6.3. Extended data out DRAM (EDO DRAM)

5.6.4. Synchronous (S) and enhanced synchronous (ES) DRAM

5.6.5. Rambus DRAM (RDRAM)

5.6.6. DRAM integration problem

5.6.7. Memory management unit (MMU)

5.7. Summary

5.8. References and further reading

5.9. Exercises


6. Interfacing

6.1. Introduction

6.2. Communication basics

6.2.1. Basic terminology

6.2.2. Basic protocol concepts

6.3. Microprocessor interfacing: I/O addressing

6.3.1. Port and bus-based I/O

6.3.2. Memory-mapped I/O and standard I/O

6.4. Microprocessor interfacing: interrupts

6.5. Microprocessor interfacing: Direct memory access

6.6. Arbitration

6.6.1. Priority arbiter

6.6.2. Daisy-chain arbitration

6.6.3. Networked-oriented arbitration methods

6.7. Multi-level bus architectures

6.8. Advanced communication principles

6.8.1. Parallel communication

6.8.2. Serial communication

6.8.3. Wireless communication

6.8.4. Layering

6.8.5. Error detection and correction

6.9. Serial Protocols

6.9.1. I2C bus

6.9.2. CAN bus

6.9.3. FireWire bus

6.9.4. USB

6.10. Parallel protocols

6.10.1. PCI bus

6.10.2. ARM bus

6.11. Wireless protocols

6.11.1. IrDA

6.11.2. Bluetooth

6.11.2. IEEE 802.11

6.12. Summary

6.13. References and further reading

6.14. Exercises


7. Digital camera example

7.1. Introduction

7.2. Digital camera

7.2.1. User's perspective

7.2.2. Designer's perspective

7.3. Specification

7.3.1. Informal functional specification

7.3.2. Non-functional specification

7.3.3. Executable specification

7.4. Design

7.4.1. Implementation 1: 8051-based design

7.4.2. Implementation 2: fixed point FDCT

7.4.3. Implementation 3: hardware FDCT

7.5. Summary

7.6. References and further reading

7.7. Exercises


8. State machine and concurrent process models

8.1. Introduction

8.2. Models vs. languages, text vs. graphics

8.2.1. Models vs. languages

8.2.2. Textual languages versus graphical languages

8.3. An introductory example

8.4. A basic state machine model: finite-state machines (FSM)

8.5. Finite-state machines with datapath model: FSMD

8.6. Using state machines

8.6.1. Describing a system as a state machine

8.6.2. Comparing the state machine and sequential program models

8.6.3. Capturing a state machine model in a sequential programming language

8.7. Hierarchial/Concurrent state machine model (HCFSM) and the Statecharts lanugage

8.8. Program-state machine model (PSM)

8.9. The role of an appropriate model and language

8.10. Concurrent process model

8.10. Concurrent processes

8.10.1. Process create and terminate

8.10.2. Process suspend and resume

8.10.3. Process join

8.12. Communication among processes

8.12.1. Shared memory

8.12.2. Message passing

8.13. Synchonization among processes

8.13.1. Condition variables

8.13.2. Monitors

8.14. Implementation

8.14.1. Creating and terminating processes

8.14.2. Suspending and resuming processes

8.14.3. Joining a process

8.14.4. Scheduling processes

8.15. Dataflow model

8.16. Real-time systems

8.16.1. Windows CE

8.16.2. QNX

8.17. Summary

8.18. References and further reading

8.19. Exercises


9. Control Systems

9.1. Introduction

9.2. Open-loop and closed-loop control systems

9.2.1. Overview

9.2.2. A first example: an open-looped automobile cruise-controller

9.2.3. A second example: a closed-loop automobile cruise-controller

9.3. General control systems and PID controllers

9.3.1. Control objectives

9.3.2. Modeling real physical systems

9.3.3. Controller design

9.4. Fuzzy control

9.5. Practial Issues Realted to Computer based Control

9.6. Benefits of Computer Based Control Implementations

9.7. Summary

9.8. References and further reading

9.9. Exercises


10. IC technology

10.1. Introduction

10.2. Full-custom (VLSI) IC technology

10.3. Semi-custom (ASIC) IC technology

10.3.1. Gate array semi-custom IC technology

10.3.2. Standard cell semi-custom IC technology

10.4. Programmable logic device (PLD) IC technology

10.5. Summary

10.6. References and further reading

10.7. Exercises


11. Design technology

11.1. Introduction

11.2. Automation: synthesis

11.2.1. The parallel evolution of compilation and synthesis

11.2.2. Synthesis levels

11.2.3. Logic synthesis

11.2.3.1. Two-level logic minimization

11.2.3.2. Multi-level logic minimization

11.2.3.3. FSM synthesis

11.2.3.4. Technology mapping

11.2.3.5. The impact of complexity on logic synthesis users

11.2.3.6. Integration logic synthesis and physical design

11.2.4. Register-transfer synthesis

11.2.5. Behavioral synthesis

11.2.6. System synthesis and hardware/software codesign

11.2.7. Synthesis requires temporal rather than spatial thinking

11.3. Verification: hardware/software co-simulation

11.3.1. Formal verification and simulation

11.3.2. Simulation speed

11.3.3. Hardware-software co-simulation

11.3.4. Emulators

11.4. Reuse: intellecutal property cores

11.4.1. Hard, soft and firm cores

11.4.2. New challenges posed by cores to processor providers

11.4.2. New challenges posed by cores to processor users

11.5. Design process models

11.6. Summary

11.7. References and further readings

11.8. Exercises


ESD HOME TABLE OF CONTENTS LABS SLIDES