We may earn an affiliate commission when you visit our partners.
Eduardo Corpeño and Marissa Siliezar

Do you feel you've learned enough about microcontrollers? Do you want to learn more embedded application design techniques? How about a technique that will allow you to design high-performance systems the way professional equipment designers do?

If you're still interested, this curriculum is for you. The FPGA Embedded Design series will teach you the exquisite art of FPGA design. 

So what is an FPGA anyway?

Before moving on, let me tell you that an FPGA is not a microcontroller. It's not a computer. Well, at least not if you don't want it to be a microcontroller or computer.

Read more

Do you feel you've learned enough about microcontrollers? Do you want to learn more embedded application design techniques? How about a technique that will allow you to design high-performance systems the way professional equipment designers do?

If you're still interested, this curriculum is for you. The FPGA Embedded Design series will teach you the exquisite art of FPGA design. 

So what is an FPGA anyway?

Before moving on, let me tell you that an FPGA is not a microcontroller. It's not a computer. Well, at least not if you don't want it to be a microcontroller or computer.

The simplest explanation of an FPGA I've found is that it's a shape shifter. It's an integrated circuit that will behave as the logic circuit you'd like, and the way of letting it know the desired behavior is, yes, you guessed it, through programming. 

But you will not do this with a Programming Language, but with a Hardware Description Language.  

In this course, you'll learn Verilog, which is one of the most widely used Hardware Description Languages (along with VHDL). You'll learn the concurrent paradigm in the Verilog code and how to design digital systems with this powerful language. You'll also learn that there are many purposes of an HDL: System design, simulation, implementation in either a traditional chip, or the popular FPGA alternative.

Don't let this opportunity pass. Take the first step into the other side of embedded systems: FPGA Embedded Design.

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Design hardware behavior with the verilog hardware description language
  • Simulate verilog modules.
  • The curriculum will take you by the hand through learning verilog.
  • In the series, you'll learn how to simulate your designs, how to make them real in an fpga, and finally how to design and use your own soft processor
  • This first course is about the verilog hardware description language.
  • This is not a system verilog course. however, learning verilog is a starting point if you want to learn system verilog (similar to learning c prior to c++).

Syllabus

Let's get the objectives and content clear!

Learn the logistics of the course.

Meet the instructor. See the big picture.

Learn about the FPGA design process and why it's useful.

Read more

Let's set a goal for this whole body of knowledge. Let's think big: How about designing your own microprocessor?

Let's review the typical blocks inside a CPU and how they can all be designed, simulated and implemented with a Hardware Description Language.

In this course we'll perform a lot of simulations, so it's important that you choose your development platform, which typically consists of hardware and software. 

Get to know HDLs and their use.

Learn how concurrent design of hardware differs from traditional sequential design of software.

Meet the two industry standard HDLs out there.

There are many other HDLs out there, but you'll be fine with Verilog and maybe VHDL.

Let's start our refresher on digital circuit design!

Logic gates are the basic foundation element of digital design, and correspond to logical operations such as AND, OR and XOR.

Boolean algebra is a very basic tool in computer science for pretty much everything. Let's see some important details.

Multiplexers and demultiplexers are two of the most popular building blocks of combinatorial logic. Let's learn about their use.

Learn about concurrent logic in Verilog modules.

It's very important that you understand how the concurrent model works.

Learn about descriptive modules and test bench modules.

Learn about the elements in a descriptive module.

Learn about the organization of a test bench module and how to use one.

The code is available for download for you to follow along if you want.

Learn about the net elements of Verilog.

Learn the syntax to represent Logical Values in Verilog.

Learn the syntax to represent integers in Verilog.

Learn about these primitives of Verilog.

Learn an easier way to enter your circuit behavior in Verilog.

Learn your options when it comes to performing different assignments in Verilog.

Learn one way to implement multiplexers and demultiplexers in Verilog.

Learn how to make Tri-State Buffers in Verilog.

Let's see an implementation of Tri-State Buffers in Verilog.

Learn how to implement state machines in Verilog.

Go ahead and download the code to try it yourself!

