Introduction to FPGA Design for Embedded Systems

Start Date: 02/23/2020

Course Type: Common Course

Course Link:

Explore 1600+ online courses from top universities. Join Coursera today to learn data science, programming, business strategy, and more.

About Course

This course can also be taken for academic credit as ECEA 5360, part of CU Boulder’s Master of Science in Electrical Engineering degree. Programmable Logic has become more and more common as a core technology used to build electronic systems. By integrating soft-core or hardcore processors, these devices have become complete systems on a chip, steadily displacing general purpose processors and ASICs. In particular, high performance systems are now almost always implemented with FPGAs. This course will give you the foundation for FPGA design in Embedded Systems along with practical design skills. You will learn what an FPGA is and how this technology was developed, how to select the best FPGA architecture for a given application, how to use state of the art software tools for FPGA development, and solve critical digital design problems using FPGAs. You use FPGA development tools to complete several example designs, including a custom processor. If you are thinking of a career in Electronics Design or an engineer looking at a career change, this is a great course to enhance your career opportunities. Hardware Requirements: You must have access to computer resources to run the development tools, a PC running either Windows 7, 8, or 10 or a recent Linux OS which must be RHEL 6.5 or CentOS Linux 6.5 or later. Either Linux OS could be run as a virtual machine under Windows 8 or 10. The tools do not run on Apple Mac computers. Whatever the OS, the computer must have at least 8 GB of RAM. Most new laptops will have this, or it may be possible to upgrade the memory.

Course Syllabus

What's this programmable logic stuff anyway? In Module 1 you learn about the history and architecture of programmable logic devices including Field Programmable Gate Arrays (FPGAs). You will learn how to describe the difference between an FPGA, a CPLD, an ASSP, and an ASIC, recite the historical development of programmable logic devices; and design logic circuits using LUTs. Examples will include designs of digital adders and multipliers in FPGAs.

Deep Learning Specialization on Coursera

Course Introduction

Introduction to FPGA Design for Embedded Systems This course is for the beginner and advanced user who is looking to dive deeper into FPGA design in detail. You will learn about the basic design and execution phases of the design process. You will learn about the difference between the FPGA and FPGA-based microcontrollers, their capabilities and limitations, the FPGA's design guidelines, and the FPGA's design review and report process. You will also learn about FPGA's design and execution phase, and its guidelines. At the end of this course you will be able to.. * Design a design for an FPGA-based system * Explain the difference between FPGA and FPGA-based microcontrollers * Define the FPGA-based and FPGA-based microcontrollers * Design a microcontroller * Define the execution phase of a design * Design a microcontroller based on an FPGA-based design This course can be taken as a part of the FPGA Design MasterTrack or FPGA Design MasterTrack Plus, and you can take the course as a standalone course. However, it is recommended that you take the FPGA Design MasterTrack Plus to complete the course. This course can be taken as a standalone course, or you can take the FPGA Design MasterTrack Plus to complete the other course in the specialization. You should have equivalent experience to when you started the

Course Tag

Primality Test Verilog Digital Design Static Timing Analysis

Related Wiki Topic

