
Explore FPGA fundamentals and Verilog development using affordable Intel and Xilinx boards, covering HDL constructs, test benches, testing automation, and practical hands-on design workflows.
Explore the basics of what an FPGA is, including its logic elements and interconnection, and how hardware description languages configure it via downloaded configuration data from Intel and Xilinx ecosystems.
Discover how to choose an FPGA by evaluating cost, block and distributed resources, memory options external versus internal, and application needs across vendors like Intel and Xilinx.
Decode FPGA part numbers and pin numbers, identifying package types, logic elements, memory options, temperatures, and footprint patterns for Maxton and Cyclone devices.
Select a development board based on budget and required interfaces, FPGA size, and onboard resources, then verify onboard usb blaster availability versus external programming options.
Explore the max1000 board by Grens Electronics, a USB-powered FPGA platform with Maxton nonvolatile FPGA, oscillator, 64 megabit flash, Arduino and general I/O headers, two buttons, and a three-axis accelerometer.
Explore the De0-Nano board with a Cyclone IV FPGA, onboard flash memory for configuration, USB programming, push buttons, and analog or digital converters, along with power considerations for heavier boards.
Explore how I/O pins are organized into banks with eye openers configurable as input, output, or both. See how Cyclone Four and Maxton devices label and use these pins.
Feed clocks through dedicated clock pins or configurable io across fpgas, and understand how a clock distribution network and clock tree drive the fabric.
Explore how JTAG interface pins enable testing and programming of FPGAs, detailing the four core signals, occasional fifth and sixth lines, and the necessity to connect reset and ground.
Learn how power pins and pin banks govern FPGA power delivery, aligning core and I/O voltages with Vccio and Vccint, and how banks are wired to drive powers.
Install Quartus Prime Lite and ModelSim to write, simulate, synthesize, and generate programming files for FPGA programming from a single free Intel package.
Install the USB Blaster driver for the DE0-Nano board on your PC, use Device Manager to browse drivers, and complete installation to ready the device for use.
Install the usb blaster driver for the max 1000 development board by downloading from the linked electronics site and running the installer, then resolve conflicts when using multiple boards.
Explore hardware description languages and how they describe complex digital circuits, using modules, inputs and outputs, simulated before synthesis to netlists that configure FPGA resources.
Explore Verilog fundamentals: module structure, inputs and outputs, wires and registers, vector data types, base notations, and syntax rules for comments and semicolons.
Explain the difference between logical equality (==) and assignment (=) in Verilog, and show how initial and always blocks start at time zero, execute sequentially, with begin-end grouping.
Explore blocking and non-blocking assignments in verilog, and see how posedge clock edges register B, with A and B updating to influence C.
practice blocking and continuous assignments, and understand left-hand versus right-hand sides in Verilog. relate if statements and equality checks, including x values, to C and C++ constructs.
Explore Verilog fundamentals by configuring time units and one nanosecond delays, using assign and initial blocks, and applying always blocks with event-driven triggers while avoiding unsafe event identifiers.
Verilog fundamentals 6 introduces arithmetic, bitwise, reduction, shift, and relational operators; explains vectors vs scalars, x/z states, and concepts like ternary, concatenation, replication, and operator precedence.
Implement a D flip-flop in Verilog that samples the D input on the positive clock edge and outputs it on Q, using a reg and non-blocking assignment for simulation timing.
Learn how to model and simulate a d flip-flop using ModelSim, create a project and file, and compile the design to verify correct functionality.
Learn to design and simulate test benches in Verilog, including system modules and test bench modules, to verify a device under test before FPGA deployment.
Verify a D flip-flop in ModelSim using a test bench, compile the design, run an RTL simulation, and observe the clock-edge triggered Q output in waveforms.
Learn how to set up a new Quartus II Lite project, select the target FPGA device, add files, run synthesis and timing analysis, apply SDC constraints, and generate programming files.
Map a d-flip flop design to the Max1000 fpga, handling an active-low button, clock, and reset. Program the Max1000 fpga via internal configuration flash with the generated bitstream.
Implement a d-flip-flop on the de0-nano using a cyclone FPGA, configure external flash memory, generate and load the programming file, and verify the flip-flop with a button-driven LED output.
Explore six basic digital logic operations and two Verilog design methodologies, comparing always blocks with continuous assignments for and, or, and not operations used in FPGA designs.
Learn to design multi-gate Verilog systems from basic functionalities using assign statements and always blocks, with two- and three-gate configurations and inverter usage.
Demonstrate how multi-gate designs build a full adder and a four-bit adder in verilog by instantiating four single-bit adders, wiring carry in and carry out across stages.
Discover how to perform gate-level simulations and post-fitting using Quartus and ModelSim, including testbench setup, force fitting, and functional versus timing simulations for FPGA designs.
the lecture explains how multiplexers route multiple inputs to a single output using a selector, and compares verilog methods: an always block with a registered output and a continuous assign.
Explore the simple Mac block, the core of DSP processing, where input samples are multiplied and accumulated to form outputs. See how reset, clock, and registers manage the multiply-accumulate flow.
Follow a mac testing workflow in Verilog, instantiating a mac block in a test bench, driving reset and inputs, and observing clocked accumulation results through a structured simulation.
Design a Verilog counter that counts events on clock edges, handles overflow with a reset, and uses a 16-bit counter and an internal register to observe at megahertz speeds.
Learn to build a Verilog counter in a new project, set up a test bench, and verify its behavior with a one-second delay, including timescale handling and radix display.
Program a verilog counter on the de0 nano FPGA that initializes to zero and counts from zero to fifteen at a 50 mhz clock, then flash the Cyclone for E.
Program a four-bit counter on the MAX1000 FPGA with a 12 MHz clock, configure and compile, and load the SRF file while observing the lower four bits doubling.
Learn how to use the Atom editor for Verilog development, including multi-project work, syntax highlighting, multi-cursor editing, line numbers, and quick commenting with packages.
The lecture compares two methods to delay a signal by two clock cycles using registers: two always blocks or one. It covers reset and non-blocking assignments and emphasizes style choice.
Explore how encoders convert decimal digits into binary using four-bit outputs, and how two-digit decimals become eight-bit representations via concatenation and modulus 10; note the 4-bit input limit of 0–15.
Learn to design a scalable RAM in Verilog using parameterized widths and depths, enabling easy changes to address and data sizes without rewriting the system, with read and write controls.
Test RAM designs in verilog with a bench that drives input data and addresses, reveals write/read timing, and resolves address wrap at 64 in simple and parametrized RAM.
Explore how case constructs drive state machines in digital systems, providing multiplex-like outputs via a case statement using inputs A and B.
Implement and verify verilog modules using Intel and Xilinx FPGAs with a case example and test bench tb. Explore A and B inputs, addition, multiplication, and output behavior across states.
Understand the difference between synthesizable and non-synthesizable Verilog, and how synthesizers and FPGA tools handle initial blocks, delays, and test benches to produce hardware logic.
Introduce the Tcl/dcl command language for automating Verilog design tools, and show compiling modules, running simulations, and basic command syntax with line-by-line execution.
Automate verification with TCL: method 1, by building a test script that sets up a project, compiles design files, runs simulation, and captures wave signals for reusable testing.
Explore verification automation using TCL, Method 2, with a project-based script that compiles Verilog files and preserves waveform state across runs, warning when signals are missing.
Explore integrating premade IP cores and macro-based components using Qsys, IP Catalog, and Platform Designer, including licensing considerations, and assemble a system with processors, DSP blocks, and memory interfaces.
Learn to use the IP catalog to build a library of independent Verilog modules, including multipliers and muxes, for Intel and Xilinx FPGA projects.
Explore how to use FPGA block resources and IP cores via the IP catalog, including embedded multipliers on max 10, and run test benches to validate integrated cores.
Explore Quartus primitives and standard Verilog primitives, and learn to instantiate modules directly without defining them, using buffers, clocked flip-flops, and control signals.
Explore design constraint files (sdc) and their role in timing optimization for FPGA projects; sdc files are text-based and follow the Synopsys standard.
Write sdc files and include them in a Quartus project to constrain timing. Use the timing analyzer to optimize frequency, including PLL-generated doubled clocks, while noting resource trade-offs.
Understand how state machines change behavior across clock cycles or in response to inputs, using a clocked example and a state diagram to illustrate transitions, outputs, resets, and sequential processing.
Introduce a free-running finite state machine that cycles through states, uses clock division via a counter, and demonstrates reset and continuous operation.
Explore coding a free-running finite state machine in Verilog for Intel and Xilinx FPGAs, using a case-based state machine with seven states, a state register, clock, and reset.
Demonstrates testbench testing with a freerunning clock, reset sequencing, and positive clock edges, showing state transitions to S1 and output changes.
Demonstrates frfsm board testing on the max 1000 kit by dividing a 12 mhz clock to create observable state transitions, and exporting the u.s.f file for programming via hardware tools.
Learn how event-driven finite state machines respond to inputs, capture changes on clock edges, and manage timing and glitches with proper sensitivity lists and clock speeds.
Examine event driven finite state machines in Verilog and test on a board by observing clock behavior. Observe how button inputs drive state transitions and cycle through states.
Learn how a multi event driven state machine controls functional units through a remote control office, using start signals, unit feedback, and a reset to shut all units on fault.
Design and analyze a multi-event driven state machine in Verilog, implementing inputs, outputs, reset, start, fault handling, and a counter with clock-cycle delays.
Develop dynamic testbenches in Verilog for Intel and Xilinx FPGA designs by modeling a bench, driving inputs, and simulating faults with procedural blocks and reset sequencing.
Master UART theory and practical interfacing, studying universal asynchronous transmitter and receiver, asynchronous transmission, frame structure with start bits, 7–8 data bits, parity, stop bits, and ground between devices.
Design a uart transmitter using a transmission buffer and a baud rate generator to send an ascii character, starting with a start bit, then data bits, and a stop bit.
Demonstrate verification on an FPGA board by wiring transmitter and receiver, loading the design with a programmer, and testing USB/UART communication with a computer to send and receive characters.
Explore uart rx coding with a receiver that uses data and clock inputs, buffers bits MSB to LSB, applies even parity, and drives a three-state machine to indicate valid data.
Verify the on-board design by running the provided transmitter and receiver test benches, replace the clock with a single clock edge, and program the fpga to test data transmission.
Combine transmitter and receiver codes to build a full‑duplex transmitter–receiver system in an FPGA project, handling top entity naming, port wiring, and tool assignments.
Shape your career after Verilog and fpga learning by pursuing roles like fpga designer or digital design engineer, exploring startups or research positions, and using Glassdoor and LinkedIn to connect.
Explore Xilinx FPGAs and the Xilinx development toolchain, compare with Intel FPGA flows, and prepare for interviews using examples on the Artix-7 board with Vivado software.
Decode Xilinx seven-series part numbers and architecture, including CLB slices, L and M configurations, and distributed versus block RAM. Learn how packaging and grading influence FPGA selection and deployment.
Learn how to work with the Xilinx Arty S7-25 board by Digilent, focusing on on-board programming, USB and JetConnect options, power and io features, Arduino compatibility, switches and LEDs.
Download and install the Vivado design suite 2019 for Windows, with auto installed board drivers, optional MATLAB components, and follow prompts until the installation completes and the initial window opens.
Set up and simulate a counter design in Xilinx Vivado, creating a new Verilog project, adding design sources and test bench, and running synthesis and functional simulation.
Learn to implement a Verilog counter on an Arty S7-25 by using a counter design and test bench, performing synthesis, pin constraints, and flash programming.
Examine power types for FPGAs, including internal and auxiliary supplies, and how banks provide specific voltages, especially 3.3 V I/O, for correct FPGA operation.
Learn to adapt a single Verilog state machine design for an Arty s7-25 board by synthesizing, constraining pins, and implementing for Xilinx hardware while preserving a free-running clock and outputs.
Generate and integrate Spartan-7 block RAM from the IP catalog, simulate eight eight-bit words across eight addresses, verify with a test bench, and compare block RAM with distributed RAM.
Learn verilog tasks and systemverilog assertions to create modular test benches, reuse task code across projects, and perform verification with time delays, blocking and non-blocking assignments, while understanding synthesis implications.
Practice tasks and assertions in vivado using verilog and system verilog models and a test bench, including helper methods and drivers to verify add and subtract operations.
Explore register based control systems in verilog by using address, data, and valid signals to write to registers and drive outputs, including one heart addressing and a practical test bench.
This course is designed to make students confident developers of Digital Systems using Verilog and AMD and Intel FPGAs (2 different boards and FPGAs). Every aspect is discussed from different angles so that the whole concept becomes clearer. This course uses two cheap Intel FPGA development boards and a Digilent(AMD) board along with freely available software(Quartus Lite, ModelSim, Vivado). Purchasing of boards is absolutely optional. This course can be done without development boards.
Additionally, FPGAs and toolchains from other vendors are also introduced briefly.
This course takes you through:
Design using Verilog HDL (in the simplest possible ways)
Tool setup, which is the hardest part.
Tool automation introduces the techniques that I learned over the years.
Different FPGA architectures
Managerial side of choosing parts for development
Simulation makes sure whether the design is correctly made
And above all, I share the experience that I gained over the years.
As a word of caution: I have not updated this course for a long time. The Toolchains of both Xilinx(now AMD) and Quartus have evolved a bit. Please try to download the tools and if you don't understand the tool setup ask for your money asap without wasting time. I teach as a hobby, and teaching is one of my passions. Feel free to request, upgrades or any help. I am here for you.
Enjoy and rock and roll in your career.