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.
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 module 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.
What's included
8 videos5 readings5 assignments
Show info about module content
8 videos•Total 32 minutes
FPGA computing systems: A Bird’s Eye View•3 minutes
Course Introduction•3 minutes
Reconfiguration in Everyday Life•3 minutes
The Needs for Adaptation: an overview•5 minutes
FPGA and reconfiguration: a 1st definition•5 minutes
Runtime management•3 minutes
Programmable System-on-Chip•4 minutes
Programmable System-on-Multiple Chip•7 minutes
5 readings•Total 270 minutes
Self-Aware Adaptation in FPGA-based Systems [suggested readings]•30 minutes
Self-Awareness as a Model for Designing and Operating Heterogeneous Multicores [suggested readings]•60 minutes
Reconfigurable computing: a survey of systems and software [suggested readings]•120 minutes
ReconOS: An Operating System Approach for Reconfigurable Computing [suggested readings]•30 minutes
R3TOS-Based Autonomous Fault-Tolerant Systems [suggested readings]•30 minutes
5 assignments•Total 90 minutes
Reconfigurations•15 minutes
History of Reconfiguration•8 minutes
FPGA and reconfiguration•30 minutes
Programmable SoC Vs SoMCs•7 minutes
Runtime management•30 minutes
An introduction to Reconfigurable Computing
Module 2•6 hours to complete
Module details
Traditionally, computing was classified into General-Purpose Computing performed by a General-Purpose Processor (GPP) and Application-Specific Computing performed by an Application-Specific Integrated Circuit (ASIC). As a trade-off between the two extreme characteristics of GPP and ASIC, reconfigurable computing has combined the advantages of both. On one hand reconfigurable computing can have better performance with respect to a software implementation but paying this in terms of time to implement. On the other hand a reconfigurable device can be used to design a system without requiring the same design time and complexity compared to a full custom solution but being beaten in terms of performance. The main advantage of a reconfigurable system is its high flexibility, while its main disadvantage is the lack of a standard computing model. In this module we are presenting a first definition of reconfigurable computing, describing the rationale behind it and introducing how this field has been influenced by the introduction of the FPGAs.
What's included
5 videos4 readings2 assignments
Show info about module content
5 videos•Total 28 minutes
Reconfigurable Computing: a 1st definition•2 minutes
Reconfigurable Computing: HW vs SW•3 minutes
On how to improve the Reconfigurable computing performance via CAD improvements•4 minutes
FPGA-Based Reconfigurable Computing•4 minutes
System design space exploration and rationale behind partial reconfiguration•15 minutes
4 readings•Total 255 minutes
A platform-independent runtime methodology for mapping multiple applications onto FPGAs through resource virtualization [suggested readings]•45 minutes
A Heterogeneous Multicore System on Chip with Run-Time Reconfigurable Virtual FPGA Architecture [suggested readings]•60 minutes
Partitioning and Scheduling of Task Graphs on Partially Dynamically Reconfigurable FPGAs [suggested readings]•60 minutes
A Mapping-Scheduling Algorithm for Hardware Acceleration on Reconfigurable Platforms [suggested readings]•90 minutes
2 assignments•Total 60 minutes
Reconfigurable Computing Module•30 minutes
Performance•30 minutes
Reconfigurable Computing and FPGAs
Module 3•5 hours to complete
Module details
From the mid-1980s, reconfigurable computing has become a popular field due to the FPGA technology progress. An FPGA is a semiconductor device containing programmable logic components and programmable interconnects but no instruction fetch at run time, that is, FPGAs do not have a program counter. In most FPGAs, the logic components can be programmed to duplicate the functionality of basic logic gates or functional Intellectual Properties (IPs). FPGAs also include memory elements composed of simple flip-flops or more complex blocks of memories. Hence, FPGA has made possible the dynamic execution and configuration of both hardware and software on a single chip. This module provides a detailed description of FPGA technologies starting from a general description down to the discussion on the low-level configuration details of these devices, to the bitstream composition and the description of the configuration registers.
What's included
8 videos3 readings2 assignments
Show info about module content
8 videos•Total 36 minutes
Getting Familiar with FPGAs•3 minutes
FPGA Basic Block: CLBs and IOBs•6 minutes
FPGA Basic Block: Interconnections•6 minutes
FPGA Configuration: an overview•2 minutes
More Details on How To Configure and FPGA: the bitstream files•5 minutes
Bitstream Composition•4 minutes
Configuration Registers•6 minutes
How to handle the complexity of an FPGA-based system•4 minutes
3 readings•Total 181 minutes
Note on the "Resources"•1 minute
Physical design for FPGAs [suggested readings]•90 minutes
FPGA design tools must provide a design environment based on digital design concepts and components (gates, flip-flops, MUXs, etc.). They must hide the complexities of placement, routing and bitstream generation from the user. This module is not going through these steps in details, an entire course will be needed just for this, but it is important at least to have an idea of what it is happening behind the scene to better understand the complexity of the processes carried out by the tools you are going to use. Within this context, this module guides you through a simple example, which is abstracting the complexity of the underlying FPGA, starting from the description of the circuit you may be willing to implement to the bitstream used to configure the FPGA.
What's included
6 videos1 reading2 assignments
Show info about module content
6 videos•Total 42 minutes
4 inputs - 1 output OR LUT configuration example•10 minutes
From the LUT to the CLB configuration example•8 minutes
A simplified FPGA and its configuration settings•5 minutes
An Example on how to implement a circuit on a simplified FPGA•9 minutes
An Example on how to implement a circuit on a simplified FPGA: bitstram generation phase - CLBs•5 minutes
An Example on how to implement a circuit on a simplified FPGA: bitstram generation phase - SBs and routing•4 minutes
1 reading•Total 10 minutes
Conclusion•10 minutes
2 assignments•Total 60 minutes
LUT and CLB•30 minutes
Physical design•30 minutes
Instructor
Instructor ratings
Instructor ratings
We asked all learners to give feedback on our instructors based on the quality of their teaching style.
Politecnico di Milano is a scientific-technological University, which trains engineers, architects and industrial designers.
From 2014 Politecnico di Milano started the release of several MOOCs, developed by the service for digital learning METID (Methods and Innovative Technologies for Learning), giving everybody the chance to enhance personal skills.
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
Jennifer J.
Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
Larry W.
Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
Chaitanya A.
"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."
Learner reviews
4.6
37 reviews
5 stars
72.97%
4 stars
21.62%
3 stars
2.70%
2 stars
2.70%
1 star
0%
Showing 3 of 37
J
JS
5·
Reviewed on Apr 30, 2022
Pretty much, good introductory course for the folks learning about FPGA's . Hope to see more courses being added up in future on FPGA's reconfigurable computing .
M
MS
4·
Reviewed on May 31, 2023
Good course, but all the references are paid articles.To be improved the support materials.
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I purchase the Certificate?
When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.