Nowadays the complexity of computing systems is skyrocketing. Programmers have to deal with extremely powerful computing systems that take time and considerable skills to be instructed to perform at their best. It is clear that it is not feasible to rely on human intervention to tune a system: conditions change frequently, rapidly, and unpredictably. It would be desirable to have the system automatically adapt to the mutating environment.
This course analyzes the stated problem, embraces a radically new approach, and it introduces how software and hardware systems ca ben adjusted during execution. By doing this, we are going to introduce the Field Programmable Gate Arrays (FPGA) technologies and how they can be (re)configured.
After this course you will be able to:
explain the rationale behind an FPGA-based reconfigurable computing system;
know the importance of FPGAs and of the reconfigurable computing technologies;
compare domains to understand if they can benefit from a “reconfigurable approach”;
describe the main components used to “define” an FPGA and how a system can be implemented on it.
Once a student completes this course, he will be ready to take more advanced FPGA courses.