FPGA computing systems: Background knowledge and introductory materials

Start Date: 01/24/2021

Course Type: Common Course

Course Link: https://www.coursera.org/learn/fpga-intro

About Course

This course is for anyone passionate in learning how a hardware component can be adapted at runtime to better respond to users/environment needs. This adaptation can be provided by the designers, or it can be an embedded characteristic of the system itself. These runtime adaptable systems will be implemented by using FPGA technologies. Within this course we are going to provide a basic understanding on how the FPGAs are working and of the rationale behind the choice of them to implement a desired system. This course aims to teach everyone the basics of FPGA-based reconfigurable computing systems. We cover the basics of how to decide whether or not to use an FPGA and, if this technology will be proven to be the right choice, how to program it. This is an introductory course meant to guide you through the FPGA world to make you more conscious on the reasons why you may be willing to work with them and in trying to provide you the sense of the work you have to do to be able to gain the advantages you are looking for by using these technologies. We rely on some extra readings to provide more information on the topic covered in this course. Please NOTE that most of the time, these documents are provided through the IEEE Xplore Digital Library, which means that, to access them, you have to have a valid IEEE subscriptions, either does by yourself or through your university/company. The course has no prerequisites and avoids all but the simplest mathematics and it presents technical topics by using analogizes to help also a student without a technical background to get at least a basic understanding on how an FPGA works. One of the main objectives of this course is to try to democratize the understanding and the access to FPGAs technologies. FPGAs are a terrific example of a powerful technologies that can be used in different domains. Being able to bring this technologies to domain experts and showing them how they can improve their research because of FPGAs, can be seen as the ultimate objective of this course. Once a student completes this course, they will be ready to take more advanced FPGA courses.

Course Syllabus

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.

Coursera Plus banner featuring three learners and university partner logos

Course Introduction

FPGA computing systems: Background knowledge and introductory materials The focus of this course is to provide you with an understanding of the basic concepts and principles of FPGA computing systems, including the design and operation of FPGAs. We will cover topics such as digital design, FPGA architecture, system-level design, and ASICs and their architecture, FPGA design concepts, and design of digital systems. The course is designed for those who are new to computer science and intend to learn more advanced material, including programming, algorithms, and design, and to address the design challenges that arise during the course learning process. The course is intended to guide you through the design and operation of a basic FPGA system, and provides you a baseline level of knowledge on how to proceed to the design of a more advanced system. The course is designed to help you gain a basic understanding of the FPGA architecture and its components, and its applications, and to prepare you to design and operate more advanced designs in the future. In this course, you will learn to identify the purpose and function of the components of a FPGA system. You will also learn how to design and build software-level designs, including ASICs. In the second part of the course, we will cover designing and operating FPGA designs, including ASICs, and their characteristics and operation, and will cover designing and operating designs that use more advanced design features. In the third part of

Course Tag

Related Wiki Topic

