An introduction to the design of mixed hardware-software systems, focusing on common underlying modeling concepts, the design of hardware-software interfaces, and the trade-offs between hardware and software components. Students will use simulation tools to conduct experiments with mixed hardware-software systems in the area of embedded systems.
In classic embedded system design, hardware and software components are developed independently by separate design teams. This leads to a slow and inefficient design process. There is general agreement in the design community that a combined consideration of hardware and software design issues will lead to more efficient systems and a more efficient design process. This course, targeted at computer engineers, addresses these issues.The course provides an introduction in hardware-software co-design. It outlines the basic strengths of hardware and software implementations, and shows how to combine those into a successful system design. The focus is on the commonalities in the design process of hardware and software, as well as on the design of hardware-software interfaces.
C- or better in 2534, 3504 or 3544.
The course assumes a basic knowledge of microprocessor system design, including assembly and C programming, basic processor architecture, interrupts, memory-buses, and peripherals, as covered in ECE 3534. The course assumes a basic knowledge of custom hardware design, including the design of synchronous sequential circuits, hardware arithmetic, and hardware controllers, as covered in ECE 3504.
Percentage of Course
|System-level Executable Specifications||10%|
|Control-flow and Data-flow||10%|
|Basic Block Representation of Software||5%|
|Finite State Machines with Data Path||5%|
|Cycle-based Simulation of Hardware and Software||10%|
|Using Hardware in Data-oriented Processing||10%|
|Using Software in Control-oriented Processing||10%|