We may earn an affiliate commission when you visit our partners.
Course image
Marco Domenico Santambrogio

New application domains demand ever increasing adaptability and performance. In order to cope with changing user requirements, improvements in system features, changing protocol and data-coding standards, and demands for support of a variety of different user applications, many emerging applications in communication, computing and consumer electronics demand that their functionality stays flexible after the system has been manufactured. Reconfigurable Systems-on-a-Chips (SoCs) employing different microprocessor cores and different types of reconfigurable fabrics are one attractive solution for these domains. The increasing prominence of reconfigurable devices within such systems requires HW/SW co-design for SoCs to address the trade-off between software execution and reconfigurable hardware acceleration. Dynamic reconfiguration capabilities of current reconfigurable devices create an additional dimension in the temporal domain. During the design space exploration phase, overheads associated with reconfiguration and hardware/software interfacing need to be evaluated carefully in order to harvest the full potential of dynamic reconfiguration.

Read more

New application domains demand ever increasing adaptability and performance. In order to cope with changing user requirements, improvements in system features, changing protocol and data-coding standards, and demands for support of a variety of different user applications, many emerging applications in communication, computing and consumer electronics demand that their functionality stays flexible after the system has been manufactured. Reconfigurable Systems-on-a-Chips (SoCs) employing different microprocessor cores and different types of reconfigurable fabrics are one attractive solution for these domains. The increasing prominence of reconfigurable devices within such systems requires HW/SW co-design for SoCs to address the trade-off between software execution and reconfigurable hardware acceleration. Dynamic reconfiguration capabilities of current reconfigurable devices create an additional dimension in the temporal domain. During the design space exploration phase, overheads associated with reconfiguration and hardware/software interfacing need to be evaluated carefully in order to harvest the full potential of dynamic reconfiguration.

The course will introduce the student with the concept of reconfigurability in FPGAs, presenting the available mechanisms and technologies at the device level and the tools and design methodologies required to design reconfigurable FPGA-based systems. The course will present the different aspects of the design of FPGA-based reconfigurable systems, focusing in particular on dynamically self-reconfigurable systems. The design methodologies and tools required to design a dynamically-reconfigurable system will be introduced and described, together with the problems that need to be considered.

Enroll now

What's inside

Syllabus

An Introduction to Reconfigurations
Before continuing in this terrific journey in the reconfigurable computing area, it can be useful to define a common language. Obviously, some of these terms have been already used but it is now time to better understand them and to make some order before continuing with more advanced concepts. Furthermore, as we know, FPGA configuration capabilities allow a great flexibility in hardware design and, as a consequence, they make it possible to create a vast number of different reconfigurable systems. These can vary from systems composed of custom boards with FPGAs, often connected to a standard PC or workstation, to standalone systems including reconfigurable logic and General Purpose Processors, to System-on-Chip's, completely implemented within a single FPGA mounted on a board, with only few physical components for I/O interfacing. There are different models of reconfiguration, and a scheme to classify them is presented in this module. We can consider this module as a transitional/turning point module. We have been exposed to some terminology and concepts and we are now ready to move forward. To do this, we need to combine all the pieces of the puzzles together and to invest a bit at looking at the overall picture, and this is exactly what this module has been designed for.
Read more
Towards Partial Dynamic Reconfiguration and Complex FPGA-based systems
The reconfiguration capabilities of FPGAs give the designers extended flexibility in terms of hardware maintainability. FPGAs can change the hardware functionalities mapped on them by taking the application offline, downloading a new configuration on the FPGA (and possibly new software for the processor, if any) and rebooting the system. Reconfiguration in this case is a process independent of the execution of the application. A different approach is the one that considers reconfiguration of the FPGA as part of the application itself, giving it the capability of adapting the hardware configured on the chip resources according to the needs of a particular situation during the execution time. In this case we are referring to this reconfiguration as dynamic reconfiguration and the reconfiguration process is seen as part of the application execution, and not as a stage prior to it. This module illustrates a particular technique, which is extending the previous two, that has been viable for most recent FPGA devices, Partial Dynamic Reconfiguration. To fully understand what this technique is, the concepts of reconfigurable computing, static and dynamic reconfiguration, and the taxonomy of dynamic reconfiguration itself must be analyzed. In this way partial dynamic reconfiguration can be correctly placed in the set of system development techniques that it is possible to implement on a modern FPGA chip.
Design Flows
After presenting different solutions proposed to design and implement dynamic reconfigurable systems, this module will describe a general and complete design methodology that can be followed as a guideline for designing reconfigurable computing systems. To design and implement a reconfigurable computing system, designers need Computer-Aided Design (CAD) tools for system design and implementation, such as a design analysis tool for architecture design, a synthesis tool for hardware construction, a simulator for hardware behavior simulation, and a placement and routing tool for circuit layout. We may build these tools ourselves or we can also use commercial tools and platforms for reconfigurable system design. The first choice implies a considerable investment in terms of both time and effort to build a specific and optimized solution for the given problem, while the second one allows the re-use of knowledge, cores, and software to reach a good solution to the same problem more rapidly. This module is guiding the students through an historical view on how CAD frameworks evolved through the years. This is done to show how fast the technology is evolving and the rationale behind the choice made to improve the users experience when working with an FPGA-based system. Not only commercial tools are described, but also the personal journey done by the course instructor and his research team, starting from his early days as a PhD up to the research challenges they are nowadays working on.
Closing remarks and future directions
We are working at the edge of the research in the area of reconfigurable computing. FPGA technologies are not used only as standalone solutions/platforms but are now included into cloud infrastructures. They are now used both to accelerate infrastructure/backend computations and exposed as-a-Service that can be used by anyone. Within this context we are facing the definition of new research opportunities and technologies improvements and the time cannot be better under this perspective. What it is needed now is new platform creation tools, monitoring and profiling infrastructure, better runtime management systems, static and dynamic workload partitioning, just to name a few possible areas of research. This module is concluding this course but posing interesting questions towards possible future research directions that may also point the students to other Coursera courses on FPGAs.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Taught by Marco Domenico Santambrogio, who are recognized for their work in the field of reconfigurable systems
Provides an overview of reconfigurability from different perspectives: conceptual, architectural, and implementation
Suitable for students with some background in digital systems and computer architecture
Covers partial dynamic reconfiguration, a technique for reconfiguring FPGAs while the system is running
Includes hands-on labs and interactive materials to reinforce learning

