We may earn an affiliate commission when you visit our partners.
Course image
Timothy Scherr

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.

Read more

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.

Enroll now

What's inside

Syllabus

What's this programmable logic stuff anyway? History and Architecture
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.
Read more
FPGA Design Tool Flow; An Example Design
In Module 2 you will install and use sophisticated FPGA design tools to create an example design. You will learn the steps in the standard FPGA design flow, how to use Intel Altera’s Quartus Prime Development Suite to create a pipelined multiplier, and how to verify the integrity of the design using the RTL Viewer and by simulation using ModelSim. Using the TimeQuest timing analyzer, you will analyze the timing of your design to achieve timing closure.
FPGA Architectures: SRAM, FLASH, and Anti-fuse
FPGAs are programmable, and the program resides in a memory which determines how the logic and routing in the device is configured. In Module 3 you will learn the pros and cons of FLASH-based, SRAM-based, and Anti-Fuse based FPGAs. A survey of modern FPGA architectures will give you the tools to determine which type of FPGA is the best fit for a design. Architectures will be explored from the basic core logic cell up to consideration of large Intellectual Property (IP) blocks that are available on many FPGAs.
Programmable logic design using schematic entry design tools
In module 4 you will extend and enhance your design from module 2, completing the design by adding IP blocks, implementing pin assignments and creating a programming file for the FPGA. One outcome will be improved design productivity, by use of design techniques like pipelining, and by the use of system design tools like Qsys, the system design tool in Quartus Prime. You will complete a Qsys system design by creating a NIOS II softcore processor design, which quickly gives you the powerful ability to customize a processor to meet your specific needs.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores the leading technologies FPGA and VHDL, relevant to industry standards
Provides a grounding in FPGA design and practical skills for embedded systems, meeting industry requirements
Discusses the historical development of programmable logic devices, providing historical context for understanding the evolution of FPGA technology
Offers hands-on experience with industry-standard FPGA design tools, preparing learners for practical applications
Covers various FPGA architectures, including SRAM, FLASH, and Anti-fuse, providing a comprehensive understanding of different technologies used in industry

Save this course

Save Introduction to FPGA Design for Embedded Systems to your list so you can find it easily later:
Save

Reviews summary

Introduction to fpga design for embedded systems

Learners say this course is largely positive with well received reviews mentioning its engaging assignments and clear lectures. Students appreciate the step-by-step approach that takes them through the core concepts of FPGA design using Quartus Prime software. While the course is considered a good introduction for beginners, some experienced learners find it too basic. There have been concerns raised about outdated course materials, particularly with software versions and missing files. Despite these issues, the course provides a solid foundation for those who want to start their FPGA journey.
Beginners with no prior FPGA knowledge will find this course accessible and a valuable introduction.
"best course of fpga designing in new comers platform and point to point clear how to compile, simulation and time quest time analyze."
"I was actually pleasantly surprised... I am a chip designer and embedded systems software developer... this class gave us the basics and was a survey of FPGA design methodologies and FPGA architecture."
"The "Introduction to FPGA Design for Embedded Systems" course surpassed my expectations."
The lectures are well-structured and easy to follow, making the learning process enjoyable.
"well-structured, challenging and fun-to-learn course"
"excellent course. I didnt know anything about FPGAs before."
"The course covers the FPGA design for embedded systems in detailed manner."
This course offers practical exercises that help learners apply the concepts they learn in the videos.
"practical and very thoughtfully design"
"You got a lot of stuff thrown at you in a short period of time"
"lots of stuff thrown at you in a short period of time"
For those with some experience in FPGA design, the course may be too basic and not provide enough challenge.
"not very good for beginners. First week was good, from second week on shows a lot of details without explaining the motivation behind them which makes the course really boring.Dropped the course."
"This is an extremely good course and I learned a lot."
"I think my biggest complaint with this course is need for memorization during the exam. There is a lot of dense information in this course and you will be expected to retain a majority of it to do well on the final."
The course materials, including software versions and files, are outdated, which can cause some frustration.
"This class feels a bit dated in that it doesn't mention Xilinx Zynq."
"project files are several years old, using old versions of the software that are often unavailable."
"The newest version of Quartus doesn’t have Modelsim"

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 Introduction to FPGA Design for Embedded Systems with these activities:
Read through the syllabus
Get familiar with the course topics, schedule, and expectations to start the course with a clear understanding of the lay of the land
Show steps
  • Review syllabus to get a general overview of course content
  • Identify areas where you may need to strengthen your background
  • Make a plan to fill in any knowledge gaps
Review number systems
Build a solid foundation in the basics by reviewing number systems, including an overview of binary, octal, decimal, and hexadecimal systems.
Show steps
  • Understand the concept of number systems and their bases
  • Convert numbers between different bases
  • Do practice problems to strengthen your understanding
Watch video tutorials on FPGA architecture
Deepen your understanding of FPGAs by watching video tutorials that provide visual explanations of their architecture and design principles.
Show steps
  • Find video tutorials on FPGA architecture from reputable sources
  • Watch the tutorials and take notes on key concepts
  • Pause the videos and rewind as needed to grasp the content thoroughly
Five other activities
Expand to see all activities and additional details
Show all eight activities
Solve practice problems on logic gates
Improve your problem-solving skills and solidify your understanding of logic gates by working through practice problems.
Browse courses on Logic Gates
Show steps
  • Find practice problems on logic gates from textbooks or online resources
  • Attempt to solve the problems on your own
  • Check your answers and identify areas where you need improvement