Download the code for your own simulations.

Code Available for Download!

Source code available for download :)

Let's take a moment to look back and think of all the things we learned in this course.

Listen to the next steps we recommend in your journey on FPGA embedded applications!

Test yourself in Verilog basic concepts.

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Verilog basics for fpga design

According to learners, this course offers a solid foundation in Verilog HDL, particularly focusing on syntax and the crucial concept of concurrent logic essential for hardware design. Many appreciate the clear explanations and practical examples provided for simulating designs. However, some find the pace challenging, especially if they lack prior experience in digital logic, despite the included refresher. Setting up the necessary EDA tools is frequently cited as a significant hurdle. While the course effectively covers simulation, some students desire more instruction or examples on implementing designs on actual FPGA hardware. Overall, it's considered a valuable first step into the world of FPGA embedded design.
Primarily covers simulation, less on actual hardware.
"The course is great for Verilog simulation, but doesn't guide you on using a real FPGA board."
"Wish there were more examples demonstrating synthesis and implementation on hardware."
"Learned a lot about writing test benches and simulation flow, which was very useful."
"I understand how to simulate designs now, but feel the gap regarding physical implementation."
Provides a strong introduction to Verilog basics.
"This course really helped me grasp the fundamental concepts of Verilog and concurrent logic."
"Gave me a good starting point for understanding Verilog syntax and structure for hardware description."
"The explanations on behavioral vs. structural Verilog were very clear and useful."
"I feel much more comfortable reading and writing basic Verilog modules after taking this."
Pace may be fast; some concepts are dense.
"For a Part 1, it moves quite quickly through complex ideas."
"Some lectures felt rushed, requiring multiple rewatches to fully grasp the material."
"The section on blocking vs. non-blocking assignments was particularly dense."
"It's challenging but rewarding if you put in the extra effort."
Struggles reported with software installation/setup.
"Setting up the recommended EDA tools was a frustrating process and took a lot of time."
"Had issues getting the simulation environment working correctly on my specific operating system."
"The instructions for tool installation could be more detailed or updated for newer versions."
"Spend a significant amount of time just trying to compile and simulate the first examples."
Assumes significant prior background in digital logic.
"Without a strong background in digital electronics, this course would be extremely difficult to follow."
"The digital logic refresher was too brief; I struggled without prior college-level digital design."
"Found myself having to study basic logic gates and state machines elsewhere to keep up."
"It helps greatly if you are already familiar with combinational and sequential circuits."

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 Embedded Design, Part 1 - Verilog with these activities:
Review Digital Logic Fundamentals
Strengthen your understanding of digital logic concepts. This will provide a solid foundation for learning Verilog and designing digital systems with FPGAs.
Browse courses on Digital Logic
Show steps
  • Review textbooks or online resources on digital logic.
  • Practice solving problems related to logic gates and Boolean algebra.
  • Familiarize yourself with combinational and sequential logic circuits.
Create a Verilog Cheat Sheet
Consolidate your knowledge of Verilog syntax and semantics. Creating a cheat sheet will help you quickly reference important concepts and improve your coding efficiency.
Show steps
  • Compile a list of essential Verilog keywords and operators.
  • Summarize the syntax for different Verilog constructs (modules, assignments, etc.).
  • Include examples of common Verilog code snippets.
  • Organize the cheat sheet for easy reference.
Read 'Digital Design and Computer Architecture' by Harris and Harris
Gain a deeper understanding of digital design principles. This book provides a solid foundation for designing complex digital systems using Verilog.
Show steps
  • Read the chapters related to combinational and sequential logic.
  • Work through the examples and exercises in the book.
  • Relate the concepts learned to Verilog code examples.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement Basic Logic Circuits in Verilog
Reinforce your Verilog coding skills. This activity involves implementing basic logic circuits, such as adders, multiplexers, and flip-flops, in Verilog.
Show steps
  • Write Verilog code for basic logic gates (AND, OR, XOR, NOT).
  • Implement a half-adder and a full-adder in Verilog.
  • Design a 4-to-1 multiplexer using Verilog.
  • Implement a D flip-flop and a T flip-flop in Verilog.
