CSCI 502 – Hardware/Software Co-Design

Spring 2017 Semester

Course Instructor: Dr. Almas Shintemirov  

Class Times:   Tuesdays 3.00 – 5.45 pm

Course Overview 

The Hardware/Software Co-Design course introduces underlying scientific and engineering principles behind embedded real-time systems. Any system that responds at the pace of relevant events has real-time requirements and constraints whether the timescale is short like the airbag controls for an automobile or longer like the flight scheduling system for an airline. The course covers the software aspects of embedded processor architectures and elements of real-time operating systems. Students can expect to learn how to apply real-time principles to design embedded systems that are used to drive critical embedded systems like robotics, automobiles, avionics, medical equipment, etc. Topics covered include concurrency; real-time principles (multi-tasking, scheduling, synchronization), embedded architectures, etc. Through a series of practical exercises using a state-of-the-art system-in-chip microprocessor board students will acquire skills in the design/implementation of core embedded functionality using Linux based C programming tools and libraries. Specifically, upon completing this course, students should be able to:

  • Understand specific aspects of embedded systems and its practical applications
  • Learn main elements of creating specifications for designing embedded systems
  • Have a practical experience with embedded systems in robotic/mechatronic systems
  • Work in Linux operating system and program multitasking applications in C/C++ environment
  • Work in a part of the team on an embedded system design developing creative thinking and communicative skills
  • Self-study and work independently on projects that can be used as part of master theses

Course Textbooks

Real-Time Embedded Systems: Open-Source Operating Systems Perspective by I. C. Bertolotti and G. Manduchi, 2012
Logic and Computer Design Fundamentals by M.M. Mano and C.R. Kime, 4th edition, 2014
Exploring BeagleBone with Embedded Linux by D. Molloy, 2014
Operating System Concepts by A. Silberschatz, P. Baer Galvin and G. Gagne, 9th edition, 2012

Course Topics
- Numbers Systems, Binary Logic and Gates, Combinational and Sequential Logic Design;
- Registers, Memory Basics;
- Computer Design Basics: Datapath and Instruction Set Architecture;
- Embedded Systems Hardware:  RISC and CISC architectures, Pipelining, Interrupts, I/O interface, Direct Memory Access, Analog-Digital Conversion;
- Operating systems, Multithreading, Real-Time Systems;
- Intertask Communication and Process Synchronization: Mutexes and Semaphores;
- Embedded Linux, POSIX Pthreads library programming practice;
- Cyclic Task Scheduling, Preemptive Task Scheduling (Round-Robin);
- Real-Time Scheduling: Rate Monotonic, Earlest Deadline First Scheduling;
- Deadlocks, Task Priority Inversion;
- Linux Real-Time Extensions: Xenomai practice.

2016 Course Projects