Embedded system design
Summary
Hardware-software co-design is a well known concept in embedded system design.It is also a concept required in designing FPGA-accelerators in data-centers.This course teaches how to transform algorithms in smart hardware-software solutions.
Content
High-level architectures:
- FIFO's, LIFO's, ring-buffers, and ping-pong buffers.
- FSM-D (finite state machine data-path) structures.
- Stream processing.
Acceleration methods:
- Custom instruction set extensions.
- Hardware accelerators
- Compiler optimizations.
Implementation methods:
- Hardware-software co-design.
- Timing closure.
- Virtual prototyping.
- Bare metal versus usage of an RTOS.
Learning Prerequisites
Required courses
Recommended courses
- Architecture-aware programming
- CS-200 Computer Architecture or CS-208 Computer Architecture I and CS-209 Computer Architecture II
Important concepts to start the course
- C/C++ programming skills
- Verilog/VHDL description skills
Learning Outcomes
By the end of the course, the student must be able to:
- Design buffers to account for different read and write behaviors
- Understand the concept of FSM-D's and use this concept to design accelerators
- Understand the concept of stream processing and be able to implement a stream processor
- Design and optimize an embedded system on FPGA given a set of prerequisites
Teaching methods
- First 9 weeks : theory with small projects and reports
- Last 5 weeks : mini project in groups of 2 students with final demonstration and presentation
Expected student activities
- Perform in groups of two students small projects to put the theory into practice
- Optimize a real world problem in a final project, explain the choices made, and present the results
Assessment methods
- Lab reports : 50%
- Final mini-project : 50%
Supervision
Office hours | No |
Assistants | Yes |
Others | Electronic forum and Moodle |
In the programs
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: During the semester (summer session)
- Subject examined: Embedded system design
- Courses: 2 Hour(s) per week x 14 weeks
- Lab: 2 Hour(s) per week x 14 weeks
- Type: optional