Article Example
Materials Knowledge Transfer Network The Materials Knowledge Transfer Network (Materials KTN) is a UK-based knowledge transfer organisation that brings together the views of those in business, design, research and technology organisations, trade associations, the financial market, academia and others in the materials community.
Applicative computing systems Applicative computing systems, or ACS are the systems of object calculi founded on combinatory logic and lambda calculus.
Knowledge Systems Laboratory Knowledge Systems Laboratory (KSL) is an artificial intelligence research laboratory within the Department of Computer Science at Stanford University, located at the Gates Computer Science Building, Stanford. Current work focuses on knowledge representation for shareable engineering knowledge bases and systems, computational environments for modelling physical devices, architectures for adaptive intelligent systems, and expert systems for science and engineering.
High Productivity Computing Systems High Productivity Computing Systems (HPCS) is a DARPA project for developing a new generation of economically viable high productivity computing systems for national security and industry in the 2002–10 timeframe.
Knowledge-based systems Knowledge-based systems were first developed by artificial intelligence researchers. These early knowledge-based systems were primarily expert systems – in fact, the term is often used synonymously with expert systems. The difference is in the view taken to describe the system: "expert system" refers to the type of task the system is trying to assist with – to replace or aid a human expert in a complex task; "knowledge-based system" refers to the architecture of the system – that it represents knowledge explicitly (rather than as procedural code). While the earliest knowledge-based systems were almost all expert systems, the same tools and architectures can and have since been used for a whole host of other types of systems – i.e., virtually all expert systems are knowledge-based systems, but many knowledge-based systems are not expert systems.
Reconfigurable computing The increase of logic in an FPGA has enabled larger and more complex algorithms to be programmed into the FPGA. The attachment of such an FPGA to a modern CPU over a high speed bus, like PCI express, has enabled the configurable logic to act more like a coprocessor rather than a peripheral. This has brought reconfigurable computing into the high-performance computing sphere.
Reconfigurable computing Furthermore, by replicating an algorithm on an FPGA or the use of a multiplicity of FPGAs has enabled reconfigurable SIMD systems to be produced where several computational devices can concurrently operate on different data, which is highly parallel computing.
Knowledge-based systems The most recent advancement of knowledge-based systems has been to adopt the technologies for the development of systems that use the internet. The internet often has to deal with complex, unstructured data that can't be relied on to fit a specific data model. The technology of knowledge-based systems and especially the ability to classify objects on demand is ideal for such systems. The model for these kinds of knowledge-based Internet systems is known as the Semantic Web.
Objective Interface Systems A popular OIS product is the ORBexpress CORBA middleware software. ORBexpress is most popular in the real-time and embedded computer markets. OIS supports the software version ORBexpress on more than 2,200 computing platforms (combinations of the versions of CPU families, operating systems, and language compilers). OIS also has FPGA versions of ORBexpress to allow hardware blocks on an FPGA to interoperate with software.
Knowledge-based systems The first knowledge-based systems were rule based expert systems. One of the most famous was Mycin a program for medical diagnosis. These early expert systems represented facts about the world as simple assertions in a flat database and used rules to reason about and as a result add to these assertions. Representing knowledge explicitly via rules had several advantages:
Green computing The goals of green computing are similar to green chemistry: reduce the use of hazardous materials, maximize energy efficiency during the product's lifetime, the recyclability or biodegradability of defunct products and factory waste. Green computing is important for all classes of systems, ranging from handheld systems to large-scale data centers.
Computing Computing is any goal-oriented activity requiring, benefiting from, or creating a mathematical sequence of steps known as an algorithm — e.g. through computers. Computing includes designing, developing and building hardware and software systems; processing, structuring, and managing various kinds of information; doing scientific research on and with computers; making computer systems behave intelligently; and creating and using communications and entertainment media. The field of computing includes computer engineering, software engineering, computer science, information systems, and information technology.
Materials science Semiconductors, metals, and ceramics are used today to form highly complex systems, such as integrated electronic circuits, optoelectronic devices, and magnetic and optical mass storage media. These materials form the basis of our modern computing world, and hence research into these materials is of vital importance.
Interactive computing The need of constant user interaction in interactive computing systems makes it different in many ways from batch processing systems. Thus different aspects of computing systems are significantly different for interactive computing systems and they have been focused on different research. The design of a different programming model has been discussed. Another article describes the importance of security and reliability in interactive computing.
Computing with Memory Contrary to the purely spatial computing model of FPGA, a reconfigurable computing platform that employs a temporal computing model (or a combination of both temporal and spatial) has also been investigated
Knowledge-based systems A knowledge-based system (KBS) is a computer program that reasons and uses a knowledge base to solve complex problems. The term is broad and is used to refer to many different kinds of systems; the one common theme that unites all knowledge based systems is an attempt to represent knowledge explicitly via tools such as ontologies and rules rather than implicitly via code the way a conventional computer program does. A knowledge based system has three types of sub-systems: a knowledge base, an user interface and an inference engine. The knowledge base represents facts about the world, often in some form of subsumption ontology. The inference engine represents logical assertions and conditions about the world, usually represented via IF-THEN rules.
Materials Knowledge Transfer Network It provides a range of activities for members, such as events, webinars, online meeting tools, signposting to funding, assisting with applications for financial support, and helping to set up consortia for R&D projects, to enable the exchange of knowledge and the stimulation of business innovation in the UK. The Materials KTN works with training agencies to develop courses in materials. It helps to broker vocational and other training for people involved in materials. Membership of the KTN is free.
Smart Materials and Structures Smart Materials and Structures is a monthly peer-reviewed scientific journal covering technical advances in smart materials, systems, structures and device engineering.
Parallel computing Reconfigurable computing is the use of a field-programmable gate array (FPGA) as a co-processor to a general-purpose computer. An FPGA is, in essence, a computer chip that can rewire itself for a given task.
U-form This has applications in distributed computing, non-relational database systems, information visualization, and knowledge representation systems.