Design a Simple Finite State Machine (FSM) in Verilog
Apply your Verilog skills to design a more complex digital system. This project will help you understand how to implement sequential logic and control flow in Verilog.
Show steps
  • Define the states and transitions of the FSM.
  • Write Verilog code to implement the state transitions and output logic.
  • Simulate the FSM to verify its functionality.
  • Document your design and simulation results.
Explore 'FPGA Prototyping by Verilog Examples' by Pong P. Chu
Learn practical FPGA prototyping techniques. This book provides numerous Verilog examples that you can adapt and use in your own projects.
Show steps
  • Read the chapters related to your specific FPGA development board.
  • Try out the Verilog examples provided in the book.
  • Modify the examples to implement your own designs.
Contribute to an Open-Source Verilog Project
Gain experience working on a real-world Verilog project. Contributing to open source will expose you to different coding styles, design patterns, and collaboration workflows.
Show steps
  • Find an open-source Verilog project on platforms like GitHub.
  • Study the project's codebase and documentation.
  • Identify a bug or feature that you can contribute to.
  • Submit a pull request with your changes.

Career center

Learners who complete FPGA Embedded Design, Part 1 - Verilog will develop knowledge and skills that may be useful to these careers:
FPGA Engineer
An FPGA Engineer designs and implements digital systems using Field Programmable Gate Arrays. This role requires an understanding of hardware description languages, such as Verilog, which this course teaches. The course's focus on concurrent design and simulation directly aligns with the day-to-day work of an FPGA Engineer, who must translate system specifications into working hardware implementations. The practical exercises in the course, including designing adders and ALUs, mirror the challenges they encounter in this role. This course provides a relevant introduction to FPGA design.
Hardware Design Engineer
A Hardware Design Engineer is responsible for designing, developing, and testing electronic hardware. This course helps build a foundation in hardware description languages, specifically Verilog, enabling them to design digital circuits and systems. It explores fundamental concepts such as logic gates, multiplexers, and sequential logic. Because this role demands the ability to describe and simulate hardware behavior, this course will be very helpful, particularly in its focus on concurrent design and test benches. This course provides the fundamentals needed for understanding hardware design.
Digital Design Engineer
A Digital Design Engineer focuses on the creation of digital circuits and systems. This course helps a Digital Design Engineer by providing hands-on experience with Verilog, a widely used hardware description language crucial for digital design. The course includes practical design challenges, such as building adders and implementing state machines, which are central tasks for a Digital Design Engineer. Furthermore, the discussion of simulation tools and techniques in the course are highly relevant to developing and debugging digital circuits, making this course ideal for those interested in digital design.
Embedded Systems Engineer
An Embedded Systems Engineer works with the hardware and software that make up embedded systems. This course helps a Embedded Systems Engineer understand the hardware aspects of these systems by teaching Verilog. Through learning how to design digital circuits with Verilog, learners can better understand and implement embedded systems. The course focuses on practical skills such as simulating and designing digital systems, which are directly applicable to the design of embedded system hardware. For those looking to broaden their expertise beyond microcontrollers, this course is an excellent starting point.
Verification Engineer
A Verification Engineer ensures the correctness and functionality of hardware and software designs. This course is relevant to a Verification Engineer as it focuses on hardware design and simulation using Verilog. The skills in this course, particularly those related to creating test benches and verifying design functionality via simulation, are critical for verifying hardware systems. This course provides the necessary skills and knowledge to understand how to construct and test these systems, which is directly applicable to performing verification.
Hardware Test Engineer
A Hardware Test Engineer tests hardware to ensure it meets design specifications. This course helps a Hardware Test Engineer to understand the digital design from a hardware description language perspective. The course includes working with test benches and simulation, and helps build the skills necessary to understand how designs are implemented. The course also teaches how to use EDA tools for simulations. The simulation techniques taught in the course can provide engineers with insight into the inner workings of hardware designs, making this course valuable for those interested in hardware verification.
ASIC Design Engineer
An ASIC Design Engineer is responsible for the design and development of application specific integrated circuits. This course provides a foundation in Verilog, a hardware description language used in ASIC design. By learning to describe and simulate digital systems using Verilog, a prospective ASIC Design Engineer will be well-prepared for the design challenges of this role. The course's focus on digital design basics, logic gates, and sequential logic, are directly applicable to understanding the inner workings of ASICs. This course may be useful as a starting point in this field.
Computer Architect
A Computer Architect designs the high-level architecture of computer systems. This course helps a Computer Architect understand the hardware implementation of system components via Verilog. It discusses the design and simulation of hardware, which helps a Computer Architect understand how architectural elements are realized in hardware, and might be helpful to learners. The course provides a practical look into the hardware design process, which can be beneficial to understanding system design. This course may be useful to a computer architect.
Robotics Engineer
A Robotics Engineer designs and builds robots and robotic systems. This course helps a Robotics Engineer understand the hardware required by these systems by teaching Verilog. Robotics systems often require custom hardware, for which the use of FPGAs and hardware description languages can be useful. The course will introduce concepts of digital design and simulation that can be relevant to a Robotics Engineer. The course may be useful for those wanting to understand the hardware aspects of robotics.
Aerospace Engineer
An Aerospace Engineer designs aircraft, spacecraft, and related systems. While not all aerospace engineering roles require a deep understanding of digital hardware, some positions in areas such as embedded control systems and avionics would benefit from this course. The use of FPGAs for custom hardware in these designs makes Verilog knowledge useful for an Aerospace Engineer. The course may be useful to those specializing in embedded systems design in an aerospace context.
Electrical Engineer
An Electrical Engineer designs, develops, and tests electrical components and systems. This course is helpful for an Electrical Engineer who desires to understand digital design via hardware description languages. Although many Electrical Engineering roles do not deal with this level of hardware, others, particularly those working with embedded systems or digital signal processing, might find this course relevant. The course may be useful for electrical engineers working with digital systems.
Hardware Consultant
A Hardware Consultant advises clients on hardware design and implementation. This course may help a consultant by providing an understanding of hardware description languages with Verilog. The consultant may need to understand the hardware design process, for which this course is helpful. Because the course discusses how to simulate and build digital systems, it can be beneficial to a Hardware Consultant, and might provide a useful skill set.
Technical Writer
A Technical Writer creates documentation for technical products and services. This course may be useful to a Technical Writer who is focused on hardware design. The course introduces the Verilog language and provides a foundation in digital design. This course may provide a deeper understanding of the concepts in this field, which can be useful for documenting them. The course might be helpful to those who have an interest in writing for a hardware design audience.
Test Automation Engineer
A Test Automation Engineer develops and implements automated testing for software and hardware. This course may be helpful to a Test Automation Engineer who wishes to have a stronger understanding of hardware. Because this course provides a foundation in Verilog and simulation, this may provide insight into the verification of hardware systems. Understanding these underlying concepts can be useful to Test Automation Engineers in certain fields. This course may be helpful for test engineers wanting to expand their knowledge.
Academic Researcher
An Academic Researcher conducts research in a university or research institution. This course may be useful to an Academic Researcher, particularly one who does research in the field of computer engineering. The course teaches design and simulation of digital hardware. The skills and knowledge in this course might be useful for those performing academic research in hardware design. A master's or doctoral degree is typically necessary for this role. This course may be useful for a researcher in this field.

Reading list

We've selected two 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 Embedded Design, Part 1 - Verilog.
Provides practical examples of FPGA prototyping using Verilog. It covers various design techniques and implementation strategies for different applications. It valuable resource for learning how to translate Verilog code into real-world FPGA designs. This book adds breadth to the course by showing how to apply Verilog to FPGA development.
Provides a comprehensive overview of digital design principles and computer architecture. It covers topics such as logic gates, combinational and sequential logic, and computer arithmetic, which are essential for understanding FPGA design with Verilog. The book is commonly used as a textbook in universities and offers a good balance of theory and practical examples. It provides additional depth to the course material.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser