
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.
Explore how demultiplexers use selection lines and a default zero to route inputs, and show how a d-multiplexer can implement many functions with or gates.
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 adders with gates by building half adders and full adders, illustrating xor sum and and carry functions, then implementing a ripple carry adder in Verilog.
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.
Set up your FPGA playground by choosing Verilog, selecting tools and simulators (commercial or free), open an account if needed, save the project, and share the link with peers.
The code is available for download for you to follow along if you want.
Explore Verilog system tasks such as finish and display to control simulation end points, print values to the console, and inspect signals with timing diagrams and a logic analyzer view.
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.
Download and install the Intel Quartus light edition (free, no license) to simulate with model sim, select cyclone 5 devices, and prepare for synthesis and board deployment.
Create a new ModelSim project, add a test bench and a descriptive module, save both files, and run compile all to produce two compiles with zero errors.
Launch the simulator, select signals like A and B, and run the test bench to view waveforms in the waveform viewer, with console outputs and run-length control.
Master timescales and precision in Verilog simulations by adjusting time scale and nanosecond steps, ending and running simulations, compiling files, and analyzing waveforms and xor gate behavior.
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.
Learn to simulate with multiple source files by configuring compile and run options, listing each source file, and handling unknown modules during run.
Code Available for Download!
Simulate a Verilog test bench in ModelSim, observe multi-bit signals in waves, compare binary and decimal views, and use bitwise extension to debug unsigned and signed values.
Explore a Verilog up/down counter that uses an updown input (1 for up, 0 for down), responds to falling clock input edges, and provides an 8-bit count with minimal inputs.
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.