Build a simple combinational logic circuit in an FPGA
Apply your knowledge of FPGAs and logic gates by designing and implementing a simple combinational logic circuit.
Show steps
  • Plan the design of the circuit, including the inputs, outputs, and logic gates needed
  • Write the code to implement the circuit in an FPGA
  • Test and debug the circuit using simulation tools
Document your project with a written report
Solidify your understanding of the project and enhance your communication skills by writing a detailed report that documents your design, implementation, and testing process.
Show steps
  • Write a clear and concise introduction that provides an overview of the project
  • Describe the design of the logic circuit, including the inputs, outputs, and logic gates used
  • Explain the implementation of the circuit in the FPGA
Attend an FPGA industry meet up
Expand your knowledge and professional network by attending industry meet ups where you can connect with other FPGA enthusiasts and professionals.
Show steps
  • Find FPGA industry meet ups in your area
  • Prepare an elevator pitch to introduce yourself and your interests
  • Attend the meet up and actively engage in conversations
Contribute to open-source FPGA projects
Enhance your FPGAs skills and get involved in the open-source community by actively contributing to repositories.
Browse courses on Open Source Projects
Show steps
  • Find FPGA open-source repositories on platforms like GitHub
  • Identify issues or areas where you can contribute
  • Submit your contributions, including code changes or documentation improvements

Career center

Learners who complete Introduction to FPGA Design for Embedded Systems will develop knowledge and skills that may be useful to these careers:
FPGA Design Engineer
An FPGA Design Engineer designs and develops Field Programmable Gate Arrays (FPGAs) for use in electronic systems. These devices are used in a wide variety of applications, including telecommunications, networking, and embedded systems. This course provides a 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.
Computer Hardware Engineer
A Computer Hardware Engineer designs and develops computer hardware, including CPUs, motherboards, and graphics cards. These devices are used in a wide variety of applications, including personal computers, servers, and embedded systems. This course provides a 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.
Embedded Systems Engineer
An Embedded Systems Engineer designs and develops embedded systems, which are computer systems that are designed to be part of a larger system. These systems are used in a wide variety of applications, including consumer electronics, industrial automation, and medical devices. This course provides a 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.
Electronics Engineer
An Electronics Engineer designs and develops electronic circuits and systems. These devices are used in a wide variety of applications, including consumer electronics, industrial automation, and medical devices. This course provides a 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.
Electrical Engineer
An Electrical Engineer designs and develops electrical systems, including power generation, transmission, and distribution systems. These systems are used in a wide variety of applications, including industrial automation, transportation, and healthcare. This course provides a 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.
Software Engineer
A Software Engineer designs and develops software applications. These applications are used in a wide variety of industries, including finance, healthcare, and manufacturing. This course provides a 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.
Computer Scientist
A Computer Scientist designs and develops computer systems and software. This course provides a 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.
Data Scientist
A Data Scientist analyzes data to extract insights and trends. This course provides a 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.
Systems Engineer
A Systems Engineer designs and develops complex systems, including computer systems, communication systems, and transportation systems. This course provides a 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.
Technical Writer
A Technical Writer creates documentation for technical products, such as software, hardware, and medical devices. This course provides a 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.
Project Manager
A Project Manager plans and executes projects, including software development projects, hardware development projects, and construction projects. This course may be useful for Project Managers who are working on projects that involve the design and development of embedded systems.
Business Analyst
A Business Analyst analyzes business processes and systems to identify opportunities for improvement. This course may be useful for Business Analysts who are working on projects that involve the design and development of embedded systems.
Human Resources Manager
A Human Resources Manager plans and executes human resources programs to attract, develop, and retain employees. This course may be useful for Human Resources Managers who are working on human resources programs for companies that design and develop embedded systems.
Marketing Manager
A Marketing Manager plans and executes marketing campaigns to promote products and services. This course may be useful for Marketing Managers who are working on marketing campaigns for embedded systems products and services.
Sales Manager
A Sales Manager plans and executes sales campaigns to sell products and services. This course may be useful for Sales Managers who are working on sales campaigns for embedded systems products and services.

Reading list

We've selected six 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 Introduction to FPGA Design for Embedded Systems.
Common introductory text on the topic of FPGA design and can be used to supplement the course. It is written at a beginner level, starting with an introduction to general digital design and Verilog specifically. It does not require any previous FPGA experience.
Great choice for learning VHDL, the hardware description language used in the course. It covers the basics of VHDL and provides practical examples for FPGA implementation.
Provides a comprehensive introduction to the Verilog HDL, the industry-standard hardware description language for describing digital circuits at the register transfer level (RTL). It can be used to supplement the course and provide a reference for Verilog. It is written at a beginner level with many clearly written examples.
This classic textbook is an excellent resource for understanding the underlying principles of digital design. While it does not focus on FPGA design, it provides a strong foundation in digital design that is necessary for FPGA implementation.
Covers advanced FPGA design techniques, with a focus on performance optimization. It explores topics like pipelining, parallelism, and memory management.
This advanced textbook covers advanced FPGA design techniques, It is written for experienced FPGA designers and provides deep technical detail of how FPGA architectures operate at the hardware level

Share

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

Similar courses

Here are nine courses similar to Introduction to FPGA Design for Embedded Systems.
FPGA computing systems: Background knowledge and...
Most relevant
FPGA Architecture Based System for Industrial Application
Most relevant
FPGA Development in VHDL: Beyond the Basics
Most relevant
FPGA Design and VHDL
Most relevant
FPGA computing systems: Partial Dynamic Reconfiguration
Most relevant
Getting Started with FPGA Programming with VHDL
Most relevant
Developing FPGA-accelerated cloud applications with...
Real-Time Mission-Critical Systems Design
Foundations for Big Data Analysis with SQL
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