FPGA Design the complete guide

  • Course level: Beginner


The objective of this course is to acquire proficiency with Field Programmable Gate Arrays FPGA Design for the purpose of creating prototypes or products for a variety of applications. Although FPGA design can be a complex topic, we will introduce it so that, with a little bit of effort, the basic concepts will be easily learned, while also providing a challenge for the more experienced designer. We will explore the complexities, capabilities, and trends of Field Programmable Gate Arrays (FPGA) and Complex Programmable Logic Devices (CPLD). Conception, design, implementation, and debugging skills will be practiced. We will learn specifics around embedded IP and processor cores, including tradeoffs between implementing versus acquiring IP. Projects will involve the latest software and FPGA development tools and hardware platforms to help develop a broad perspective of the capabilities of various Programmable SoC solutions. Topics include:

  1. Verilog, VHDL, and RTL design for FPGA and CPLD architectures
  2. FPGA development tools flow: specify, synthesize, simulate, compile, program, and debug
  3. Configurable embedded processors and embedded software
  4. Use of soft-core and hard-core processors and OS options
  5. FPGA System engineering, software-hardware integration, and testing
  6. IP development and incorporating 3rd-party IP


Who this course is for:

  1. Anyone who wants to learn FPGA design.
  2. Arduino Makers who want to take the next step into embedded systems.
  3. Hardware engineers who would like to learn about the exciting field of FPGA design
  4. This course is not for experienced embedded engineers specialized in FPGAs.

What Will I Learn?

  • Create in the FPGA a working system on a chip design with Nios II soft processor, RAM and FLASH memory, and several peripherals.
  • Understand and practice all aspects of FPGA development, including conception, design, implementation, and debugging.
  • Understand the rationale for each phase of the hardware development flow, including fitting, timing constraints, simulation, and programming.
  • Apply hierarchical design methods to create bigger designs in VHDL or Verilog

Topics for this course

36 Lessons

FPGA Design for Embedded Systems

Course OverviewLesson00:00:00
Programmable logic and FPGA design00:00:00
A Brief History of Programmable Logic00:00:00
CPLD Architecture00:00:00
LUTs and FPGA Architecture00:00:00
LUTs for Logic Design00:00:00
Designing Adders00:00:00
Designing Multipliers00:00:00
FPGA Design Flow00:00:00
Downloading Quartus Prime00:00:00
Installing Quartus Prime00:00:00
Introducing Quartus Prime00:00:00
Create a design in Quartus Prime00:00:00
Compile a Design00:00:00
View the RTL00:00:00
Timing Analysis with Time Quest I00:00:00
Timing Analysis with Time Quest II00:00:00
Simulate a design with ModelSim00:00:00
Many types of FPGAs00:00:00
Xilinx CPLD Architecture00:00:00
Xilinx Small FPGAs00:00:00
Xilinx Large FPGAs00:00:00
Altera CPLDs and Small FPGAs00:00:00
Altera Large FPGAs00:00:00
Microsemi Single chip FPGA solutions00:00:00
Lattice Single Chip FPGA solutions00:00:00
FPGA Design Expertise00:00:00
Advanced Schematic Entry for FPGA Design Drawing and Hierarchy00:00:00
Improving Productivity with IP Blocks00:00:00
Improving Timing with Pipelining00:00:00
FPGA IO Getting In and Getting Out00:00:00
Pin Assignments Making them Spot On!00:00:00
Programming the FPGA00:00:00
Becoming one with Q Qsys System Design00:00:00
Becoming one with Q Part II Qsys System Design Finishing Touches00:00:00
Becoming one with Q Part III Qsys System Design Finishing Touches00:00:00
FPGA Design
35 £

Enrolment validity: Lifetime


  • Basic programming knowledge sometimes helps, but the case of no programming experience can be an advantage since you will learn something other than traditional sequential programming.
  • Although a refresher is provided in this course, some basic digital electronics knowledge always helps. Not necessarily advanced stuff, just the basics: Logic gates, maybe flip flops, counters, tristate buffers, etc.
  • Ultimately, an FPGA development board will come in handy to build and test your projects. We'll use it starting at the second course in the series.