Article Example
FPGA prototyping FPGA prototyping, sometimes also referred to as FPGA-based prototyping, ASIC prototyping, or SoC prototyping, is the method to prototype SoC and ASIC design on FPGA for hardware verification and early software development.
Systems design System design is the process of defining the architecture, components, modules, interfaces, and data for a system to satisfy specified requirements. Systems design could be seen as the application of systems theory to product development. There is some overlap with the disciplines of systems analysis, systems architecture and systems engineering.
Embedded system Since the embedded system is dedicated to specific tasks, design engineers can optimize it to reduce the size and cost of the product and increase the reliability and performance. Some embedded systems are mass-produced, benefiting from economies of scale.
FPGA prototyping One of the most difficult and time-consuming tasks in FPGA prototyping is debugging system designs. Debugging has become more difficult and time-consuming with the emergence of large, complex ASICs and SoC designs. To debug an FPGA prototype, probes are added directly to the RTL design to make specific signals available for observation, synthesized and downloaded to the FPGA prototype platform.
Conference on Embedded Networked Sensor Systems ACM SenSys is a selective, single-track forum for the presentation of research results on systems issues in the area of embedded networked sensors. The conference provides a venue to address the research challenges facing the design, deployment, use, and fundamental limits of these systems. Sensor networks require contributions from many fields, from wireless communication and networking, embedded systems and hardware, distributed systems, data management, and applications. SenSys welcomes cross-disciplinary work.
Cadence Design Systems Cadence products primarily target SoC design engineers, and are used to move a design into packaged silicon, with products for custom and analog design, digital design, mixed-signal design, verification, and package/PCB design, as well as a broad selection of IP, and also hardware for emulation and FPGA prototyping.
Systems-oriented design Systems-oriented design (S.O.D.) uses system thinking in order to capture the complexity of systems addressed in design practice. The main mission of S.O.D. is to build the designers' own interpretation and implementation of systems thinking. S.O.D. aims at enabling systems thinking to fully benefit from design thinking and practice, and design thinking and practice to fully benefit from systems thinking. S.O.D. addresses design for human activity systems, and can be applied to any kind of design problem ranging from product design and interaction design, through architecture to decision making processes and policy design.
Embedded system Telecommunications systems employ numerous embedded systems from telephone switches for the network to cell phones at the end user.
Systems design Object-oriented analysis and design methods are becoming the most widely used methods for computer systems design. The UML has become the standard language in object-oriented analysis and design. It is widely used for modeling software systems and is increasingly used for high designing non-software systems and organizations.
FPGA prototyping System RTL designs or netlist’s will have to be partitioned onto each FPGA to be able to fit the design onto the prototyping platform. This introduces new challenges for the engineer since manual partitioning requires tremendous effort and frequently results in poor speed (of the design under test). If the number or partitions can be reduced or the entire design can be placed onto a single FPGA, the implementation of the design onto the prototyping platform becomes easier.
FPGA prototyping EXOSTIV uses large external storage and gigabit transceivers to extract deep traces from FPGA running at speed. The improvement lays in its ability to see large traces in time as a continuous stream or in bursts. This enables exploring extended debugging scenarios that can't be reached by traditional embedded instrumentation techniques. The solution claims saving both the FPGA I/O resources and the FPGA memory at the expense of gigabit transceivers, for an improvement of a factor of 100,000 and more on visibility
Embedded Supercomputing Basically Embedded Supercomputing is a hybrid network of CPU and FPGA hardware, where FPGA acts as external co-processor to CPU. However, this programming model is still evolving and has many challenges.
Embedded system Transportation systems from flight to automobiles increasingly use embedded systems.
Embedded Java Embedded Java refers to versions of the Java program language that are designed for embedded systems. Since 2010 convergence has occurred and embedded implementations are now virtually identical to PC based version.
Systems design If the broader topic of product development "blends the perspective of marketing, design, and manufacturing into a single approach to product development," then design is the act of taking the marketing information and creating the design of the product to be manufactured. Systems design is therefore the process of defining and developing systems to satisfy specified requirements of the user.
Embedded system Numerous microcontrollers have been developed for embedded systems use. General-purpose microprocessors are also used in embedded systems, but generally require more support circuitry than microcontrollers.
Systems-oriented design Systems-oriented design builds on systems theory and systems thinking in order to develop practices for addressing complexity in design. Particularly influential is soft systems methodology (SSM), acknowledging conflicting worldviews and people's purposeful actions, and a systems view on creativity. However, S.O.D. is inspired by critical systems thinking and approaches systems theories in an eclectic way transforming the thoughts of the different theories to fit the design process. The design disciplines build on their own traditions and have a certain way of working with problems, often referred to as "design thinking" or "the design way". Design thinking is a creative process based around the "building up" of ideas. This style of thinking is one of the advantages of the designer and is the reason why simply employing one of the existing systems approach into design, like for example systems engineering, is not found sufficient by the advocates of S.O.D.
Linux on embedded systems The advantages of embedded Linux over proprietary embedded operating systems include multiple suppliers for software, development and support; no royalties or licensing fees; a stable kernel; the ability to read, modify and redistribute the source code. The technical disadvantages include a comparatively large memory footprint (kernel and root filesystem); complexities of user mode and kernel mode memory access, and a complex device drivers framework.
Embedded operating system An embedded operating system is an operating system for embedded computer systems. These operating systems are designed to be compact, efficient at resource usage, and reliable, forsaking many functions that non-embedded computer operating systems provide, and which may not be used by the specialized applications they run. They are frequently also referred to as real-time operating systems, and the term "RTOS" is often used as a synonym for "embedded operating system".
Embedded system Embedded systems are used in transportation, fire safety, safety and security, medical applications and life critical systems, as these systems can be isolated from hacking and thus, be more reliable. For fire safety, the systems can be designed to have greater ability to handle higher temperatures and continue to operate. In dealing with security, the embedded systems can be self-sufficient and be able to deal with cut electrical and communication systems.