Save this course

Save FPGA computing systems: Partial Dynamic Reconfiguration to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in FPGA computing systems: Partial Dynamic Reconfiguration with these activities:
Review fundamental concepts in computer architecture and digital logic
Ensure a strong foundation by refreshing your knowledge in related areas before starting the course.
Browse courses on Computer Architecture
Show steps
  • Go over your notes or textbooks from previous courses on computer architecture and digital logic.
  • Review online resources or tutorials to reinforce key concepts.
  • Complete practice exercises or quizzes to test your understanding.
Engage in group discussions on reconfigurable computing topics
Collaborate with peers to exchange ideas, ask questions, and deepen your understanding.
Browse courses on Reconfigurable Computing
Show steps
  • Join or create a study group with other students taking the course.
  • Select topics for discussion based on the course material.
  • Participate actively in the discussions, sharing your perspectives and listening to others.
Organize and review course materials
Stay organized and reinforce your learning by reviewing and compiling course materials.
Show steps
  • Create a system for organizing notes, assignments, and other course materials.
  • Review your materials regularly, summarizing key concepts and highlighting areas for improvement.
  • Create study guides or flashcards to aid in memorization.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Solve reconfigurable computing exercises and challenges
Test and reinforce your understanding of reconfigurable computing principles through practice.
Browse courses on Reconfigurable Computing
Show steps
  • Search for online resources or textbooks that provide exercises and challenges.
  • Attempt to solve the problems on your own.
  • Review your solutions and identify areas for improvement.
Attend conferences and workshops on reconfigurable computing
Connect with experts, learn about the latest advancements, and expand your network in the field.
Browse courses on Reconfigurable Computing
Show steps
  • Search for upcoming conferences and workshops related to reconfigurable computing.
  • Register for and attend the events.
  • Participate in presentations, ask questions, and connect with attendees.
  • Join professional organizations or mailing lists to stay informed about future events.
Explore advanced topics in reconfigurable computing
Enhance your understanding of reconfigurable computing by delving into specialized topics.
Browse courses on Reconfigurable Computing
Show steps
  • Identify specific areas of interest within reconfigurable computing.
  • Find online tutorials, workshops, or courses covering these topics.
  • Follow the tutorials and complete the exercises to gain practical experience.
Read a book on advanced reconfigurable computing techniques
Expand your knowledge by exploring advanced concepts and techniques in reconfigurable computing.
Show steps
  • Obtain a copy of the book or access it online.
  • Read the book thoroughly, taking notes and highlighting important concepts.
  • Complete the exercises and assignments provided in the book to reinforce your understanding.
Contribute to open-source projects in reconfigurable computing
Gain hands-on experience and contribute to the community by participating in open-source projects.
Browse courses on Reconfigurable Computing
Show steps
  • Identify open-source projects related to reconfigurable computing.
  • Choose a project that aligns with your interests and skill level.
  • Review the project's documentation and contribute code or other resources.
  • Interact with the project's community to share ideas and learn from others.

Career center

