
Learn the logistics of the course.
Meet the instructor. See the big picture.
Learn about the FPGA design process and why it's useful.
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.
Understand why CPUs are digital by examining the ALU, registers, and multiplexers, with historic microprocessors like the Zilog Ziad and Intel’s first processor.
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.
Demonstrate how arithmetic can be implemented with logic devices by building binary addition from half adders, full adders, and a ripple adder, with decimal and binary examples.
Explore sequential logic as the time-aware counterpart to combinational systems, and learn how flip-flops and synchronous edge-triggered devices form state machines.
Explore tri-state buffers and their high-impedance state, enabling safe bus architectures by allowing multiple devices to share a line without short circuits.
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.
Explore electronic design automation software suites that automate hardware design, review edk tools, and preview ideate playground and model sim for simulating modules.
Explore the typical steps in an EDA suite, from schematic capture and simulation and analysis to PCB design, software development, and FPGA design, emphasizing digital simulation and verification.
The code is available for download for you to follow along if you want.
Run a Verilog simulation by delaying display statements to respect gate propagation, verify xor with unknown x, and use dump file and dump vars for IP Wave logic analyzer view.
Explore simulating with EPWave, inspect signals and the xor result, and optimize waveform viewing by resizing the window, using a separate waveform viewer, and adjusting the time scale precision.
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!
Examine nonblocking results in Verilog by tracing clock edges and updates of X, Y, and Z, with hex and decimal conversions such as 10×10 = 100.
Explore a modular 4-bit ripple carry adder implemented in verilog, using three full adders and a half adder to produce a 5-bit sum c from 4-bit inputs a and b.
Download the code for your own simulations.
Code Available for Download!
Source code available for download :)
Simulate a counter driven by an updown control, counting on the clock's falling edge with hexadecimal values from 0 to f. Behavioral description lets the compiler implement it without micromanagement.
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.