Learners who complete FPGA computing systems: Partial Dynamic Reconfiguration will develop knowledge and skills that may be useful to these careers:
FPGA Design Engineer
An FPGA Design Engineer is an engineer who is responsible for the design and implementation of FPGA-based systems. This course will provide you with the knowledge and skills necessary to design and implement FPGA-based systems using partial dynamic reconfiguration. This course will help you build a foundation in FPGA design and will help you prepare for a career as an FPGA Design Engineer.
Computer Hardware Engineer
A Computer Hardware Engineer is an engineer who is responsible for the design and development of computer hardware. This course will provide you with the knowledge and skills necessary to design and develop FPGA-based computer hardware. This course will help you build a foundation in computer hardware design and will help you prepare for a career as a Computer Hardware Engineer.
Embedded Systems Engineer
An Embedded Systems Engineer is an engineer who is responsible for the design and development of embedded systems. This course will provide you with the knowledge and skills necessary to design and develop FPGA-based embedded systems. This course will help you build a foundation in embedded systems design and will help you prepare for a career as an Embedded Systems Engineer.
Systems Engineer
A Systems Engineer is an engineer who is responsible for the design and development of systems. This course will provide you with the knowledge and skills necessary to design and develop FPGA-based systems. This course will help you build a foundation in systems engineering and will help you prepare for a career as a Systems Engineer.
Software Engineer
A Software Engineer is an engineer who is responsible for the design and development of software. This course will provide you with the knowledge and skills necessary to design and develop software for FPGA-based systems. This course will help you build a foundation in software engineering and will help you prepare for a career as a Software Engineer.
Electrical Engineer
An Electrical Engineer is an engineer who is responsible for the design and development of electrical systems. This course will provide you with the knowledge and skills necessary to design and develop FPGA-based electrical systems. This course will help you build a foundation in electrical engineering and will help you prepare for a career as an Electrical Engineer.
Electronics Engineer
An Electronics Engineer is an engineer who is responsible for the design and development of electronic systems. This course will provide you with the knowledge and skills necessary to design and develop FPGA-based electronic systems. This course will help you build a foundation in electronics engineering and will help you prepare for a career as an Electronics Engineer.
Computer Scientist
A Computer Scientist is a scientist who is responsible for the study of computer science. This course will provide you with the knowledge and skills necessary to study computer science and to design and develop FPGA-based computer systems. This course will help you build a foundation in computer science and will help you prepare for a career as a Computer Scientist.
Physicist
A Physicist is a scientist who is responsible for the study of physics. This course will provide you with the knowledge and skills necessary to study physics and to design and develop FPGA-based physical models. This course will help you build a foundation in physics and will help you prepare for a career as a Physicist.
Mathematician
A Mathematician is a scientist who is responsible for the study of mathematics. This course will provide you with the knowledge and skills necessary to study mathematics and to design and develop FPGA-based mathematical models. This course will help you build a foundation in mathematics and will help you prepare for a career as a Mathematician.
Astronomer
An Astronomer is a scientist who is responsible for the study of astronomy. This course will provide you with the knowledge and skills necessary to study astronomy and to design and develop FPGA-based astronomical models. This course will help you build a foundation in astronomy and will help you prepare for a career as an Astronomer.
Geologist
A Geologist is a scientist who is responsible for the study of geology. This course will provide you with the knowledge and skills necessary to study geology and to design and develop FPGA-based geological models. This course will help you build a foundation in geology and will help you prepare for a career as a Geologist.
Biologist
A Biologist is a scientist who is responsible for the study of biology. This course will provide you with the knowledge and skills necessary to study biology and to design and develop FPGA-based biological models. This course will help you build a foundation in biology and will help you prepare for a career as a Biologist.
Chemist
A Chemist is a scientist who is responsible for the study of chemistry. This course will provide you with the knowledge and skills necessary to study chemistry and to design and develop FPGA-based chemical models. This course will help you build a foundation in chemistry and will help you prepare for a career as a Chemist.
Economist
An Economist is a scientist who is responsible for the study of economics. This course may be useful to you if you are interested in designing and developing FPGA-based economic models. This course will help you build a foundation in economics and may help you prepare for a career as an Economist.

Reading list

We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in FPGA computing systems: Partial Dynamic Reconfiguration.
Provides an introduction to reconfigurable computing, covering the fundamentals of reconfigurable architectures, design tools, and applications. It could serve as a supplemental reference.
Provides a comprehensive overview of FPGA-based system design, covering the hardware, software, and design methodologies. It valuable reference for anyone working with FPGAs.
Provides a detailed look at advanced digital design using the Verilog HDL, covering the techniques, tools, and applications. It useful reference for researchers and practitioners working in this area.
Provides a comprehensive overview of digital signal processing with FPGAs, covering the techniques, tools, and applications. It valuable reference for anyone working in this area.
Provides a comprehensive overview of FPGA-based implementation of signal processing systems, covering the techniques, tools, and applications. It valuable reference for anyone working in this area.
Provides a comprehensive overview of computer architecture, covering the fundamentals of computer organization, instruction set architecture, and performance evaluation. It could serve as a supplemental reference for the course.
Provides a comprehensive overview of Verilog HDL, covering the language syntax, semantics, and design techniques. It valuable reference for anyone working with Verilog HDL.
Provides a practical introduction to FPGA prototyping using Verilog HDL. It covers the fundamentals of Verilog HDL, FPGA design, and simulation. It could serve as a supplemental reference for the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to FPGA computing systems: Partial Dynamic Reconfiguration.
FPGA Architecture Based System for Industrial Application
Most relevant
FPGA computing systems: Background knowledge and...
Most relevant
Real-Time Mission-Critical Systems Design
Basic Recommender Systems
Introduction to FPGA Design for Embedded Systems
FPGA Design and VHDL
FPGA Capstone: Building FPGA Projects
FPGA Development in VHDL: Beyond the Basics
FPGA computing systems: A Bird’s Eye View
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser